From 4f4a337c1b067cb604a84f73dc1fa7c3f6ea65e2 Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Tue, 7 Feb 2023 18:07:42 +0800 Subject: [PATCH 01/13] =?UTF-8?q?[dev=5Frobotaxi-d-app-module=5F2132=5F221?= =?UTF-8?q?223=5F2.13.2]=20=E4=BC=98=E5=8C=96=E9=AD=94=E6=96=B9=E7=9A=84?= =?UTF-8?q?=E6=8C=89=E9=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../function/main/MainLauncherActivity.java | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java index 012b4f7f38..57da422786 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java @@ -10,10 +10,8 @@ import android.os.Bundle; import android.os.Handler; import android.os.Process; import android.text.TextUtils; -import android.util.Log; import android.view.KeyEvent; import android.widget.FrameLayout; - import androidx.annotation.Nullable; import com.alibaba.android.arouter.launcher.ARouter; @@ -25,7 +23,6 @@ import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider; import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; -import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager; import com.mogo.eagle.core.function.hmi.R; import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils; @@ -76,6 +73,11 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis private long pressEDownTime = 0; private long pressEUpTime = 0; + private int clickTime = 300; //单击 + private int clickTimeInterval = 330; + private int longPressTime = 670; + private int longPressTimeInterval = 700; + @Override protected void onCreate(@Nullable Bundle savedInstanceState) { @@ -219,7 +221,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis if (event.getAction() == KeyEvent.ACTION_DOWN) { pressADownTime = System.currentTimeMillis(); CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent A down pressADownTime = " + pressADownTime + "---" + (pressADownTime - startPressTime) + "----isCombinationKey = " + isCombinationKey + "--pressBDownTime = " + pressBDownTime); - if ((pressADownTime - startPressTime) > 360 && (pressADownTime - startPressTime) < 1300 && pressBDownTime > 0) { + if ((pressADownTime - startPressTime) > clickTimeInterval && (pressADownTime - startPressTime) < longPressTime && pressBDownTime > 0) { if (isShowToast) { ToastUtils.showShort("方块 A 按AB组合 +1 "); } @@ -228,7 +230,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis } if (isCombinationKey != 3 && isCombinationKey != 1) { - if ((pressADownTime - startPressTime) > 1320) { + if ((pressADownTime - startPressTime) > longPressTimeInterval) { if (isShowToast) { ToastUtils.showShort("方块 长按A -2 "); } @@ -239,7 +241,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis } else if (event.getAction() == KeyEvent.ACTION_UP) { pressAUpTime = System.currentTimeMillis(); CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent A up pressAUpTime = " + pressAUpTime + "---" + (pressAUpTime - startPressTime) + "--pressBDownTime = " + pressBDownTime); - if ((pressAUpTime - startPressTime) < 350 && isCombinationKey != 3) { + if ((pressAUpTime - startPressTime) < clickTime && isCombinationKey != 3) { isCombinationKey = 1; if (isShowToast) { ToastUtils.showShort("方块 单击A -1 "); @@ -260,7 +262,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis if (event.getAction() == KeyEvent.ACTION_DOWN) { pressBDownTime = System.currentTimeMillis(); CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent B down pressBDownTime = " + pressBDownTime + "--差-" + (pressBDownTime - startPressTime) + "---isCombinationKey = " + isCombinationKey + "--pressADownTime = " + pressADownTime); - if ((pressBDownTime - startPressTime) > 360 && (pressBDownTime - startPressTime) < 1300 && pressADownTime > 0) { + if ((pressBDownTime - startPressTime) > clickTimeInterval && (pressBDownTime - startPressTime) < longPressTime && pressADownTime > 0) { if (isShowToast) { ToastUtils.showShort("方块 B 按AB组合 +1 "); } @@ -268,7 +270,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis isCombinationKey = 3; } if (isCombinationKey != 3 && isCombinationKey != 1) { - if ((pressBDownTime - startPressTime) > 1320) { + if ((pressBDownTime - startPressTime) > longPressTimeInterval) { if (isShowToast) { ToastUtils.showShort("方块 长按B 无操作 "); } @@ -278,7 +280,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis } else if (event.getAction() == KeyEvent.ACTION_UP) { pressBUpTime = System.currentTimeMillis(); CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent B up pressBUpTime = " + pressBUpTime + "--差-" + (pressBUpTime - startPressTime) + "--pressADownTime = " + pressADownTime); - if ((pressBUpTime - startPressTime) < 350 && isCombinationKey != 3) { + if ((pressBUpTime - startPressTime) < clickTime && isCombinationKey != 3) { if (isShowToast) { ToastUtils.showShort("方块 单击B 0 "); } @@ -300,7 +302,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis if (event.getAction() == KeyEvent.ACTION_DOWN) { pressCDownTime = System.currentTimeMillis(); CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent 方块 长按C 无操作 time dif = " + (pressCDownTime - startPressTime)); - if ((pressCDownTime - startPressTime) > 1320) { + if ((pressCDownTime - startPressTime) > longPressTimeInterval) { if (isShowToast) { ToastUtils.showShort("方块 长按C 无操作 "); } @@ -309,7 +311,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis pressCUpTime = System.currentTimeMillis(); isPressEnd = false; CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent 方块 单击C ← 向左变道 time dif = " + (pressCUpTime - startPressTime)); - if ((pressCUpTime - startPressTime) < 350) { + if ((pressCUpTime - startPressTime) < clickTime) { if (isShowToast) { ToastUtils.showShort("方块 单击C ← 向左变道 "); } @@ -321,7 +323,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis if (event.getAction() == KeyEvent.ACTION_DOWN) { pressDDownTime = System.currentTimeMillis(); CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent 方块 长按D 无操作 time dif = " + (pressDDownTime - startPressTime)); - if ((pressDDownTime - startPressTime) > 1320) { + if ((pressDDownTime - startPressTime) > longPressTimeInterval) { if (isShowToast) { ToastUtils.showShort("方块 长按D 无操作 "); } @@ -330,7 +332,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis pressDUpTime = System.currentTimeMillis(); isPressEnd = false; CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent 方块 单击D → 向右变道 time dif = " + (pressDUpTime - startPressTime)); - if ((pressDUpTime - startPressTime) < 350) { + if ((pressDUpTime - startPressTime) < clickTime) { if (isShowToast) { ToastUtils.showShort("方块 单击D → 向右变道 "); } @@ -342,7 +344,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis if (event.getAction() == KeyEvent.ACTION_DOWN) { pressEDownTime = System.currentTimeMillis(); CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent 方块 长按E 鸣笛 time dif = " + (pressEDownTime - startPressTime)); - if ((pressEDownTime - startPressTime) > 1320) { + if ((pressEDownTime - startPressTime) > longPressTimeInterval) { if (isShowToast) { ToastUtils.showShort("方块 长按E 鸣笛 "); } @@ -362,7 +364,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis pressEUpTime = System.currentTimeMillis(); isPressEnd = false; CallerLogger.INSTANCE.d(M_F + "MoFangManager", "方块 单击E 开启自动驾驶 time dif = " + (pressEUpTime - startPressTime)); - if ((pressEUpTime - startPressTime) < 350) { + if ((pressEUpTime - startPressTime) < clickTime) { if (isShowToast) { ToastUtils.showShort("方块 单击E 开启自动驾驶 "); } From fbd15b4db06ee1755b72a1e84affcaae4c25bec3 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Tue, 7 Feb 2023 21:08:34 +0800 Subject: [PATCH 02/13] [2.13.3] add func btn of roma style change --- .../och/bus/fragment/BaseBusTabFragment.java | 17 ++---- .../ui/TaxiPassengerBaseFragment.java | 8 +-- .../mogo/och/taxi/ui/BaseTaxiTabFragment.java | 8 +-- .../hmi/ui/setting/DebugSettingView.kt | 52 +++++++++++++------ .../main/res/layout/view_debug_setting.xml | 12 +++++ .../core/data/config/FunctionBuildConfig.kt | 9 ++++ 6 files changed, 72 insertions(+), 34 deletions(-) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java index 5471b06c29..150b401a24 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java @@ -4,9 +4,7 @@ import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS import static com.mogo.och.bus.constant.BusConst.TIMER_START_AUTOPILOT_INTERVAL; import android.animation.ObjectAnimator; -import android.content.Intent; import android.os.Bundle; -import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -21,12 +19,9 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.constraintlayout.widget.Group; -import com.mogo.commons.AbsMogoApplication; -import com.mogo.commons.debug.DebugConfig; import com.mogo.commons.mvp.IView; import com.mogo.commons.mvp.MvpFragment; import com.mogo.commons.mvp.Presenter; -import com.mogo.commons.voice.AIAssist; import com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.data.config.HmiBuildConfig; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener; @@ -39,24 +34,20 @@ import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager; import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager; import com.mogo.eagle.core.function.hmi.ui.widget.TrafficDataView; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.map.MogoMapUIController; -import com.mogo.map.MogoMarkerManager; import com.mogo.map.listener.IMogoMapListener; import com.mogo.map.uicontroller.VisualAngleMode; import com.mogo.module.common.MogoApisHandler; import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener; import com.mogo.och.bus.R; import com.mogo.och.bus.bean.BusRoutesResult; -import com.mogo.och.bus.constant.BusConst; import com.mogo.och.bus.model.BusOrderModel; import com.mogo.och.bus.util.BDRouteDataTestUtils; import com.mogo.och.bus.view.SlidePanelView; import com.mogo.och.common.module.utils.SoundPoolHelper; import org.greenrobot.eventbus.EventBus; -import org.greenrobot.eventbus.ThreadMode; import java.util.Objects; @@ -143,14 +134,16 @@ public abstract class BaseBusTabFragment //切换地图的远近视图 if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isLongSight() || MogoMapUIController.getInstance().getCurrentMapVisualAngle().isRoma()) { - CallerVisualAngleManager.INSTANCE.updateLongSightLevel(false); + if(FunctionBuildConfig.isRomaMode){ + CallerVisualAngleManager.INSTANCE.updateLongSightLevel(false); + } Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(true); MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null); mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); } else if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isMediumSight()) { - CallerVisualAngleManager.INSTANCE.updateLongSightLevel(true); if (FunctionBuildConfig.isRomaMode) { - MogoMapUIController.getInstance().setRomaMode(1); + CallerVisualAngleManager.INSTANCE.updateLongSightLevel(true); + MogoMapUIController.getInstance().setRomaMode(FunctionBuildConfig.romaModeStyle); } else { Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(false); MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null); diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java index be3d5debb4..0b0504f76e 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java @@ -130,14 +130,16 @@ public class TaxiPassengerBaseFragment extends MvpFragment + btnDrawFusion.setOnCheckedChangeListener { _, isChecked -> FunctionBuildConfig.isFusionColor = isChecked } @@ -587,7 +590,11 @@ class DebugSettingView @JvmOverloads constructor( // 演示模式 tbIsDemoMode.setOnCheckedChangeListener { _, _ -> FunctionBuildConfig.isDemoMode = !FunctionBuildConfig.isDemoMode - CallerHmiManager.updateStatusBarLeftView(FunctionBuildConfig.isDemoMode, "demoMode", DemoModeView(context)) + CallerHmiManager.updateStatusBarLeftView( + FunctionBuildConfig.isDemoMode, + "demoMode", + DemoModeView(context) + ) CallerAutoPilotManager.setDemoMode(FunctionBuildConfig.isDemoMode) if (!FunctionBuildConfig.isDemoMode) { //关闭美化模式时,通知工控机 @@ -645,7 +652,7 @@ class DebugSettingView @JvmOverloads constructor( } tbDrawRomaMode.isChecked = FunctionBuildConfig.isRomaMode - //云端感知绘制 + //漫游模式开启控制 tbDrawRomaMode.setOnCheckedChangeListener { _, isChecked -> FunctionBuildConfig.isRomaMode = isChecked if (!FunctionBuildConfig.isRomaMode) { @@ -653,6 +660,19 @@ class DebugSettingView @JvmOverloads constructor( } } + tbRomaModeStyle.isChecked = FunctionBuildConfig.romaModeStyle == 1 + //漫游模式选择 + tbRomaModeStyle.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + FunctionBuildConfig.romaModeStyle = 1 + } else { + FunctionBuildConfig.romaModeStyle = 0 + } + if (FunctionBuildConfig.romaModeStyle != 1) { + tbRomaModeStyle.isChecked = false + } + } + //重启工控机所有节点 btnIpcReboot.onClick { CallerAutoPilotManager.sendIpcReboot() @@ -1865,9 +1885,9 @@ class DebugSettingView @JvmOverloads constructor( mTrajectoryInfoSize = 0 mRouteInfoSize = 0 - if(FunctionBuildConfig.isDemoMode){ + if (FunctionBuildConfig.isDemoMode) { tbIsDemoMode.text = "关闭美化模式" - }else{ + } else { tbIsDemoMode.text = "开启美化模式" } @@ -1956,7 +1976,7 @@ class DebugSettingView @JvmOverloads constructor( when (type) { BIZ_BEAUTY_MODE -> { tbIsDemoMode.isClickable = !lock - val (left,top,right,bottom) = tbIsDemoMode.currentPadding() + val (left, top, right, bottom) = tbIsDemoMode.currentPadding() if (lock) { tbIsDemoMode.background = resources.getDrawable(R.drawable.radio_button_lock_background) @@ -1964,11 +1984,11 @@ class DebugSettingView @JvmOverloads constructor( tbIsDemoMode.background = resources.getDrawable(R.drawable.radio_button_normal_background_right) } - tbIsDemoMode.setPadding(left,top,right,bottom) + tbIsDemoMode.setPadding(left, top, right, bottom) } BIZ_RAIN_MODE -> { tbIsRainMode.isClickable = !lock - val (left,top,right,bottom) = tbIsRainMode.currentPadding() + val (left, top, right, bottom) = tbIsRainMode.currentPadding() if (lock) { tbIsRainMode.background = resources.getDrawable(R.drawable.radio_button_lock_background) @@ -1976,21 +1996,21 @@ class DebugSettingView @JvmOverloads constructor( tbIsRainMode.background = resources.getDrawable(R.drawable.radio_button_normal_background_right) } - tbIsRainMode.setPadding(left,top,right,bottom) + tbIsRainMode.setPadding(left, top, right, bottom) } BIZ_WARNING_UPLOAD -> { tbReportWarning.isClickable = !lock - val (left,top,right,bottom) = tbReportWarning.currentPadding() + val (left, top, right, bottom) = tbReportWarning.currentPadding() if (lock) { tbReportWarning.background = resources.getDrawable(R.drawable.radio_button_lock_background) } else { tbReportWarning.background = null } - tbReportWarning.setPadding(left,top,right,bottom) + tbReportWarning.setPadding(left, top, right, bottom) } BIZ_BAG_RECORD -> { - val (left,top,right,bottom) = btnRecordBag.currentPadding() + val (left, top, right, bottom) = btnRecordBag.currentPadding() if (lock) { btnRecordBag.isClickable = false btnRecordBag.background = @@ -2000,10 +2020,10 @@ class DebugSettingView @JvmOverloads constructor( btnRecordBag.requestFocus() btnRecordBag.background = null } - btnRecordBag.setPadding(left,top,right,bottom) + btnRecordBag.setPadding(left, top, right, bottom) } BIZ_FULL_LOG -> { - val (left,top,right,bottom) = tbLogCatch.currentPadding() + val (left, top, right, bottom) = tbLogCatch.currentPadding() if (lock) { tbLogCatch.isClickable = false tbLogCatch.background = @@ -2013,7 +2033,7 @@ class DebugSettingView @JvmOverloads constructor( tbLogCatch.requestFocus() tbLogCatch.background = null } - tbLogCatch.setPadding(left,top,right,bottom) + tbLogCatch.setPadding(left, top, right, bottom) } } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml index bef611254c..42d78ba369 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml @@ -278,6 +278,18 @@ android:textOn="关闭漫游模式" android:textSize="@dimen/dp_24" /> + + Date: Wed, 8 Feb 2023 16:03:21 +0800 Subject: [PATCH 03/13] [2.13.2-sop] fix bug of thread in visual and update map version --- .../eagle/core/function/call/map/CallerVisualAngleManager.kt | 1 + gradle.properties | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerVisualAngleManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerVisualAngleManager.kt index a3c5cd7144..a078973f73 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerVisualAngleManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerVisualAngleManager.kt @@ -242,6 +242,7 @@ object CallerVisualAngleManager { PriorityQueue() } + @Volatile private var mLevel:Boolean = false fun updateLongSightLevel(level:Boolean){ diff --git a/gradle.properties b/gradle.properties index 3e8a59fb97..ed28d6f760 100644 --- a/gradle.properties +++ b/gradle.properties @@ -85,7 +85,7 @@ MOGO_LOCATION_VERSION=1.4.3.32 MOGO_TELEMATIC_VERSION=1.4.3.32 ######## MogoAiCloudSDK Version ######## # 自研地图 -MAP_SDK_VERSION=2.9.0.14_test_06 +MAP_SDK_VERSION=2.10.0.2 MAP_SDK_OPERATION_VERSION=1.1.4.1 # websocket WEBSOCKET_VERSION=1.1.7 From a3e889ed8b2e41ec0494f9cd6d3d9a00518188c4 Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Thu, 9 Feb 2023 17:41:35 +0800 Subject: [PATCH 04/13] =?UTF-8?q?[dev=5Frobotaxi-d-app-module=5F2132=5F221?= =?UTF-8?q?223=5F2.13.2]=20=E7=BB=9F=E4=B8=80taxi=E5=92=8Cbus=20obu?= =?UTF-8?q?=E7=9A=84ip?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/function/obu/mogo/MoGoObuProvider.kt | 37 +++++-------------- 1 file changed, 9 insertions(+), 28 deletions(-) diff --git a/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MoGoObuProvider.kt b/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MoGoObuProvider.kt index a4de8e25d8..a4ab0a31ea 100644 --- a/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MoGoObuProvider.kt +++ b/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MoGoObuProvider.kt @@ -21,8 +21,7 @@ class MoGoObuProvider : IMoGoObuProvider { private val TAG = "MoGoObuProvider" private var mContext: Context? = null - private val busObuIp = "192.168.8.199" - private val taxiObuIp = "192.168.1.199" + private val taxiObuIp = "192.168.1.199" //taxi和bus网段统一 override val functionName: String get() = TAG @@ -44,32 +43,14 @@ class MoGoObuProvider : IMoGoObuProvider { } else { mContext = context mContext?.let { - if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { //bus 司机端 - val ipAddress = - SharedPrefsMgr.getInstance(context).getString(MoGoConfig.OBU_IP, busObuIp) - - //mogo obu - MogoPrivateObuNewManager.INSTANCE.connectObu( - it, - ipAddress, - CommonUtils.getIpAddressString() - ) - - //old obu - MogoPrivateObuManager.INSTANCE.init(context, ipAddress) - } else if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) { //taxi 司机端和乘客端 - val ipAddress = - SharedPrefsMgr.getInstance(context).getString(MoGoConfig.OBU_IP, taxiObuIp) - //mogo obu - MogoPrivateObuNewManager.INSTANCE.connectObu( - it, - ipAddress, - CommonUtils.getIpAddressString() - ) - - //old obu - MogoPrivateObuManager.INSTANCE.init(context, ipAddress) - } + val ipAddress = + SharedPrefsMgr.getInstance(context).getString(MoGoConfig.OBU_IP, taxiObuIp) + //mogo obu + MogoPrivateObuNewManager.INSTANCE.connectObu( + it, + ipAddress, + CommonUtils.getIpAddressString() + ) } } } From 1f7da9bd2936a6fb3ba9752629b7031581a1c42d Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Fri, 10 Feb 2023 17:28:41 +0800 Subject: [PATCH 05/13] =?UTF-8?q?[dev=5Frobotaxi-d-app-module=5F2132=5F221?= =?UTF-8?q?223=5F2.13.2]=20=E5=8E=BB=E6=8E=89=E6=96=AD=E5=BC=80=E8=80=81ob?= =?UTF-8?q?u=E7=9A=84=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/function/hmi/ui/setting/SOPSettingView.kt | 11 ++++++----- .../function/obu/mogo/MogoPrivateObuNewManager.kt | 7 ------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt index 6865374f1c..87f08bde14 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt @@ -188,11 +188,12 @@ class SOPSettingView @JvmOverloads constructor( tbObu.isChecked = CallerOBUManager.isConnected() tbObu.setOnCheckedChangeListener { _, isChecked -> if (!isChecked) { - if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) { - CallerOBUManager.resetObuIpAddress("192.168.1.199") - } else if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { - CallerOBUManager.resetObuIpAddress("192.168.8.199") - } + CallerOBUManager.resetObuIpAddress("192.168.1.199") +// if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) { +// CallerOBUManager.resetObuIpAddress("192.168.1.199") +// } else if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { +// CallerOBUManager.resetObuIpAddress("192.168.8.199") +// } } else { //断开链接 CallerOBUManager.disConnectObu() diff --git a/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MogoPrivateObuNewManager.kt b/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MogoPrivateObuNewManager.kt index e22a0d3f7e..7bf199d550 100644 --- a/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MogoPrivateObuNewManager.kt +++ b/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MogoPrivateObuNewManager.kt @@ -106,13 +106,6 @@ class MogoPrivateObuNewManager private constructor() { mObuStatusInfo.obuStatus = true CallerObuListenerManager.invokeListener(mObuStatusInfo) mContext?.let { SharedPrefsMgr.getInstance(it).putBoolean("OBU", true) } - - //断开老obu - try { - com.zhidao.support.obu.MogoObuManager.getInstance().disConnect() - } catch (e: Exception) { - e.printStackTrace() - } } } From 68c6a64d5cfb5b80a0316cca3725fc60145ca46a Mon Sep 17 00:00:00 2001 From: lianglihui Date: Mon, 13 Feb 2023 14:25:01 +0800 Subject: [PATCH 06/13] =?UTF-8?q?2134=20=E6=94=AF=E6=8C=81sop=20=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E7=9B=92=E5=AD=90=E5=B1=8F=E8=94=BD=E5=B7=A5=E6=8E=A7?= =?UTF-8?q?=E6=9C=BAerror=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../function/hmi/ui/msgbox/DriverMsgBoxBubbleView.kt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/DriverMsgBoxBubbleView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/DriverMsgBoxBubbleView.kt index fb8fabb4a4..510a89d1e9 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/DriverMsgBoxBubbleView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/DriverMsgBoxBubbleView.kt @@ -85,9 +85,13 @@ class DriverMsgBoxBubbleView @JvmOverloads constructor( if(isShowData){ CallerHmiManager.updateDriverMsgBoxTipView(true) if(category == MsgCategory.RECORD_BAG){ - //弹出被动录包弹窗 - CallerDevaToolsManager.onReceiveBadCaseRecord(msgBoxBean,context as Activity,true) - }else{ + if(!FunctionBuildConfig.isDemoMode){ + //弹出被动录包弹窗 + CallerDevaToolsManager.onReceiveBadCaseRecord(msgBoxBean,context as Activity,true) + } + } else if(category == MsgCategory.SYS_INFO){ + //todo 过滤MAP系统异常报警 + } else{ clMsgBubbleLayout.visibility = View.VISIBLE dataList.add(msgBoxBean) driverMsgBoxBubbleAdapter?.setData(dataList) From 94892eae529298bf30f85e71532709d5b43cb248 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Mon, 13 Feb 2023 17:52:10 +0800 Subject: [PATCH 07/13] [2.13.2-sop] change the roma mode default to freedom --- .../java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt index e91ae1c911..d623504d63 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt @@ -85,7 +85,7 @@ object FunctionBuildConfig { */ @Volatile @JvmField - var romaModeStyle = 1 + var romaModeStyle = 0 /** * 是否开启感知物替换颜色功能 From d8b5c2fb8d110be88c758d4ee37edb052cf7c2be Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Tue, 14 Feb 2023 17:49:48 +0800 Subject: [PATCH 08/13] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=BD=A6=E6=A8=A1?= =?UTF-8?q?=E5=81=B6=E7=8E=B0=E9=97=AA=E7=83=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bindingcar/network/BindingcarNetWorkManager.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/network/BindingcarNetWorkManager.java b/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/network/BindingcarNetWorkManager.java index b687adde48..8c73f63889 100644 --- a/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/network/BindingcarNetWorkManager.java +++ b/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/network/BindingcarNetWorkManager.java @@ -80,7 +80,9 @@ public class BindingcarNetWorkManager { if (info != null && info.getData() != null) { CallerLogger.INSTANCE.d(M_BINDING + TAG, "getBindingcarInfo onNext info.getData() =" + info.getData().toString()); //根据车辆类型切换不同的车辆模型,只针对红旗做处理 - updateCarVrIconRes(info.getData().getBrandId()); + if (!SharedPrefsMgr.getInstance(context).getString(SharedPrefsConstants.MAC_ADDRESS).equals(macAddress)) { + updateCarVrIconRes(info.getData().getBrandId()); + } switch (info.getData().getCompare()) { case "0": CallerHmiManager.INSTANCE.showBindingcarDialog(); @@ -93,6 +95,7 @@ public class BindingcarNetWorkManager { break; } SharedPrefsMgr.getInstance(context).putString(SharedPrefsConstants.CAR_INFO, GsonUtils.toJson(info.getData())); + SharedPrefsMgr.getInstance(context).putString(SharedPrefsConstants.MAC_ADDRESS, macAddress); } } From f1c1fd34eb2ba7159c46186040e09652cd5af399 Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Tue, 14 Feb 2023 19:38:47 +0800 Subject: [PATCH 09/13] =?UTF-8?q?[dev=5Frobotaxi-d-app-module=5F2132=5F221?= =?UTF-8?q?223=5F2.13.2=5Fsop]=20=E4=BF=AE=E6=94=B9obu=E7=BA=A2=E7=BB=BF?= =?UTF-8?q?=E7=81=AF=E6=B6=88=E5=A4=B1=E7=9A=84=E7=8A=B6=E6=80=81=E5=9B=9E?= =?UTF-8?q?=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../obu/mogo/MogoPrivateObuNewManager.kt | 82 ++++--------------- .../core/TrafficLightDispatcher.kt | 10 ++- .../IMoGoObuTrafficLightDisapperListener.kt | 12 +++ .../api/obu/IMoGoObuTrafficLightListener.kt | 1 - .../CallerObuTrafficLightDisappearManager.kt | 61 ++++++++++++++ 5 files changed, 100 insertions(+), 66 deletions(-) create mode 100644 core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuTrafficLightDisapperListener.kt create mode 100644 core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuTrafficLightDisappearManager.kt diff --git a/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MogoPrivateObuNewManager.kt b/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MogoPrivateObuNewManager.kt index 7bf199d550..c012b9f31e 100644 --- a/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MogoPrivateObuNewManager.kt +++ b/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MogoPrivateObuNewManager.kt @@ -18,6 +18,7 @@ import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager.Scene.Defa import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager.Scene.TooClose import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager import com.mogo.eagle.core.function.call.obu.CallerObuListenerManager +import com.mogo.eagle.core.function.call.obu.CallerObuTrafficLightDisappearManager import com.mogo.eagle.core.function.call.obu.CallerObuTrafficLightListenerManager import com.mogo.eagle.core.function.call.v2x.CallObuLimitingSpeedListenerManager import com.mogo.eagle.core.function.obu.mogo.utils.TrafficDataConvertUtilsNew @@ -758,30 +759,35 @@ class MogoPrivateObuNewManager private constructor() { // 这里排除需要特殊定制的语音及文案外,其余的都可以使用 EventTypeEnumNew 提供的 var alertContent: String = "" var ttsContent: String = "" + var saveAppId: String = "" var changeVisualAngle = false when (appId) { - //交叉路口碰撞预警 + //前向碰撞预警 MogoObuConstants.V2X_WARNING_TYPE.FCW.toString() -> { alertContent = EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_FCW.poiType) ttsContent = EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_FCW.poiType) + saveAppId = EventTypeEnumNew.TYPE_USECASE_ID_FCW.poiType } //交叉路口碰撞预警 MogoObuConstants.V2X_WARNING_TYPE.ICW.toString() -> { alertContent = EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_ICW.poiType) ttsContent = EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_ICW.poiType) + saveAppId = EventTypeEnumNew.TYPE_USECASE_ID_ICW.poiType } //左转辅助预警 MogoObuConstants.V2X_WARNING_TYPE.LTA.toString() -> { alertContent = EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_LTA.poiType) ttsContent = EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_LTA.poiType) + saveAppId = EventTypeEnumNew.TYPE_USECASE_ID_LTA.poiType } //盲区预警 MogoObuConstants.V2X_WARNING_TYPE.BSW.toString() -> { ttsContent = EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_BSW.poiType) alertContent = EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_BSW.poiType) + saveAppId = EventTypeEnumNew.TYPE_USECASE_ID_BSW.poiType if ( direction == WarningDirectionEnum.ALERT_WARNING_LEFT || direction == WarningDirectionEnum.ALERT_WARNING_TOP_LEFT || @@ -805,6 +811,7 @@ class MogoPrivateObuNewManager private constructor() { MogoObuConstants.V2X_WARNING_TYPE.LCW.toString() -> { alertContent = EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_LCW.poiType) ttsContent = EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_LCW.poiType) + saveAppId = EventTypeEnumNew.TYPE_USECASE_ID_LCW.poiType if ( direction == WarningDirectionEnum.ALERT_WARNING_LEFT || direction == WarningDirectionEnum.ALERT_WARNING_TOP_LEFT || @@ -826,12 +833,14 @@ class MogoPrivateObuNewManager private constructor() { MogoObuConstants.V2X_WARNING_TYPE.DNPW.toString() -> { alertContent = EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_DNPW.poiType) ttsContent = EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_DNPW.poiType) + saveAppId = EventTypeEnumNew.TYPE_USECASE_ID_DNPW.poiType } //紧急制动预警 MogoObuConstants.V2X_WARNING_TYPE.EBW.toString() -> { alertContent = EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_EBW.poiType) ttsContent = EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_EBW.poiType) + saveAppId = EventTypeEnumNew.TYPE_USECASE_ID_EBW.poiType } //异常车辆提醒 @@ -840,6 +849,7 @@ class MogoPrivateObuNewManager private constructor() { ttsContent = EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_AVW.poiType) alertContent = String.format(alertContent, direction.desc) ttsContent = String.format(ttsContent, direction.desc) + saveAppId = EventTypeEnumNew.TYPE_USECASE_ID_AVW.poiType } //车辆失控预警 @@ -848,11 +858,13 @@ class MogoPrivateObuNewManager private constructor() { ttsContent = EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_CLW.poiType) alertContent = String.format(alertContent, direction.desc) ttsContent = String.format(ttsContent, direction.desc) + saveAppId = EventTypeEnumNew.TYPE_USECASE_ID_CLW.poiType } //车辆失控预警 MogoObuConstants.V2X_WARNING_TYPE.EVW.toString() -> { alertContent = EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_EVW.poiType) ttsContent = EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_EVW.poiType) + saveAppId = EventTypeEnumNew.TYPE_USECASE_ID_EVW.poiType } // 这里处理固定的提示信息,包括了<紧急车辆提醒> @@ -868,7 +880,7 @@ class MogoPrivateObuNewManager private constructor() { MogoObuConstants.STATUS.UPDATE -> { CallerLogger.d( "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", - "new handleSdkObu appId2 = $appId --- level = $level ---ttsContent = $ttsContent --- alertContent = $alertContent --- direction = $direction" + "new handleSdkObu appId2 = $saveAppId --- level = $level ---ttsContent = $ttsContent --- alertContent = $alertContent --- direction = $direction" ) if (level == 2 || level == 3) { //不显示弹框,其它保留 @@ -876,7 +888,7 @@ class MogoPrivateObuNewManager private constructor() { MsgBoxBean( MsgBoxType.V2X, V2XMsg( - appId, + saveAppId, alertContent, ttsContent ) @@ -885,10 +897,10 @@ class MogoPrivateObuNewManager private constructor() { } ) CallerHmiManager.warningV2X( - appId, + saveAppId, alertContent, ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 - (appId + direction.direction),//使用当前事件类型+方向记录tag,当发生变化的时候关闭当前弹出新的 + (saveAppId + direction.direction),//使用当前事件类型+方向记录tag,当发生变化的时候关闭当前弹出新的 object : IMoGoWarningStatusListener { override fun onShow() { super.onShow() @@ -958,9 +970,7 @@ class MogoPrivateObuNewManager private constructor() { isShowGreenWave = false isShowRunRedLight = false isYellowLight = false -// lightCountDownRed = 1 -// lightCountDownGreen = 1 -// lightCountDownYellow = 1 + CallerObuTrafficLightDisappearManager.invokeObuTrafficLightDisappear() } } } @@ -971,11 +981,6 @@ class MogoPrivateObuNewManager private constructor() { private var isShowGreenWave = false private var isShowRunRedLight = false -// private var lightCountDownRed : Int = 1 -// private var lightCountDownGreen : Int = 1 -// private var lightCountDownYellow : Int = 1 - - /** * 修改红绿灯 */ @@ -1044,15 +1049,9 @@ class MogoPrivateObuNewManager private constructor() { if (minSpeedTemp == maxSpeedTemp) { minSpeedTemp -= 5 } - val adviceSpeed = "$minSpeedTemp - $maxSpeedTemp" val adviceSpeedTts = "$minSpeedTemp 到 $maxSpeedTemp" -// val adviceSpeed = -// "${Math.round(currentLight.suggestMinSpeed*3.6)} - ${Math.round(currentLight.suggestMaxSpeed*3.6)}" -// val adviceSpeedTts = -// "${Math.round(currentLight.suggestMinSpeed*3.6)} 到 ${Math.round(currentLight.suggestMaxSpeed*3.6)}" - ttsContent = String.format( EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType), @@ -1100,87 +1099,42 @@ class MogoPrivateObuNewManager private constructor() { } // 红灯 2, 3 -> { -// if (!isGreenLight) { //只有不是是绿灯,才能展示跳转到红灯 if (!isRedLight) { CallerHmiManager.disableWarningV2X(appId.toString()) isRedLight = true } isGreenLight = false isYellowLight = false -// lightCountDownYellow = 1 -// lightCountDownGreen = 1 - CallerObuTrafficLightListenerManager.invokeObuTrafficLight(1) val red = currentLight.countDown.toInt() -// Log.e("lixp", " ----11--- red --------- = $red ----lightCountDownRed = $lightCountDownRed ----isGreenLight = $isGreenLight") -// //记录当前红灯的上一帧的值 10,9,10 -// if (lightCountDownRed == 1) { //最后一个灯态是1 -// lightCountDownRed = red -// } -// -// if (lightCountDownRed < red) { //10 9 -// return -// } -// lightCountDownRed = red -// Log.e("lixp", " ----22--- red --------- = $red ----lightCountDownRed = $lightCountDownRed ----isGreenLight = $isGreenLight") CallerHmiManager.changeCountdownRed(red) -// } } // 绿灯 4, 5, 6 -> { -// if (!isYellowLight) { //只有不是黄灯的时候,才能跳转到绿灯 if (!isGreenLight) { CallerHmiManager.disableWarningV2X(appId.toString()) isGreenLight = true } isRedLight = false isYellowLight = false -// lightCountDownRed = 1 -// lightCountDownYellow = 1 CallerObuTrafficLightListenerManager.invokeObuTrafficLight(3) val green = currentLight.countDown.toInt() -// Log.e("lixp", " ----11--- green --------- = $green ---lightCountDownGreen = $lightCountDownGreen ----isYellowLight = $isYellowLight") -// if (lightCountDownGreen == 1) { -// lightCountDownGreen = green -// } -// -// if (lightCountDownGreen < green) { -// return -// } -// lightCountDownGreen = green -// Log.d("lixp", " ----22--- green --------- = $green ---lightCountDownGreen = $lightCountDownGreen ----isYellowLight = $isYellowLight") CallerHmiManager.changeCountdownGreen(green) -// } } // 黄灯 7, 8 -> { -// if (!isRedLight) { //黄灯只能跳转绿灯 if (!isYellowLight) { isYellowLight = true } isRedLight = false isGreenLight = false -// lightCountDownRed = 1 -// lightCountDownGreen = 1 - CallerHmiManager.disableWarningV2X(appId.toString()) CallerObuTrafficLightListenerManager.invokeObuTrafficLight(2) val yellow = currentLight.countDown.toInt() -// Log.e("lixp", " -----11-- yellow --------- = $yellow ---lightCountDownYellow = $lightCountDownYellow ----isYellowLight = $isYellowLight") -// if (lightCountDownYellow == 1) { -// lightCountDownYellow = yellow -// } -// -// if (lightCountDownYellow < yellow) { -// return -// } -// lightCountDownYellow = yellow -// Log.d("lixp", " -----22-- yellow --------- = $yellow ---lightCountDownYellow = $lightCountDownYellow ----isYellowLight = $isYellowLight") CallerHmiManager.changeCountdownYellow(yellow) } } -// } } diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/TrafficLightDispatcher.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/TrafficLightDispatcher.kt index 03ca1b2c9d..3fa53c8834 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/TrafficLightDispatcher.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/TrafficLightDispatcher.kt @@ -5,10 +5,12 @@ import android.os.Handler import android.util.Log import com.mogo.eagle.core.data.trafficlight.TrafficLightResult import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotIdentifyListener +import com.mogo.eagle.core.function.api.obu.IMoGoObuTrafficLightDisapperListener import com.mogo.eagle.core.function.api.obu.IMoGoObuTrafficLightListener import com.mogo.eagle.core.function.api.trafficlight.IMoGoTrafficLightListener import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager import com.mogo.eagle.core.function.call.hmi.CallerHmiManager +import com.mogo.eagle.core.function.call.obu.CallerObuTrafficLightDisappearManager import com.mogo.eagle.core.function.call.obu.CallerObuTrafficLightListenerManager import com.mogo.eagle.core.function.call.trafficlight.CallerTrafficLightListenerManager import com.mogo.eagle.core.function.v2x.trafficlight.TrafficLightHMIManager @@ -21,7 +23,7 @@ import perception.TrafficLightOuterClass.TrafficLight * @since: 2022/4/28 */ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLightListener, - IMoGoObuTrafficLightListener { + IMoGoObuTrafficLightListener, IMoGoObuTrafficLightDisapperListener { companion object { const val TAG = "TrafficLightDispatcher" @@ -50,6 +52,8 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight CallerAutopilotIdentifyListenerManager.addListener(TAG, this) //obu红绿灯数据 CallerObuTrafficLightListenerManager.registerObuTrafficLightListener(TAG, this) + //obu红绿灯数据消失 + CallerObuTrafficLightDisappearManager.registerObuTrafficLightListener(TAG, this) } /** @@ -153,6 +157,10 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight CallerHmiManager.showWarningTrafficLight(light, 3) } + override fun onObuLightDisapper() { + hasObuLightStatus = false + } + fun destroy() { //取消注册监听AI云获取红绿灯状态 CallerTrafficLightListenerManager.unRegisterTrafficLightListener(TAG) diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuTrafficLightDisapperListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuTrafficLightDisapperListener.kt new file mode 100644 index 0000000000..a5297714cd --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuTrafficLightDisapperListener.kt @@ -0,0 +1,12 @@ +package com.mogo.eagle.core.function.api.obu + + +/** + * @author lixiaopeng + * @date 2022/1/30 10:28 下午 + * OBU 灯态信息 消失 + */ +interface IMoGoObuTrafficLightDisapperListener { + + fun onObuLightDisapper() +} \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuTrafficLightListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuTrafficLightListener.kt index 1b4be4e95c..de5b5aee6a 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuTrafficLightListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuTrafficLightListener.kt @@ -11,5 +11,4 @@ interface IMoGoObuTrafficLightListener { * @param light 灯的信息 */ fun onObuTrafficLight(light: Int){} - } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuTrafficLightDisappearManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuTrafficLightDisappearManager.kt new file mode 100644 index 0000000000..3302fafd29 --- /dev/null +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuTrafficLightDisappearManager.kt @@ -0,0 +1,61 @@ +package com.mogo.eagle.core.function.call.obu + +import com.mogo.eagle.core.function.api.obu.IMoGoObuTrafficLightDisapperListener +import com.mogo.eagle.core.function.api.obu.IMoGoObuTrafficLightListener +import java.util.concurrent.ConcurrentHashMap + +object CallerObuTrafficLightDisappearManager { + + private val M_OBU_TRAFFIC_LIGHT_LISTENER: ConcurrentHashMap = + ConcurrentHashMap() + + /** + * 添加监听 + * @param tag 标记,用来注销监听使用 + * @param listener 监听回调 + */ + fun registerObuTrafficLightListener( + tag: String, + listener: IMoGoObuTrafficLightDisapperListener + ) { + if (M_OBU_TRAFFIC_LIGHT_LISTENER.containsKey(tag)) { + return + } + M_OBU_TRAFFIC_LIGHT_LISTENER[tag] = listener + } + + /** + * 删除监听 + * @param tag 标记,用来注销监听使用 + */ + fun unRegisterObuTrafficLightListener(tag: String) { + if (!M_OBU_TRAFFIC_LIGHT_LISTENER.containsKey(tag)) { + return + } + M_OBU_TRAFFIC_LIGHT_LISTENER.remove(tag) + } + + /** + * 删除监听 + * @param listener 要删除的监听对象 + */ + fun unRegisterObuTrafficLightListener(listener: IMoGoObuTrafficLightListener) { + if (!M_OBU_TRAFFIC_LIGHT_LISTENER.containsValue(listener)) { + return + } + M_OBU_TRAFFIC_LIGHT_LISTENER.forEach { + if (it.value == listener) { + M_OBU_TRAFFIC_LIGHT_LISTENER.remove(it.key) + } + } + } + + fun invokeObuTrafficLightDisappear() { + M_OBU_TRAFFIC_LIGHT_LISTENER.forEach { + val tag = it.key + val listener = it.value + listener.onObuLightDisapper() + } + } + +} \ No newline at end of file From 76e5b8d72c052475c728d0b0ace748f12b703b4d Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Tue, 14 Feb 2023 19:43:39 +0800 Subject: [PATCH 10/13] [dev_robotaxi-d-app-module_2132_221223_2.13.2_sop] opt --- .../CallerObuTrafficLightDisappearManager.kt | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuTrafficLightDisappearManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuTrafficLightDisappearManager.kt index 3302fafd29..6985c8501a 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuTrafficLightDisappearManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuTrafficLightDisappearManager.kt @@ -39,16 +39,16 @@ object CallerObuTrafficLightDisappearManager { * 删除监听 * @param listener 要删除的监听对象 */ - fun unRegisterObuTrafficLightListener(listener: IMoGoObuTrafficLightListener) { - if (!M_OBU_TRAFFIC_LIGHT_LISTENER.containsValue(listener)) { - return - } - M_OBU_TRAFFIC_LIGHT_LISTENER.forEach { - if (it.value == listener) { - M_OBU_TRAFFIC_LIGHT_LISTENER.remove(it.key) - } - } - } +// fun unRegisterObuTrafficLightListener(listener: IMoGoObuTrafficLightListener) { +// if (!M_OBU_TRAFFIC_LIGHT_LISTENER.containsValue(listener)) { +// return +// } +// M_OBU_TRAFFIC_LIGHT_LISTENER.forEach { +// if (it.value == listener) { +// M_OBU_TRAFFIC_LIGHT_LISTENER.remove(it.key) +// } +// } +// } fun invokeObuTrafficLightDisappear() { M_OBU_TRAFFIC_LIGHT_LISTENER.forEach { From 2c37831abbd482f8fa3bb569796840c885751cfc Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Wed, 15 Feb 2023 11:33:55 +0800 Subject: [PATCH 11/13] =?UTF-8?q?[dev=5Frobotaxi-d-app-module=5F2132=5F221?= =?UTF-8?q?223=5F2.13.2=5Fsop]=20=E4=BC=98=E5=8C=96=E8=BD=A6=E6=A8=A1?= =?UTF-8?q?=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eagle/core/function/bindingcar/BindingcarProvider.java | 2 +- .../bindingcar/network/BindingcarNetWorkManager.java | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/BindingcarProvider.java b/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/BindingcarProvider.java index f484c74f53..0f3a288a2d 100644 --- a/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/BindingcarProvider.java +++ b/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/BindingcarProvider.java @@ -94,7 +94,7 @@ public class BindingcarProvider implements IMoGoBindingcarProvider { @Override public void modifyCarInfo(BindingcarCallBack callBack) { - BindingcarNetWorkManager.getInstance().modifyBindingcar(mAddress, mWidevineIDWithMd5, callBack, getScreenType()); + BindingcarNetWorkManager.getInstance().modifyBindingcar(mContext, mAddress, mWidevineIDWithMd5, callBack, getScreenType()); } private void driverScreen(String macAddress, String widevineIDWithMd5) { diff --git a/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/network/BindingcarNetWorkManager.java b/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/network/BindingcarNetWorkManager.java index 8c73f63889..4f563ecc8a 100644 --- a/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/network/BindingcarNetWorkManager.java +++ b/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/network/BindingcarNetWorkManager.java @@ -115,7 +115,7 @@ public class BindingcarNetWorkManager { * 绑定和修改绑定车辆 * mac: 48:b0:2d:3a:9c:19 */ - public void modifyBindingcar(String macAddress, String widevineIDWithMd5, BindingcarCallBack callBack, int screenType) { + public void modifyBindingcar(Context context, String macAddress, String widevineIDWithMd5, BindingcarCallBack callBack, int screenType) { // String macAddress1 = "48:b0:2d:4d:33:40"; // String sn = "X2020220417KA94QIN"; BindingcarRequest request = new BindingcarRequest(macAddress, widevineIDWithMd5, screenType); @@ -133,7 +133,10 @@ public class BindingcarNetWorkManager { if (info != null) { callBack.callBackResult(info); CallerLogger.INSTANCE.d(M_BINDING + TAG, "modifyBindingcar onNext code = " + info.code + "---msg = " + info.msg + "--info.toString() = " + info.toString()); - updateCarVrIconRes(info.getData().getBrandId()); + if (!SharedPrefsMgr.getInstance(context).getString(SharedPrefsConstants.MAC_ADDRESS).equals(macAddress)) { + updateCarVrIconRes(info.getData().getBrandId()); + } + SharedPrefsMgr.getInstance(context).putString(SharedPrefsConstants.MAC_ADDRESS, macAddress); } } From f265c9d037add4c9cf44566d5e68b7723b944a75 Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Wed, 15 Feb 2023 17:14:36 +0800 Subject: [PATCH 12/13] =?UTF-8?q?[2.14.0][Opt]=E5=AF=B9=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E7=9B=92=E5=AD=90=E4=B8=ADV2X=E5=92=8C=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E7=9A=84=E5=8F=82=E6=95=B0=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/eagle/core/data/msgbox/OperationMsg.kt | 10 +++++++++- .../java/com/mogo/eagle/core/data/msgbox/V2XMsg.kt | 5 +++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/OperationMsg.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/OperationMsg.kt index 230e98dca5..75e7be26bd 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/OperationMsg.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/OperationMsg.kt @@ -1,8 +1,16 @@ package com.mogo.eagle.core.data.msgbox +import android.util.Log +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import java.io.Serializable /** * 运营消息:-1表示初始值 */ -data class OperationMsg(val timestamp : Long, val content: String, val type: Int = -1): Serializable +data class OperationMsg(val timestamp : Long, val content: String, val type: Int = -1): Serializable { + init { + if (content.isEmpty()) { + CallerLogger.e("MsgBox", Log.getStackTraceString(Throwable())) + } + } +} diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/V2XMsg.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/V2XMsg.kt index 374c545563..b4f98777f5 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/V2XMsg.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/V2XMsg.kt @@ -1,5 +1,7 @@ package com.mogo.eagle.core.data.msgbox +import android.util.Log +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import java.io.Serializable data class V2XMsg(var type: String = "", var content: String? = "", var tts: String? = ""): Serializable { @@ -9,5 +11,8 @@ data class V2XMsg(var type: String = "", var content: String? = "", var tts: Str init { timeStamp = System.currentTimeMillis() + if (content.isNullOrEmpty()) { + CallerLogger.e("MsgBox", Log.getStackTraceString(Throwable())) + } } } \ No newline at end of file From a52a6e5688a54fa9b3311541c8f1c51d44061ec1 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Thu, 16 Feb 2023 01:12:41 +0800 Subject: [PATCH 13/13] =?UTF-8?q?[2.14.0]=E5=BD=95=E5=8C=85=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E4=BB=BB=E5=8A=A1=E7=AE=A1=E7=90=86=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?Bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/BadCaseManagerView.kt | 6 +- .../res/drawable-xhdpi/icon_bag_no_data.png | Bin 0 -> 17281 bytes .../res/layout/layout_badcase_manager.xml | 327 ++++++++++-------- .../core/function/hmi/ui/MoGoHmiFragment.kt | 57 ++- .../api/hmi/warning/IMoGoWaringProvider.kt | 5 + 5 files changed, 253 insertions(+), 142 deletions(-) create mode 100644 core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_bag_no_data.png diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt index 801708f121..31d0b57875 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseManagerView.kt @@ -35,7 +35,7 @@ import java.util.* * @description BadCase录包管理页面 * @since: 2022/12/15 */ -internal class BadCaseManagerView @JvmOverloads constructor( +class BadCaseManagerView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 @@ -66,6 +66,8 @@ internal class BadCaseManagerView @JvmOverloads constructor( private fun initView(){ background = ColorDrawable(Color.parseColor("#F0151D41")) + clLayout.setOnClickListener { + } //关闭BadCase管理窗口 ivManagerClose.setOnClickListener { clickListener?.onClose() @@ -272,6 +274,8 @@ internal class BadCaseManagerView @JvmOverloads constructor( } //遍历所有bag else if(bagManager.reqType == 2){ + clBagHaveDataLayout.visibility = View.VISIBLE + clBagNoDataLayout.visibility = View.GONE if(bagManager.bagsInfoRespCount>0){ for(bagInfo in bagManager.bagsInfoRespList){ bagInfo?.let { diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_bag_no_data.png b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_bag_no_data.png new file mode 100644 index 0000000000000000000000000000000000000000..5f4ea0176bbdfed99a9cfa982a3e91b672f0dc9d GIT binary patch literal 17281 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

D zH*0CBvjpL*cYXUXTi(-21$-UsR{}!f;M=rSEGmdAXkB zjgr&!$(s=*qSN3mKD4-Z@Z z{Fx44EAFwdUs*GLgroPU*LqNr(UN0~>U;d5U?<+$=InXyMJfC6sh*?ptV%}YE*7Pn zsmkVmTFZK*NCl{vPA?Io=y&k0I3HCskG*i>Z4UYt-gFKD0oeNQzW@d~|6H4P9_kr* zej=JLzF>hGt9D%#ku}I8PbOU6*5IIJ2Zk82k|PQYHA+m_{C&!p&6T(Szh|x^2bDLT z{}{k7x66fBQRL`!@q3p-I{dnKyWGU5!HPPPA!b2(0sK}4EuSWAYDYBJm!7r;(tZWj$)r~%9p=GCjywY$>IqEYapiDzM%;| zu@R6G{&v!uT&yTfiwhyoUmq+oa?y_U?5Dcw!T-xhHw+IV9L43d4vpQIT!yni$o}$C z!I6ZCm;R4a2Bi>UitQe#`ll1#ej$WZU$OwMC>EiNcqw3KP$IM=_eV;Mgje3vCe=$_ z;Z7v#=Z*|7E&W4TAVW$v-7Au>K9+KUyl;7B2N@M+=q=i;jSLuXr#+b#>7|>tZDF_%8PIwJd@cr8dO)d_sVHmay z8dI*wKptkD?t^-w&*RS<+qWqp%MX`N$R$`a0cF7=`9Gj3#vW4iBgO_y9jggJP%@r` z)?;+M>Z16BMCY~eL;#DH=={G35CjD%x22Q}cWcD_<)tq!OUp;VHO=IkJ#f#W5reAn zSX%eHl3;E45>{CJKLQ2;`TnAL5l>+F4fEXjsm@&j>De~V%*~Bbn_WSlQ2jwgQQ?=N z|81|v&@p*@s57U>0=SUOa&$$-$ZZkJ}N zT}Am=Dg?0IgX<#ZY&xEfNwxE`PY1TY5;ns86!ZBp4dF+8$~L6gm}HeTTQB`| - + android:id="@+id/clLayout" + > - - - - - - - - - - - - - - - - - - - - - + app:layout_constraintTop_toBottomOf="@id/viewManagerTitleLine" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintLeft_toLeftOf="@id/viewManagerTitleLine" + android:visibility="gone" + > - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt index 582699cdbf..daed3fa99b 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt @@ -106,6 +106,7 @@ import com.mogo.eagle.core.utilcode.util.* import com.mogo.eagle.core.utilcode.util.TimeUtils import com.mogo.eagle.core.utilcode.util.TimeUtils.millis2String import com.zhidao.support.adas.high.common.MogoReport.Code.Error.EMAP.* +import com.zhjt.mogo_core_function_devatools.badcase.biz.BadCaseManagerView import com.zhjt.mogo_core_function_devatools.badcase.biz.SpaceWarningDialog import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig import com.zhjt.service_biz.BizConfig @@ -142,6 +143,10 @@ class MoGoHmiFragment : MvpFragment(), private var mSOPSettingViewFloat: WarningFloat.Builder? = null private var mSOPSettingView: SOPSettingView? = null + //BadCaseManagerView + private var mBadCaseManagerViewFloat: WarningFloat.Builder ?= null + private var mBadCaseManagerView: BadCaseManagerView?= null + //StatusView private var statusBarView: StatusBarView? = null @@ -564,7 +569,8 @@ class MoGoHmiFragment : MvpFragment(), override fun showBadCaseManagerView() { dismissToolsFloatView() - CallerDevaToolsManager.showBadCaseManagerView(it) +// CallerDevaToolsManager.showBadCaseManagerView(it) + toggleBagManagerView() } }) } @@ -839,6 +845,55 @@ class MoGoHmiFragment : MvpFragment(), } } + override fun toggleBagManagerView() { + activity?.let{ + if (mBadCaseManagerViewFloat != null) { + WarningFloat.dismiss(mBadCaseManagerViewFloat!!.config.floatTag, false) + mBadCaseManagerViewFloat = null + mBadCaseManagerView = null + } else { + if (mBadCaseManagerView == null) { + mBadCaseManagerView = BadCaseManagerView(it) + mBadCaseManagerView?.setOnClickListener(object: BadCaseManagerView.ClickListener{ + override fun onClose() { + toggleBagManagerView() + } + }) + } + mBadCaseManagerViewFloat = WarningFloat.with(it) + .setTag("mBadCaseManagerView") + .setLayout(mBadCaseManagerView!!) + .setSidePattern(LEFT) + .setGravity(Gravity.LEFT, offsetY = 70) + .setImmersionStatusBar(false) + .setWindowHeight(LayoutParams.MATCH_PARENT) + .setAnimator(object : DefaultAnimator() { + override fun enterAnim( + view: View, + params: LayoutParams, + windowManager: WindowManager, + sidePattern: SidePattern + ): Animator? = + super.enterAnim(view, params, windowManager, sidePattern) + ?.apply { + interpolator = OvershootInterpolator() + } + + override fun exitAnim( + view: View, + params: LayoutParams, + windowManager: WindowManager, + sidePattern: SidePattern + ): Animator? = + super.exitAnim(view, params, windowManager, sidePattern) + ?.setDuration(200) + }) + .show() + } + } + } + + /** * 展示VR下V2X预警 * diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt index 122866ef06..bc1a7dadbb 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt @@ -89,6 +89,11 @@ interface IMoGoWaringProvider : IMoGoHmiViewProxy { */ fun toggleSOPView() + /** + * 开关Bag包任务管理页面 + */ + fun toggleBagManagerView() + /** * 展示VR下V2X预警 *