From cf5e8ebdf7ab372f580a6bb7f07dfd1450fcd714 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Thu, 10 Oct 2024 19:45:27 +0800 Subject: [PATCH 01/16] =?UTF-8?q?[6.7.0]=20[fea]=20[=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E7=AE=97=E8=B7=AF=E7=A6=81=E6=AD=A2=E9=80=80=E5=87=BA]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../taxi/ui/{ => routing}/errorpoint/ErrorPointItemAdapter.kt | 2 +- .../ui/{ => routing}/errorpoint/ReportErrorPointDialog.kt | 2 +- .../taxi/ui/{ => routing}/errorpoint/ReportErrorPointView.kt | 2 +- .../ui/{ => routing}/errorpoint/ReportErrorPointViewModel.kt | 2 +- .../taxi/ui/routing/routingrunning/RoutingRunningModel.kt | 1 + .../taxi/ui/routing/routingrunning/RoutingRunningView.kt | 2 +- .../src/main/res/layout/dialog_taxt_report_error.xml | 4 ++-- 7 files changed, 8 insertions(+), 7 deletions(-) rename OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/{ => routing}/errorpoint/ErrorPointItemAdapter.kt (97%) rename OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/{ => routing}/errorpoint/ReportErrorPointDialog.kt (94%) rename OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/{ => routing}/errorpoint/ReportErrorPointView.kt (98%) rename OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/{ => routing}/errorpoint/ReportErrorPointViewModel.kt (98%) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/errorpoint/ErrorPointItemAdapter.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/errorpoint/ErrorPointItemAdapter.kt similarity index 97% rename from OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/errorpoint/ErrorPointItemAdapter.kt rename to OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/errorpoint/ErrorPointItemAdapter.kt index e6c65b4843..adc5ef1fc0 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/errorpoint/ErrorPointItemAdapter.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/errorpoint/ErrorPointItemAdapter.kt @@ -1,4 +1,4 @@ -package com.mogo.och.unmanned.taxi.ui.errorpoint +package com.mogo.och.unmanned.taxi.ui.routing.errorpoint import android.content.Context import android.view.LayoutInflater diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/errorpoint/ReportErrorPointDialog.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/errorpoint/ReportErrorPointDialog.kt similarity index 94% rename from OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/errorpoint/ReportErrorPointDialog.kt rename to OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/errorpoint/ReportErrorPointDialog.kt index 984e49a9cd..6435cf166d 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/errorpoint/ReportErrorPointDialog.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/errorpoint/ReportErrorPointDialog.kt @@ -1,4 +1,4 @@ -package com.mogo.och.unmanned.taxi.ui.errorpoint +package com.mogo.och.unmanned.taxi.ui.routing.errorpoint import android.content.Context import androidx.lifecycle.LifecycleObserver diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/errorpoint/ReportErrorPointView.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/errorpoint/ReportErrorPointView.kt similarity index 98% rename from OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/errorpoint/ReportErrorPointView.kt rename to OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/errorpoint/ReportErrorPointView.kt index 67d54904b0..bdf995e721 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/errorpoint/ReportErrorPointView.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/errorpoint/ReportErrorPointView.kt @@ -1,4 +1,4 @@ -package com.mogo.och.unmanned.taxi.ui.errorpoint +package com.mogo.och.unmanned.taxi.ui.routing.errorpoint import android.content.Context import android.util.AttributeSet diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/errorpoint/ReportErrorPointViewModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/errorpoint/ReportErrorPointViewModel.kt similarity index 98% rename from OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/errorpoint/ReportErrorPointViewModel.kt rename to OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/errorpoint/ReportErrorPointViewModel.kt index fa16a3d897..1f70d50a5d 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/errorpoint/ReportErrorPointViewModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/errorpoint/ReportErrorPointViewModel.kt @@ -1,4 +1,4 @@ -package com.mogo.och.unmanned.taxi.ui.errorpoint +package com.mogo.och.unmanned.taxi.ui.routing.errorpoint import androidx.lifecycle.ViewModel import com.mogo.commons.AbsMogoApplication diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/routingrunning/RoutingRunningModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/routingrunning/RoutingRunningModel.kt index 4ec295f88b..199dea382e 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/routingrunning/RoutingRunningModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/routingrunning/RoutingRunningModel.kt @@ -84,6 +84,7 @@ class RoutingRunningModel : ViewModel() { this.currentGrayLineBean = data.grayLineBean this.currentContrailBean = data.contrail this.currentGrayId = data.taskId + MogoStatusManager.getInstance().setTaxiUnmanedDriverLineRoutingPerformTask(TAG, true) //添加到站监听 OchAutoPilotStatusListenerManager.addListener(TAG, mMogoAutopilotStatusListener) LineManager.addListener(TAG, lineCallback) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/routingrunning/RoutingRunningView.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/routingrunning/RoutingRunningView.kt index 017107da1e..992c5e7e24 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/routingrunning/RoutingRunningView.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/routingrunning/RoutingRunningView.kt @@ -21,7 +21,7 @@ import com.mogo.och.unmanned.taxi.R import com.mogo.och.unmanned.taxi.bean.EndGrayTaskFeedbackType import com.mogo.och.unmanned.taxi.bean.StartGrayAndQueryContrailRsp import com.mogo.och.unmanned.taxi.constant.TaxiUnmannedConst -import com.mogo.och.unmanned.taxi.ui.errorpoint.ReportErrorPointDialog +import com.mogo.och.unmanned.taxi.ui.routing.errorpoint.ReportErrorPointDialog import com.mogo.och.unmanned.taxi.ui.routing.RoutingSwitchModel import com.mogo.och.unmanned.taxi.ui.routing.TaxiRoutingFeedbackDialog import com.mogo.och.unmanned.taxi.ui.routing.TaxiRoutingModel diff --git a/OCH/taxi/unmanned-driver/src/main/res/layout/dialog_taxt_report_error.xml b/OCH/taxi/unmanned-driver/src/main/res/layout/dialog_taxt_report_error.xml index 11c0fedb02..bfdf3beb5f 100644 --- a/OCH/taxi/unmanned-driver/src/main/res/layout/dialog_taxt_report_error.xml +++ b/OCH/taxi/unmanned-driver/src/main/res/layout/dialog_taxt_report_error.xml @@ -1,8 +1,8 @@ - - \ No newline at end of file + \ No newline at end of file From 7ebe803aab73f2bcb8c035dbb9de84d52222aa8d Mon Sep 17 00:00:00 2001 From: yangyakun Date: Fri, 11 Oct 2024 10:16:49 +0800 Subject: [PATCH 02/16] =?UTF-8?q?[6.7.0]=20[fea]=20[=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=8F=82=E6=95=B0]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/src/main/java/com/mogo/och/data/bean/ContraiInfo.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OCH/common/data/src/main/java/com/mogo/och/data/bean/ContraiInfo.kt b/OCH/common/data/src/main/java/com/mogo/och/data/bean/ContraiInfo.kt index 027d4c62ef..e876374a68 100644 --- a/OCH/common/data/src/main/java/com/mogo/och/data/bean/ContraiInfo.kt +++ b/OCH/common/data/src/main/java/com/mogo/och/data/bean/ContraiInfo.kt @@ -31,6 +31,6 @@ data class ContraiInfo( */ val contrailSaveTime: Long, - var passPoints: MutableList?, // 用于算路的经停点 - var blackPoints: MutableList?, // 用于算路的黑名單點 + var passPoints: MutableList?=null, // 用于算路的经停点 + var blackPoints: MutableList?=null, // 用于算路的黑名單點 ) From 19eb8355d68c77ebbb735f57fe3020a23a7de8ff Mon Sep 17 00:00:00 2001 From: yangyakun Date: Fri, 11 Oct 2024 10:17:36 +0800 Subject: [PATCH 03/16] =?UTF-8?q?[6.7.0]=20[fea]=20[ui=E4=BF=AE=E6=94=B9]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../och/unmanned/taxi/ui/task/TaxiTaskModel.kt | 18 +++++++++--------- .../ItinerarySwitchModel.kt | 3 ++- .../ItinerarySwitchView.kt | 5 +---- .../layout/unmanned_routing_select_item.xml | 5 ++++- .../main/res/layout/unmanned_switch_biz.xml | 2 +- 5 files changed, 17 insertions(+), 16 deletions(-) rename OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/{ => itinerayswitch}/ItinerarySwitchModel.kt (83%) rename OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/{ => itinerayswitch}/ItinerarySwitchView.kt (95%) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt index 39f09f7157..45372c123c 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt @@ -625,7 +625,7 @@ object TaxiTaskModel { DebugView.printInfoMsg("[上报ArriveSite] success siteId=$siteId, isArriveAtEndSite=$isArriveAtEndSite") d(TAG, "submitArriveSite-onSuccess data=" + GsonUtil.jsonFromObject(data)) mDriveToNearestStationTask = null - LineManager.setLineInfo(null); + LineManager.setLineInfo(null) if (isArrivedNearestStation) {// 播报提醒 VoiceNotice.showNotice("已到达出车点") } @@ -807,7 +807,7 @@ object TaxiTaskModel { d(TAG, "queryCurrentTaskOnce ArriveAtEnd") //订单到站结束轨迹剩余里程就算和高德计算, 防止到站查询订单全程的显示被覆盖 - LineManager.setLineInfo(null); + LineManager.setLineInfo(null) TrajectoryAndDistanceManager.setStationPoint(null, null, -1L) destroyAmapNavi() @@ -882,7 +882,7 @@ object TaxiTaskModel { if (mDriveToNearestStationTask == null){ destroyAmapNavi() } - LineManager.setLineInfo(null); + LineManager.setLineInfo(null) TrajectoryAndDistanceManager.setStationPoint(null, null, -1L) } @@ -1228,7 +1228,7 @@ object TaxiTaskModel { return } - OchAutopilotAnalytics.triggerClickStartAutopilotTime(System.currentTimeMillis()); + OchAutopilotAnalytics.triggerClickStartAutopilotTime(System.currentTimeMillis()) DebugView.printInfoMsg("[启自驾] startAutoPilot") if (!checkCurrentTaskCondition()) { @@ -1291,9 +1291,9 @@ object TaxiTaskModel { resion = OchAutoPilotManager.canStartAutoPilotByDistance(it.lineId) } if(!StringUtils.isEmpty(resion)){ - ToastUtils.showShort(resion); - VoiceNotice.showNotice(resion); - return; + ToastUtils.showShort(resion) + VoiceNotice.showNotice(resion) + return } } // 4、ssm 给出数据 @@ -1319,7 +1319,7 @@ object TaxiTaskModel { return } - val sessionId = OchAutoPilotManager.startAutoPilot(parameters); + val sessionId = OchAutoPilotManager.startAutoPilot(parameters) DebugView.printInfoMsg("[启自驾] 调用成功") d( TAG, "start autopilot with parameter: %s", @@ -1513,7 +1513,7 @@ object TaxiTaskModel { mCurrentTaskWithOrder = null mDriveToNearestStationTask = null DebugView.printInfoMsg("[登出] 退出登陆") - LineManager.setLineInfo(null); + LineManager.setLineInfo(null) MogoStatusManager.getInstance().setTaxiUnmanedDriverPerformTask(TAG, false) MogoStatusManager.getInstance().setTaxiUnmanedDriverTakingOrders(TAG, false) MogoStatusManager.getInstance().setTaxiUnmanedDriverLineRoutingPerformTask(TAG, false) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/ItinerarySwitchModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/itinerayswitch/ItinerarySwitchModel.kt similarity index 83% rename from OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/ItinerarySwitchModel.kt rename to OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/itinerayswitch/ItinerarySwitchModel.kt index 1450f2e22d..e1c02a084e 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/ItinerarySwitchModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/itinerayswitch/ItinerarySwitchModel.kt @@ -1,6 +1,7 @@ -package com.mogo.och.unmanned.taxi.ui.task +package com.mogo.och.unmanned.taxi.ui.task.itinerayswitch import androidx.lifecycle.ViewModel +import com.mogo.och.unmanned.taxi.ui.task.TaxiTaskModel /** * @author XuXinChao diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/ItinerarySwitchView.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/itinerayswitch/ItinerarySwitchView.kt similarity index 95% rename from OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/ItinerarySwitchView.kt rename to OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/itinerayswitch/ItinerarySwitchView.kt index 7c609145ac..bc24b02e20 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/ItinerarySwitchView.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/itinerayswitch/ItinerarySwitchView.kt @@ -1,4 +1,4 @@ -package com.mogo.och.unmanned.taxi.ui.task +package com.mogo.och.unmanned.taxi.ui.task.itinerayswitch import android.content.Context import android.util.AttributeSet @@ -10,11 +10,8 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.findViewTreeViewModelStoreOwner import com.mogo.commons.module.status.MogoStatusManager import com.mogo.eagle.core.utilcode.kotlin.onClick -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.common.module.utils.FlowBus -import com.mogo.och.common.module.utils.ResourcesUtils import com.mogo.och.unmanned.taxi.R import com.mogo.och.unmanned.taxi.TaxiUnmannedDriverProvider import com.mogo.och.unmanned.taxi.constant.TaxiDriverEventConst diff --git a/OCH/taxi/unmanned-driver/src/main/res/layout/unmanned_routing_select_item.xml b/OCH/taxi/unmanned-driver/src/main/res/layout/unmanned_routing_select_item.xml index a10a9ee509..fb4194ca91 100644 --- a/OCH/taxi/unmanned-driver/src/main/res/layout/unmanned_routing_select_item.xml +++ b/OCH/taxi/unmanned-driver/src/main/res/layout/unmanned_routing_select_item.xml @@ -16,7 +16,10 @@ android:textColor="@color/white" android:textSize="@dimen/dp_40" tools:text="灰度路线11111111" - android:layout_width="wrap_content" + android:singleLine="true" + android:ellipsize="end" + app:layout_constraintEnd_toStartOf="@+id/actv_today_verify_num" + android:layout_width="0dp" android:layout_height="wrap_content"/> - Date: Fri, 11 Oct 2024 10:42:35 +0800 Subject: [PATCH 04/16] [6.7.0] add trace of data track --- .../business/identify/IdentifyFactory.kt | 38 ++++++++++++------- .../core/data/deva/chain/ChainConstant.kt | 2 + 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyFactory.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyFactory.kt index a264edfa63..3ef8f35565 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyFactory.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyFactory.kt @@ -9,7 +9,6 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotCarConfigListene import com.mogo.eagle.core.function.api.datacenter.obu.IMoGoObuStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarConfigListenerManager import com.mogo.eagle.core.function.call.obu.CallerObuWarningListenerManager -import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils.isT1T2 import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils.isTaxi import com.mogo.eagle.core.utilcode.mogo.thread.WorkThreadHandler import com.mogo.eagle.core.utilcode.util.ParseVersionUtils @@ -78,24 +77,25 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener, IMoGoAutopilotCarConf override fun handleMessage(msg: Message) { super.handleMessage(msg) - if(identify == null){ + if (identify == null) { if (dockerVersion != null && dockerVersion!!.isNotEmpty()) { try { val version = ParseVersionUtils.parseVersion(true, dockerVersion) - identify = if (version >= 30100 && isTaxi(FunctionBuildConfig.appIdentityMode)) { - FunctionBuildConfig.isBeautyMode = false - drawType("关闭感知优化模式") - DriverIdentify.originDataDrawer - } else { - FunctionBuildConfig.isBeautyMode = true - drawType("开启感知优化模式") - UserIdentify.beautifyDataDrawer - } + identify = + if (version >= 30100 && isTaxi(FunctionBuildConfig.appIdentityMode)) { + FunctionBuildConfig.isBeautyMode = false + drawType("关闭感知优化模式") + DriverIdentify.originDataDrawer + } else { + FunctionBuildConfig.isBeautyMode = true + drawType("开启感知优化模式") + UserIdentify.beautifyDataDrawer + } } catch (e: Exception) { drawType("解析docker异常:$dockerVersion") identify = UserIdentify.beautifyDataDrawer } - }else{ + } else { return } } @@ -118,13 +118,14 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener, IMoGoAutopilotCarConf when (msg.what) { MSG_CHECK -> { - if(startTime == 0L){ + if (startTime == 0L) { sendEmptyMessageDelayed(MSG_CHECK, 1000L) return } val endTime = System.nanoTime() val internal = TimeUnit.NANOSECONDS.toMillis(endTime - startTime) - if(internal >= 1000){ + if (internal >= 1000) { + lostFrame(internal.toString()) identify!!.clearOldMarker() } sendEmptyMessageDelayed(MSG_CHECK, 1000L) @@ -229,4 +230,13 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener, IMoGoAutopilotCarConf mDrawerHandler.sendMessage(message) } + @ChainLog( + linkChainLog = ChainConstant.CHAIN_TYPE_SOCKET_AUTOPILOT, + linkCode = ChainConstant.CHAIN_SOURCE_ADAS, + nodeAliasCode = ChainConstant.CHAIN_CODE_ADAS_LOST_FRAME, + paramIndexes = [0] + ) + private fun lostFrame(time: String) { + } + } \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt index e2820b7d97..bbc3498ff1 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt @@ -76,6 +76,8 @@ class ChainConstant { const val CHAIN_CODE_ADAS_IPC_REBOOT = "CHAIN_CODE_ADAS_IPC_REBOOT" const val CHAIN_CODE_ADAS_AUTOPILOT_INFO = "CHAIN_CODE_ADAS_AUTOPILOT_INFO" const val CHAIN_CODE_ADAS_COLD_START_STATE = "CHAIN_CODE_ADAS_COLD_START_STATE" + const val CHAIN_CODE_ADAS_LOST_FRAME = "CHAIN_CODE_ADAS_LOST_FRAME" + const val CHAIN_CODE_RECORD_NATIVE_LEAK = "CHAIN_CODE_RECORD_NATIVE_LEAK" const val CHAIN_CODE_RECORD_ANR = "CHAIN_CODE_RECORD_ANR" From 5d10b1c0088a847eccfa32772a385c821b035ec2 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Fri, 11 Oct 2024 10:56:13 +0800 Subject: [PATCH 05/16] =?UTF-8?q?[6.7.0]UI=E7=BB=86=E8=8A=82=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/AIDataCollectView.kt | 2 +- .../bg_take_over_reason_save.png | Bin 0 -> 25724 bytes .../main/res/layout/view_take_over_reason.xml | 3 --- .../hmi/bone/tab/adapter/MsgBoxTabAdapter.kt | 20 ++++++----------- .../drawable-xhdpi/icon_fm_mild_warning.png | Bin 0 -> 19132 bytes .../icon_fm_moderate_warning.png | Bin 0 -> 18710 bytes .../drawable-xhdpi/icon_fm_severe_warning.png | Bin 0 -> 15048 bytes .../res/drawable-xhdpi/icon_report_error.png | Bin 0 -> 15683 bytes .../res/drawable-xhdpi/icon_report_info.png | Bin 0 -> 20490 bytes .../drawable-xhdpi/icon_report_warning.png | Bin 0 -> 20687 bytes .../src/main/res/drawable/bg_fault_report.xml | 9 -------- .../src/main/res/drawable/bg_work_order.xml} | 0 .../main/res/layout/item_msg_toast_v2x.xml | 11 +++------ .../src/main/res/layout/item_tab_fm.xml | 21 ++++++++++++------ .../main/res/layout/item_tab_ipc_report.xml | 21 +++++++++++------- .../main/res/layout/layout_msg_box_bubble.xml | 2 +- .../src/main/res/layout/view_fault_reason.xml | 6 ++--- .../src/main/res/layout/view_msg_box_tab.xml | 2 +- .../src/main/res/layout/view_work_order.xml | 13 +++++------ 19 files changed, 48 insertions(+), 62 deletions(-) create mode 100644 core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/bg_take_over_reason_save.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_mild_warning.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_moderate_warning.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_severe_warning.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_report_error.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_report_info.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_report_warning.png delete mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_fault_report.xml rename core/function-impl/{mogo-core-function-devatools/src/main/res/drawable/bg_take_over_reason_save.xml => mogo-core-function-hmi/src/main/res/drawable/bg_work_order.xml} (100%) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectView.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectView.kt index 7d563665fa..91160223af 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectView.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectView.kt @@ -89,7 +89,7 @@ class AIDataCollectView @JvmOverloads constructor( clickListener?.onClose() } //接管记录日期 - tvDataCollectDate.text = millis2String(System.currentTimeMillis(), getYMDFormat()) + tvDataCollectDate.text = millis2String(System.currentTimeMillis()) val linearLayoutManager = LinearLayoutManager(context) linearLayoutManager.orientation = LinearLayoutManager.VERTICAL rvDataCollectList?.layoutManager = linearLayoutManager diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/bg_take_over_reason_save.png b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/bg_take_over_reason_save.png new file mode 100644 index 0000000000000000000000000000000000000000..3de655fea4130992cbc9f667ccfc723eaf53c8de GIT binary patch literal 25724 zcmXtaHpgF9AyiHDIAuo&-+p3435J``L+Ku0QZ8`Du=`{+mZCLwjRdxgdc+VWN&b3!R1n>lf@u@f$VZ(=V~D5t%N;7-)2#Uz!1xi8j z4eicK!KB}hH|Pqvvdy~2CNw7PiKn7y|NIdd6!8@GA4hEIUVF%=-SQbDn`d@AsRtWX zy3K~OSX=5_w(~!W?C3P&-wPV3#A(d)EZSv2U{pzeMm<(S!^8;0aMAiy4R#?}@{-Jl z>$c`qMU?^|^^$iGK0q7`fQZ%sJ7PqK&~*G`OX2t-OQ%xq7E5a%#c`F>wOVRTn8MUZ z%PD1Pr;qT?_1LDOmBlgrDpU3nc-=W686n#*X3!C)$#Tp;Oa0)nl`Bn?00vwZTwwfu zyBPp5^En^zr+@G#@@LZ6f6cn;_y+>%%3;YOjH0yWoT4i`Q0Xc93o{o6{}MON$AIc| zGO*LdO6)+4y2ezEIF#K!7!Jh8H0YykXXgm!Ne=eT$ncAWvPIGT#Qm>W{Qy6fVha@I z1E&SxQN6y8^elNZ)n-Zo=#0eCg^3Y0KJ4v4-F!V?4|rJ@hM9^{(keU)4RsPgA^rBZ z(6%rZV95As6W?5NCKM3;u)8(zy?2Cgy(%)X)F12b`{-Eu5;uf~6>fxJSxb>(I!$7R zm5>RU3At4A3RgVF6t#zl*C8nrw3GC~+BW;yX|-{m@I30J0jZod%=RS@LhVa$LzR2c zg6kK)TVIG&CG0v8QX1BT>h)Ni5}pYi>0{(4VrPPb%S^4lnN}SAbijjfqWIpGTu^`C$=nNvCx=?&FmN(Y1 zonH5bwk!#xW3zPX)w)y+A}^Q5*#K!nWo-<#*I18*pb#z%XBWjQLH4#{$XD9T!1NM9 zR^3v*GC-lrxw!iGgaZZXQ%*oW=IYlp!;n>S0)6-A!gq-1=45{V-tIOYAZ}Hs){uyc z4X(}F(#>C80?evN$bvSkh#*drGhfP)G|)r<$$NQ8w?>eD>Y01VGYTiKQK#|G&RJqI zf^1`lV-&JbMaVhueLf8L^< zwv~M??~=1tFW%R!j&=@4!Lj13&sg7GSzq?RhuVE!S+RQf4&IV79i$1VO_bGdkAYrp z8^>{-yMQv&CDDxjqWs0XGDn&E)`U`(Y9yz%kYA&r#cCEdhxtEdr&C*8ax5d-CoO)^+c= zk+e^G2_^hga4^h=AE2xYl0Gcm`732R ze&&bJHgl?JUgQye{R)X?jb4(07T0RkDYZm^!!Hek@Pq4xh4QCG5iFE)HVxHZ!j&%& z*YBmn2d6FM1aJ_!9a+_I)#^@}0zLcX-T9@g+WCksU>IUv#MWh#r`dV_Yj!kxVU6|( z2hFeh+_o$;&|f=$3ozd`Rk(~5P61;iX<{*1ERd{3iq~l35y?82Ci*AwkP{;8AH+Yr z9i0{BKwg;M?UHeP7LBa7meA{E;*QV5MKI3*n(Yl2Ac7mJ; zA?p>j?QQBc{J{LX?-os^)K?XppaUc~2RO2bQ^_KT2UjfOJysv1r~9-$%yBeZ;&0m^ zf1Bw#i3vo@pQlMYbyo)S#|}Qbrm-^Htx|cGc$ZU5hr+|t;(7-Ljh)x|${94oNHuOZ z3H&x8d|=8{%>K4>tfyw6ZdNTRS=+&7ZYr2Hpg6U&>U#*|b^kJ_-?!|YT{8|vvPu3iVGOIrVzmEQfA$Xp z3T^lmR8xT4H8$3E+Q^@qRxip8kx(HUP)V+YUx3Fjx#DLJ$daX+*$WrRS+R}?k<&IM ztrsUWzKk~9DxzL&c3Zyi2A1Yj&W$qD_Q$vO{j`FjBgx$tvUzC_x%XZ%MuO(7MC0W@ z_jBYniq&2u1!4FGkjf=qjSWgT&)W@Q+=0R`@gqE0^6NVRRVyIYtH}z>$YZ#YwXC`j ze&kjze00+n#H)aCbU#UqWZptEIoi^hu{in?Crw+=?O%70bkD(t(-oA$2E2+P`JCI} zft8~;p8IJi8v(IiDMpa!i^hM}gvVD_ZNZoZ+2m(v#(f6?2bl%92br&|#@YN_x7(bd zl*3u8VYu)&OmVLgSghRa<4{`pXu|vEd>!XckP-!e7L51v8Z6URXKv|5I7PQ0uJxZ8 zj;_zc{bvuxMv-KemI~ zQq5Q_>GmDUocWJZsqv6vH6oi+!5T5TTv{RePpRv6YeK^^#dAo(cWsQuLKPRVk=B$^ zWUgRfFDmRgvWi}6b`LxMsAL?$LT;h(jUksNaNNq2Q$>MzWKvx=Q6VnYmS_6S_qZ)P#J)@GFqbNo3M4G zE7qx+!+fYMXS%m$`{5{#qRMKYwH$FpZ~g*S^A#-Oq-ZaauB0M)*(KE1xOq9F?yGZ* zd(uDu&o2eVvz9V%zhn=00zP(Fk2mU+Y538d$J|biafwu6hs@2Tu9wW-jy?YXG&3}9 zULmhF9*2e~XG}I0Ge(532LkZ$Z1|6E@^s`5ZF#0#=?|K^O0OP$BAxLXK!0>kG>MdAiEO};*Do<885QZ?B5!gog@qKq>HYWIBq8Cbs%l}CU2 zV-F?dk%RH#J2)##muQImQc`PVTG$Wx6&U!IS`2KOJwD1EPTQ&k)6JXd7Rn~)ZyzRi zCBJ%Sw2s+XU9cT_g~^SV|0dLfe_xpRkbzY2+oehAHY3JMmM_&aw-l*}(ik(_jzrYZ zQ?@ZD8*>l5TKFAF5$R_J#`a>DH+{h>OEh(fvf;SaGX_iicHB%Av)28r451ms`>tq{ zE=KYwCsZ#!SfeqFFTc#^v&9{ZK(_E#%zD+MJ3{B$LVF*KK4H{QQ1p zj>6i{BYR)5)I#gMRws5_ZhXSQbtkMhj~+uCE>>}MyMD!X2{YP>;N}W4N95R(-{pYm z+Wq1HRoKYb(@S=`=)~>b9MH}`pA&bCE<}WkoMqo5@Zu`zKDPMPb9wzvq+$#2r03yS zFSjM{;25Y6$ZB8A%+iS830b!~M!lWy?{v*R>kZzALlC9#052SG4xcfsB;wqWd|TO5 zh(5^Z(JBu{-V`QYN>QO47H+@D(Qdn@zJbX<=z{BPLMt)iI zeRbVZ@y(0LUt^JnL%S2T^OUuH6gL`dN3dkGgHblQqzaxA?JND>W)vA=n$( zc;>W8!uH0MFukqu#$gW06R*qnp&wPUQaiRXl2+c_P;%8Dqe^$6$7hR=Fw+7@rN&po zf_K>2REE9fcwB#}jU?DG0IH>?-)>*i`j;j1d0XqekNT^DGa!v4I&*di1DEO`#^}A6 z7{-eevqu2j7V{3s^sr3zz|fAbKsqzgf%F!o4)vWUk)xd)@A;|{`iir7{y*cDmxglS zt<%pO6{`0Hz9?MgEgVx8_UuUK-6~haBy9CP+dJGT`OcPbN?$Uobr!t+IB~6$MVXG4{BnIwff{fk+`zd=}878ozZp$)$zNsIQXPh*Hwcb=s9@sbH8?ePbTQ>YR5N z?QJXx{A_3r+dLbNlFwgS)_@K~UMgtxEjxG|V#YyYNcw2Ma_)8WnyM>`i zhk7(Z%#mjz7-@3G=J0M>eKFu5AD*W5$7uUK((Y49ma0m=*et+{ueQn%;@-X@$Q*+= zQi4nLtN1Ybm@bmL*}x@7hgSdjFk?tFK{?rX8P5Gw0m^PA(AE^-(|$_dn+x3Q58rC@ zu$7!G&oHjH-}}k|UlzHSS*-20;&2zPABEoErFW>*pra%4+S}C?g=d#d;AKgS+vJVG zqrCNaC+6&;Og8Lo{GQJLh@bq+FOOf`Z{6z?wot}v34x<}VwG@FYBBeJepY^B82W3t zoS9@MTc}hc$d~>EX2p9`6psdx$DgswL(G@Sq?OxClFln5{}krxFU-b|2Wc+%{+oB# zNDdUY1Y5G~9*`g#Ex)*M!j6%UrCK=VyE+ho*OXzYxhky=+@r^OC|wrHI$v-8*Hxn|+!!*a0uGej z^7O7;TK5GPIKOqG&)71~X!;E~e^ou^+TlFeM$6XDzJoV9fC{kRf=g+4&I3a4US0~u z+y*B-2RRD5y9VB-U!pL+mU--7VBN>;FO0nRjD?x|h9&1(1a=*{6qV!MA1NueF^kHR zjADa4KRJ;D_T?0PWB%tpHEXGYn_1VWHUcVnQ(%1o!)`*|+|~eVE67Of&2W`1k5V3* zcAH05Z#(*qWl9eCy!^e|IM3Gbj__m(7quA@QLOGXEbK0JcY^pWWnebeHCX5!tn+Da z2d)1cnlw6mH|F7gu;kia&htO(90!f%bU+BDbREHfHjRz+V+9keLCQCV@*k_rjGHVl zn=aOj)8n~p=@y1o5o&Df6TC_zqU24qe7l4#4;MjCM=(z)w24@_iq3uCbl|R6=>JZu zyx5ObGPT$iv(><^`sbKbSwFD-Pvwbn?5UATOR?f>k7V&-%O2-)L1ySyaj)xK8}FC_ zNyMeyKG5WTJS55R{Ce+3)q3j94jk50F8;qSjB*1~_qk?UG8}}BSt9%9Xj;P47-lz; zTYLR#12~PHe#MT!@tsRQOti89~n|^kl8kA+H8JnzOzo3HS`afjb6V&9H zv+wF<+4N2;R!5eVFHc2>lvkQPSTDMy(9AcYVDF|qJV(to!pgZ`{P2^9*cjSP?|H6; z+{m21@-0d5_}q*smmP7_e9@$aP}w9ylv@+l&Qwdh04ZdvfvZuOHJh zl$Q50+qVl+-Jrv0IOfrv{D(A|-L7?%*`8EUzf$VFGQ_tbaO1Z_va`S*zV6ntuwOt0 z7HkP+-*$%w4wm1XO}YW6$RJp{=9!IWN#pn7<5%57gYkhA`&0OSRc0`Jp z#}-wyoa42lnTJr+`5YI_0=!#EI$0~UNbWxOHoZsp4qmpUiz$0^;bLhZX4PY$DKhSr z2CjV$P}*L4D|Hx0mi?9l*VBiQ5{@X3y5A=Zl-5*4JtqM!KAY+#-^jG|Eozu+Ohs0= zRssk3*(BMOD&noN+A>W1+Pp%D_wY_Qk1bA12X8NcT3cgT{IY~g5e}9G+@sda2#R;H zYLv!IGoK?~RMUWSS{4gHDYr(6GC6{VxBE5c`n9WjFzfgU^((!aJM@!$@0AQn9Df6! zZG>M>DE7y$N>!`9)fbezg7o4&>~%&sHPHDdl&`b>P1#=g=B<@56lNa!Z$zjBCEt~w zTBwRfNe5JGud;(rwxuRJ39K|{mueAf!aM7z!uq4!o>uc@&W%^}Ovq7e+Ju|R=xby0 zLyTK6Dfo|E0T@vT%-gXa1r|g-I#$2D2h6{+9|lPXs(J`T9opFUtGBm0D&y;~rR~dH zCt@H*VLd_R{``{#QhXtl(RN3oTMbH~lr`kM!!1oPzl6WNE5kd<(KP~i=q=cO#q-N< zP%?SdkTEyK}=?rKfmdun{fBPH7hvo@q6=VE=c8?gx!w;SWN zR8dX~Wuj4GXnqSf81tfPIFhd73x6(O=>Z+fa69%2D^4lQNA?v*(4|?Ty@HTA)u*>o zK8Z7vs-%C)7-7b_2x8G8vVp~0y$;7kFTo0K`!3>MnA|Jp`{66q_vr<{hE-vW0&TV` zfFAwc(VxRf8Gvh!&FIir3Ya?bA2=FXP>i-xHTru`@m8l2}pRP zvC%welA{!}Wt-kJRgwYA+Y22<>O1zlRUOovcvpPOT5ugY2_6oUUb3yV_-n_mH+IY& zzpdy)nTZj_CxySiI!To_>b782SZ(qt2lbD&&`;qn1_O;ivFv=EWOG?Nqw)uI`E<#L zeL>M&%tOM`$Pco@4tFRt)8Ft@$MMtHUPz!x`PJkC@OOqC&X9-_I zhd5vcUJD&$5zf?;AgZgkUp5R)T18$}1Db&=7=^+w&F)MM+`x5@T9Y{j_*CqWX3WeK zaFpEnF!=fVQDncb@4Lt`a5GM4N@J`d3-20o>156QXNu(dAaq%P6i1k|OIZ5=yD`u~ z+KSEwXkMJ>o97p#$Y6dq%rmTolR=Pf;CX=y0M`&@Tth{w3@7tBm~J>NTsl5*A-hAA zaSX+sz)w^PpX7O+Rgy2Mx28yYyhy5@eba0VZU~pOc5ZaQ0zW6S2(FwLRH5-8 z2y}~2w|xS3t>1;?}Dx~m=Lh{yUWf4Vl)Wz!2kDaUXd|N9Y` zWv2+gPq+EN_7`{0!se*;rLM(trW`4+QrMLdZc!ZLXiQ4yY20@KS8OHsw)6;ND*9w= z+FPHp@<7aEssIohmiTO?G0)KABbRCUmJ?jnP|U;uNX{|jMXj3xfu?c`mOpfIqlg^s zi|ZK*lNCiEtCS`83M4%g*QY}^N|ac6bW7KM0`DV;|3ZIbd6R<=M%59%>vHYDo3cxF zn?O>>k}+($YH;E9=kw&dp|Hc9o>xgS?4xtMzd-XdO5bh0bXA~NYjK~!{D!5+ZeQa} z>%V)mz~mL)Cxgo+Gy8(WVhb&(-u%Z&^4#Fk;V8@9mAg}-Lb%c69g)j$6V}9)1*0?Okl4Ngl^;7MM|d{+F};iX)i&zMoG$~U!Gw*H+K?4Y*7YzIk$AlU<(b_6|D{;@4i{-0Y4f~OgSzz7nbt9IE(#DAJkR_j! ziIEC?Hx`MAa`;WbY^44w(P-%=yAd(4EgUccqnj6zwBFFGHwmJ>)(sxGFWMWq@?tGNt1g}zjrlX)o3

9%C}v-ay+nF?z+hBv+q=t7Nl!Z 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 NVr_r1#LDaG{{i^lJ=g#M literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_take_over_reason.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_take_over_reason.xml index bb97c8a3a4..2735fe0efb 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_take_over_reason.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_take_over_reason.xml @@ -39,7 +39,6 @@ android:text="@string/take_over_type" android:textSize="@dimen/sp_38" android:textColor="@color/white" - android:textStyle="bold" app:layout_constraintTop_toBottomOf="@id/tvTakeOverTitle" app:layout_constraintLeft_toLeftOf="@id/tvTakeOverTitle" android:layout_marginTop="@dimen/dp_65" @@ -69,7 +68,6 @@ android:text="@string/take_over_reason" android:textSize="@dimen/sp_38" android:textColor="@color/white" - android:textStyle="bold" app:layout_constraintTop_toBottomOf="@id/tvTakeOverType" app:layout_constraintLeft_toLeftOf="@id/tvTakeOverType" android:layout_marginTop="@dimen/dp_36" @@ -99,7 +97,6 @@ android:text="@string/fault_note" android:textSize="@dimen/sp_38" android:textColor="@color/white" - android:textStyle="bold" app:layout_constraintTop_toBottomOf="@id/tvTakeOverReason" app:layout_constraintLeft_toLeftOf="@id/tvTakeOverReason" android:layout_marginTop="@dimen/dp_36" diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/adapter/MsgBoxTabAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/adapter/MsgBoxTabAdapter.kt index 9b840e0ed4..8e3841c05e 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/adapter/MsgBoxTabAdapter.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/adapter/MsgBoxTabAdapter.kt @@ -8,7 +8,6 @@ import android.view.ViewGroup import android.widget.ImageView import android.widget.TextView import androidx.core.content.res.ResourcesCompat -import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import com.mogo.eagle.core.data.enums.DataSourceType import com.mogo.eagle.core.data.enums.EventTypeEnumNew @@ -213,15 +212,15 @@ class MsgBoxTabAdapter(private val activity: Activity) : when(receiveFaultLevel[0]){ 0->{ //重度预警样式 - holder.ivFmImage.setImageDrawable(getDrawable(R.drawable.icon_fm_stop_normal)) + holder.ivFmImage.setImageDrawable(getDrawable(R.drawable.icon_fm_severe_warning)) } 1,2,3->{ //中度预警样式 - holder.ivFmImage.setImageDrawable(getDrawable(R.drawable.icon_fm_reduce_normal)) + holder.ivFmImage.setImageDrawable(getDrawable(R.drawable.icon_fm_moderate_warning)) } 4,5->{ //轻度预警样式 - holder.ivFmImage.setImageDrawable(getDrawable(R.drawable.icon_fm_warning_normal)) + holder.ivFmImage.setImageDrawable(getDrawable(R.drawable.icon_fm_mild_warning)) } } receiveFaultLevel.forEach {level-> @@ -248,7 +247,7 @@ class MsgBoxTabAdapter(private val activity: Activity) : }else{ holder.tvFmAction.text = "建议操作:暂无" //轻度预警样式 - holder.ivFmImage.setImageDrawable(getDrawable(R.drawable.icon_fm_warning_normal)) + holder.ivFmImage.setImageDrawable(getDrawable(R.drawable.icon_fm_mild_warning)) } } //故障策略 @@ -342,18 +341,18 @@ class MsgBoxTabAdapter(private val activity: Activity) : || reportEntity.resultList.contains(RESULT_REMOTEPILOT_DISABLE) ) { //Error - holder.ivReportImage.setImageDrawable(getDrawable(R.drawable.icon_report_error_normal)) + holder.ivReportImage.setImageDrawable(getDrawable(R.drawable.icon_report_error)) holder.tvReportLevel.text = "Error" } else if(reportEntity.resultList.contains(RESULT_AUTOPILOT_INFERIOR) || reportEntity.resultList.contains(RESULT_SHOW_WARNING) || reportEntity.resultList.contains(RESULT_REMOTEPILOT_INFERIOR) ){ //Warning - holder.ivReportImage.setImageDrawable(getDrawable(R.drawable.icon_report_warning_normal)) + holder.ivReportImage.setImageDrawable(getDrawable(R.drawable.icon_report_warning)) holder.tvReportLevel.text = "Warning" }else { //INFO - holder.ivReportImage.setImageDrawable(getDrawable(R.drawable.icon_report_info_normal)) + holder.ivReportImage.setImageDrawable(getDrawable(R.drawable.icon_report_info)) holder.tvReportLevel.text = "Info" } @@ -499,11 +498,6 @@ class MsgBoxTabAdapter(private val activity: Activity) : TimeUtils.millis2String(it[position].timestamp, getHourMinFormat()) holder.tvV2XContent.text = v2XMsg.content holder.ivV2XImage.setImageDrawable(ResourcesCompat.getDrawable(activity.resources,EventTypeEnumNew.getUpdateIconRes(v2XMsg.type),null)) - if(v2XMsg.type== EventTypeEnumNew.TYPE_VERIFICATION_SUCCESSFUL.poiType||v2XMsg.type == EventTypeEnumNew.TYPE_DEVICE_STATUS_NORMAL.poiType){ - holder.itemView.setBackgroundResource(R.drawable.bg_temp_v2x_success) - }else{ - holder.itemView.setBackgroundResource(R.drawable.bg_msg_box_v2x) - } if(v2XMsg.communicationType.isNullOrEmpty()){ holder.tvV2XTitle.text = EventTypeEnumNew.getEventTitle(v2XMsg.type) }else{ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_mild_warning.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_mild_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..4d58ebd616680f6e0669402a2f9ae6cb6d0f414d GIT binary patch literal 19132 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 LNkvXXu0mjf_TQzj literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_moderate_warning.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_moderate_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..909836b26757ec4372e58059f74cc8bf51545db1 GIT binary patch literal 18710 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 literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_report_info.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_report_info.png new file mode 100644 index 0000000000000000000000000000000000000000..52e5f427cb0e701265333829db0a686082c9197f GIT binary patch literal 20490 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

Zj)d0 z(W4FfBS6NpR|9Me5SfjG68pAh2}HJ-b?}ib;ieb%dM`zZWo&0pv2O|;Hu5R}i4u<$ z;xi{?DsG<0RL$NhehDcaImGuT^eG71>+u6wtGm~tK1aex;~V(_OZS>SpgE7z1Dwca zSdNbIvjpYDHcKZu%4+bj`6iQ9zF$KY4{q6ygbe|YI)M+qTLj3i{G~YWyK5C-j4*$HQB=$a29|)vd-{E__NZFzWn9p#n`A56c{X zJwru6;yfNN=w~YZvspi^B5KFOe6AeMDE0$&2BjHd*VR>R3i80FI*NG|u8xz$<0&+(5h>ih$FNRZCqd2TT+)6r~F&WF1f; zdZ~ehPs$B30li=&x<0@mr*wgbtPgz1Uv5PpBJQ1lq<#rdoEI~Cy+Ea~I^mS!>&v$Q zM<~j0@H>Hy`kjhExs%RIQP-Ds_Ud;Em}q_@0IJ)K0`J|b8}EDqcnYxupk$&40iu1XB+=xKxhOYA|T~PHm4xI|l>(s@U6G#p+ME@U3_wB|q&FNqO0000 - - - - \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/bg_take_over_reason_save.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_work_order.xml similarity index 100% rename from core/function-impl/mogo-core-function-devatools/src/main/res/drawable/bg_take_over_reason_save.xml rename to core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_work_order.xml diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_toast_v2x.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_toast_v2x.xml index 3f278af7a0..08d4da80fe 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_toast_v2x.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_toast_v2x.xml @@ -1,14 +1,11 @@ \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_tab_fm.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_tab_fm.xml index 084da8bebf..de601df2ae 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_tab_fm.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_tab_fm.xml @@ -2,17 +2,19 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + android:paddingBottom="@dimen/dp_26"> @@ -20,10 +22,11 @@ android:id="@+id/tvFmTitle" android:layout_width="@dimen/dp_0" android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="@id/ivFmImage" + app:layout_constraintTop_toTopOf="parent" app:layout_constraintLeft_toRightOf="@id/ivFmImage" app:layout_constraintRight_toLeftOf="@id/tvFmShowStatus" - android:layout_marginStart="@dimen/dp_30" + android:layout_marginStart="@dimen/dp_14" + android:layout_marginTop="@dimen/dp_26" android:textSize="@dimen/sp_38" android:textColor="@color/white" /> @@ -54,6 +57,7 @@ app:layout_constraintRight_toRightOf="@id/tvFmShowStatus" android:textColor="#CCCCCC" android:textSize="@dimen/sp_32" + android:layout_marginTop="@dimen/dp_6" /> @@ -66,6 +70,7 @@ app:layout_constraintRight_toRightOf="@id/tvFmShowStatus" android:textColor="#CCCCCC" android:textSize="@dimen/sp_32" + android:layout_marginTop="@dimen/dp_6" /> @@ -79,6 +84,7 @@ android:textColor="#CCCCCC" android:textSize="@dimen/sp_32" android:visibility="gone" + android:layout_marginTop="@dimen/dp_6" /> @@ -92,6 +98,7 @@ android:textColor="#CCCCCC" android:textSize="@dimen/sp_32" android:visibility="gone" + android:layout_marginTop="@dimen/dp_6" /> @@ -102,10 +109,10 @@ app:layout_constraintTop_toBottomOf="@id/tvFmReason" app:layout_constraintLeft_toLeftOf="@id/tvFmReason" app:layout_constraintRight_toRightOf="@id/tvFmShowStatus" - android:paddingBottom="@dimen/dp_30" android:textColor="#CCCCCC" android:textSize="@dimen/sp_32" android:visibility="gone" + android:layout_marginTop="@dimen/dp_6" /> \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_tab_ipc_report.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_tab_ipc_report.xml index ba364ff59a..3ade91511f 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_tab_ipc_report.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_tab_ipc_report.xml @@ -2,15 +2,16 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + android:paddingBottom="@dimen/dp_26"> @@ -18,12 +19,13 @@ android:id="@+id/tvReportLevel" android:layout_width="@dimen/dp_0" android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="@id/ivReportImage" + app:layout_constraintTop_toTopOf="parent" app:layout_constraintLeft_toRightOf="@id/ivReportImage" app:layout_constraintRight_toLeftOf="@id/tvReportShowStatus" android:textColor="@color/white" android:textSize="@dimen/sp_38" - android:layout_marginStart="@dimen/dp_30" + android:layout_marginStart="@dimen/dp_14" + android:layout_marginTop="@dimen/dp_26" /> diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_msg_box_bubble.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_msg_box_bubble.xml index e8a0ce25ed..11930e818d 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_msg_box_bubble.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_msg_box_bubble.xml @@ -7,7 +7,7 @@ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_fault_reason.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_fault_reason.xml index 4315bbcaff..6e8e28b552 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_fault_reason.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_fault_reason.xml @@ -34,13 +34,11 @@ android:id="@+id/tvFaultTime" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="@string/fault_open_time" android:textColor="@color/white" android:textSize="@dimen/sp_32" app:layout_constraintTop_toTopOf="@id/tvFaultTitle" app:layout_constraintBottom_toBottomOf="@id/tvFaultTitle" - app:layout_constraintEnd_toEndOf="@id/viewTitleBg" - android:layout_marginEnd="@dimen/dp_30" + app:layout_constraintRight_toRightOf="@id/tvFaultType" /> Date: Fri, 11 Oct 2024 11:10:32 +0800 Subject: [PATCH 06/16] =?UTF-8?q?[6.7.0]=20[fea]=20[=E6=8E=A5=E9=A9=B3?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=AB=99=E7=82=B9mark]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../och/common/module/map}/MapMakerManager.kt | 2 +- .../com/mogo/och/data/bean/BusStationBean.java | 2 +- .../com/mogo/och/weaknet/model/OrderModel.kt | 17 +++++++++++++++++ .../routingrunning/RoutingRunningView.kt | 3 +-- .../taxi/ui/task/TaxiCurrentTaskFragment.kt | 2 +- 5 files changed, 21 insertions(+), 5 deletions(-) rename OCH/{taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/utils => common/common/src/main/java/com/mogo/och/common/module/map}/MapMakerManager.kt (98%) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/utils/MapMakerManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/map/MapMakerManager.kt similarity index 98% rename from OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/utils/MapMakerManager.kt rename to OCH/common/common/src/main/java/com/mogo/och/common/module/map/MapMakerManager.kt index ab5901c9cc..191904b632 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/utils/MapMakerManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/map/MapMakerManager.kt @@ -1,4 +1,4 @@ -package com.mogo.och.unmanned.taxi.utils +package com.mogo.och.common.module.map import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger diff --git a/OCH/common/data/src/main/java/com/mogo/och/data/bean/BusStationBean.java b/OCH/common/data/src/main/java/com/mogo/och/data/bean/BusStationBean.java index e8c825f401..2d40aeaf63 100644 --- a/OCH/common/data/src/main/java/com/mogo/och/data/bean/BusStationBean.java +++ b/OCH/common/data/src/main/java/com/mogo/och/data/bean/BusStationBean.java @@ -17,7 +17,7 @@ public class BusStationBean { private double lon; //高精坐标 private double lat; //高精坐标 private int drivingStatus;//行驶信息,0初始值;1已经过;2当前站;3未到站 - private boolean leaving; + private boolean leaving;// 为出发false 出发true private String introduction;// 站点简介 private boolean isPlayTts; private int pointType; // 1:途径点 2:禁行点 3:站点 diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt index 03906c4e3f..5e1f49dfeb 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt @@ -22,12 +22,14 @@ import com.mogo.och.common.module.manager.socket.cloud.OCHSocketMessageManager import com.mogo.och.common.module.manager.socket.lan.LedScreenManager import com.mogo.och.common.module.manager.transform.OchTransform import com.mogo.och.common.module.manager.transform.OchTransformDispatch +import com.mogo.och.common.module.map.MapMakerManager import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.common.module.utils.NumberFormatUtil import com.mogo.och.common.module.utils.OCHThreadPoolManager import com.mogo.och.common.module.utils.ResourcesUtils import com.mogo.och.common.module.utils.RxUtils import com.mogo.och.shuttle.weaknet.R +import com.mogo.och.weaknet.constant.BusConst import com.mogo.och.weaknet.repository.db.bean.TaskSiteDataBean import com.mogo.och.weaknet.repository.RepositoryManager import com.mogo.och.weaknet.repository.exception.DataException @@ -267,6 +269,19 @@ object OrderModel { * 车机端展示 三站: 中间为即将到到达或者刚到达的站 */ private fun updateBusStatus() { + val (startStation, endStation) = LineManager.getStations() + if(startStation!=null&&endStation!=null){ + MapMakerManager.removeAllMapMarkerByOwner(TAG) + if(startStation.isLeaving){// 出发需要移除 + MapMakerManager.removeMapMaker(BusConst.BUS_START_MAP_MAKER,startStation.lat,startStation.lon) + }else{// 为出发展示 + MapMakerManager.addMapMaker(TAG, BusConst.BUS_START_MAP_MAKER,startStation.lat,startStation.lon,R.raw.star_marker) + } + MapMakerManager.addMapMaker(TAG, BusConst.BUS_END_MAP_MAKER,startStation.lat,startStation.lon,R.raw.end_marker) + }else{ + MapMakerManager.removeAllMapMarkerByOwner(TAG) + } + LineModel.stationList?.let { if (LineModel.startTaskMessage()) { //默认是第一站到站查询 LineManager.lineInfos?.lineName?.let { lineName-> @@ -437,6 +452,8 @@ object OrderModel { ToastUtils.showShort(ResourcesUtils.getString(R.string.shuttle_logout_error)) return@execute } + MapMakerManager.removeAllMapMarkerByOwner(TAG) + BusTrajectoryManager.getInstance().stopTrajReqLoop(); LoginStatusManager.loginOut() } } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/routingrunning/RoutingRunningView.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/routingrunning/RoutingRunningView.kt index 992c5e7e24..23b92e2589 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/routingrunning/RoutingRunningView.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/routingrunning/RoutingRunningView.kt @@ -25,7 +25,7 @@ import com.mogo.och.unmanned.taxi.ui.routing.errorpoint.ReportErrorPointDialog import com.mogo.och.unmanned.taxi.ui.routing.RoutingSwitchModel import com.mogo.och.unmanned.taxi.ui.routing.TaxiRoutingFeedbackDialog import com.mogo.och.unmanned.taxi.ui.routing.TaxiRoutingModel -import com.mogo.och.unmanned.taxi.utils.MapMakerManager +import com.mogo.och.common.module.map.MapMakerManager import com.mogo.och.unmanned.taxi.utils.TaskUtils import kotlinx.android.synthetic.main.unmanned_routing_running.view.actv_current_itinerary_end_name import kotlinx.android.synthetic.main.unmanned_routing_running.view.actv_current_itinerary_start_name @@ -37,7 +37,6 @@ import kotlinx.android.synthetic.main.unmanned_routing_running.view.actv_time_en import kotlinx.android.synthetic.main.unmanned_routing_running.view.goutp_show_routing_info import kotlinx.android.synthetic.main.unmanned_routing_running.view.include_empty import kotlinx.android.synthetic.main.unmanned_routing_running.view.naviToStart -import kotlinx.coroutines.flow.map class RoutingRunningView: ConstraintLayout, RoutingRunningModel.RoutingRuningCallback, ICommonNaviChangedCallback { diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiCurrentTaskFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiCurrentTaskFragment.kt index 2e264384f8..c38147ef76 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiCurrentTaskFragment.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiCurrentTaskFragment.kt @@ -41,7 +41,7 @@ import com.mogo.och.unmanned.taxi.constant.TaxiDriverEventConst import com.mogo.och.unmanned.taxi.constant.TaxiUnmannedConst.Companion.TAXI_END_MAP_MAKER import com.mogo.och.unmanned.taxi.constant.TaxiUnmannedConst.Companion.TAXI_START_MAP_MAKER import com.mogo.och.unmanned.taxi.constant.TaxiUnmannedConst.Companion.TYPE_MARKER_TAXI_ORDER -import com.mogo.och.unmanned.taxi.utils.MapMakerManager +import com.mogo.och.common.module.map.MapMakerManager import com.mogo.och.unmanned.taxi.utils.TaskUtils import kotlinx.android.synthetic.main.unmanned_task_fragment_current.cancelOrder import kotlinx.android.synthetic.main.unmanned_task_fragment_current.endPoint From 7bbd260b997fc22dcec163c9ee18292a44da0f1a Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Fri, 11 Oct 2024 11:45:28 +0800 Subject: [PATCH 07/16] =?UTF-8?q?[6.7.0]=E7=BA=A2=E7=BB=BF=E7=81=AF?= =?UTF-8?q?=E8=87=AA=E8=BD=A6=E6=84=9F=E7=9F=A5=E9=BB=98=E8=AE=A4=E5=B1=95?= =?UTF-8?q?=E7=A4=BA=EF=BC=8C=E5=8E=BB=E6=8E=89=E8=BF=90=E8=90=A5=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF=E7=BA=A2=E7=BB=BF=E7=81=AF=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datacenter/v2x/TrafficLightDispatcher.kt | 66 ++++++++----------- .../hmi/ui/operate/OperatePanelLayout.kt | 27 -------- .../function/hmi/ui/setting/SOPSettingView.kt | 22 ------- .../hmi/ui/widget/SingleTrafficLightView.kt | 4 +- .../src/main/res/layout/view_sop_setting.xml | 29 +------- ...rate_panel_preference_details_business.xml | 12 ---- .../eagle/core/data/config/HmiBuildConfig.kt | 13 ---- 7 files changed, 31 insertions(+), 142 deletions(-) diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/v2x/TrafficLightDispatcher.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/v2x/TrafficLightDispatcher.kt index 87bf10f51f..48fff17aeb 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/v2x/TrafficLightDispatcher.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/v2x/TrafficLightDispatcher.kt @@ -150,18 +150,16 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight if(light.nextState == null || light.nextState == FusionTrafficLightOuterClass.FusionLightState.STATE_OFF_FUSION || light.nextTwoState == null || light.nextTwoState == FusionTrafficLightOuterClass.FusionLightState.STATE_OFF_FUSION){ - if (HmiBuildConfig.isShowCarSourceTrafficLightView) { - var lightRemain = light.duration.toInt() - val source = when (trafficLights.source) { - 1 -> DataSourceType.TELEMATIC_UNION_V2I - 2 -> DataSourceType.TELEMATIC_UNION_V2N - else -> { - lightRemain = 0 - DataSourceType.TELEMATIC - } + var lightRemain = light.duration.toInt() + val source = when (trafficLights.source) { + 1 -> DataSourceType.TELEMATIC_UNION_V2I + 2 -> DataSourceType.TELEMATIC_UNION_V2N + else -> { + lightRemain = 0 + DataSourceType.TELEMATIC } - onTrafficLightPlusSource(convert(light.state), lightRemain, source) } + onTrafficLightPlusSource(convert(light.state), lightRemain, source) }else{ Log.i(TAG,"current state="+light.state+" current duration="+light.duration+ " nextState="+light.nextState+" nextDuration="+light.nextDuration+ @@ -305,27 +303,25 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight */ override fun onEnterCrossRoad(enter: Boolean) { CallerLogger.d("${SceneConstant.M_D_C}${TAG}", "onEnterCrossRoad enter = $enter ") - if (HmiBuildConfig.isShowCarSourceTrafficLightView) { - return - } - if (!enter) { - Handler().postDelayed({ - hasAiLightStatus = false - hasObuLightStatus = false - hasFusionLightStatus = false - }, 5000) - if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { - CallerTelematicManager.sendMsgToAllClients( - TelematicConstant.HIDE_TRAFFIC_LIGHT, - "0".toByteArray() - ) - } - //如果没有OBU灯态则进行隐藏,如果有OBU灯态,则交由OBU管理 - if (!hasObuLightStatus) { - CallerTrafficLightListenerManager.resetTrafficLightStatus(!hasObuLightStatus) -// hide("云端离开路口隐藏", DataSourceType.AICLOUD) - } - } + +// if (!enter) { +// Handler().postDelayed({ +// hasAiLightStatus = false +// hasObuLightStatus = false +// hasFusionLightStatus = false +// }, 5000) +// if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { +// CallerTelematicManager.sendMsgToAllClients( +// TelematicConstant.HIDE_TRAFFIC_LIGHT, +// "0".toByteArray() +// ) +// } +// //如果没有OBU灯态则进行隐藏,如果有OBU灯态,则交由OBU管理 +// if (!hasObuLightStatus) { +// CallerTrafficLightListenerManager.resetTrafficLightStatus(!hasObuLightStatus) +//// hide("云端离开路口隐藏", DataSourceType.AICLOUD) +// } +// } } /** @@ -336,9 +332,6 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight "${SceneConstant.M_D_C}${TAG}", "onTrafficRequestError hasObuLightStatus = $hasObuLightStatus ------> " ) - if (HmiBuildConfig.isShowCarSourceTrafficLightView) { - return - } CallerTrafficLightListenerManager.resetTrafficLightStatus(hasAiLightStatus) hasAiLightStatus = false // if (!hasObuLightStatus) { @@ -515,9 +508,6 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight } private fun updateTrafficLight(trafficLightResult: TrafficLightResult) { - if(HmiBuildConfig.isShowCarSourceTrafficLightView){ - return - } val currentTrafficLight = trafficLightResult.currentRoadTrafficLight() CallerLogger.d( "${SceneConstant.M_D_C}${TAG}", @@ -536,7 +526,7 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight } private fun filterTelematicUnion(source: DataSourceType): Boolean { - return HmiBuildConfig.isShowCarSourceTrafficLightView && source != DataSourceType.TELEMATIC_UNION_V2N && source != DataSourceType.TELEMATIC_UNION_V2I && source != DataSourceType.TELEMATIC + return source != DataSourceType.TELEMATIC_UNION_V2N && source != DataSourceType.TELEMATIC_UNION_V2I && source != DataSourceType.TELEMATIC } fun destroy() { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt index dd3966d056..dd19d91f7e 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt @@ -652,8 +652,6 @@ class OperatePanelLayout : LinearLayout { class BusinessPreferenceFragmentCompat : OperatePanelDetailBase() { companion object { - private const val KEY_RED_OR_GREEN_LIGHT_MARKER = "red_or_green_light_marker" - private const val KEY_RED_OR_GREEN_LIGHT_MERGE_MARKER = "red_or_green_light_merge_marker" private const val KEY_FAULT_REPORT_TIP = "fault_report_tip" private const val KEY_LIMIT_SPEED_MARKER = "limit_speed_marker" private const val KEY_WEATHER_EFFECT_SWITCH = "weather_effect_switch" @@ -666,12 +664,6 @@ class OperatePanelLayout : LinearLayout { override fun getDefaultVal(pref: Preference): Any? { when (pref.key) { - KEY_RED_OR_GREEN_LIGHT_MARKER -> { - return HmiBuildConfig.isShowTrafficLightView - } - KEY_RED_OR_GREEN_LIGHT_MERGE_MARKER -> { - return HmiBuildConfig.isShowCarSourceTrafficLightView - } KEY_FAULT_REPORT_TIP -> { return FunctionBuildConfig.isReportWarning } @@ -748,25 +740,6 @@ class OperatePanelLayout : LinearLayout { override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean { when (preference.key) { - KEY_RED_OR_GREEN_LIGHT_MARKER -> { - val isChecked = newValue as? Boolean ?: false - hmiAction("SOP 红绿灯标识开关, ", isChecked) - HmiBuildConfig.isShowTrafficLightView = isChecked - clickEventAnalytics("红绿灯标识", isChecked) - if (isChecked) { - CallerHmiManager.showTrafficLightView() - } else { - CallerHmiManager.hideTrafficLightView() - } - return true - } - KEY_RED_OR_GREEN_LIGHT_MERGE_MARKER -> { - val isChecked = newValue as? Boolean ?: false - hmiAction("SOP 红绿灯车端来源标识开关, ", isChecked) - clickEventAnalytics("红绿灯车端融合标识", isChecked) - HmiBuildConfig.isShowCarSourceTrafficLightView = isChecked - return true - } KEY_FAULT_REPORT_TIP -> { val isChecked = newValue as? Boolean ?: false hmiAction("SOP 是否开启异常上报, ", isChecked) 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 e613c87307..b4646a4443 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 @@ -58,7 +58,6 @@ import kotlinx.android.synthetic.main.view_sop_setting.view.rbThirty import kotlinx.android.synthetic.main.view_sop_setting.view.rgFusionMode import kotlinx.android.synthetic.main.view_sop_setting.view.rgPullTime import kotlinx.android.synthetic.main.view_sop_setting.view.scCarAperture -import kotlinx.android.synthetic.main.view_sop_setting.view.scCarUnionTrafficLight import kotlinx.android.synthetic.main.view_sop_setting.view.scConnectionSwitch import kotlinx.android.synthetic.main.view_sop_setting.view.scDemoMode import kotlinx.android.synthetic.main.view_sop_setting.view.scDrawPointCloudData @@ -83,7 +82,6 @@ import kotlinx.android.synthetic.main.view_sop_setting.view.scShowBagRecordWindo import kotlinx.android.synthetic.main.view_sop_setting.view.scSpeedLimit import kotlinx.android.synthetic.main.view_sop_setting.view.scSweeperModeSwitch import kotlinx.android.synthetic.main.view_sop_setting.view.scTakeOverRemind -import kotlinx.android.synthetic.main.view_sop_setting.view.scTrafficLight import kotlinx.android.synthetic.main.view_sop_setting.view.scV2ISwitch import kotlinx.android.synthetic.main.view_sop_setting.view.scV2NSwitch import kotlinx.android.synthetic.main.view_sop_setting.view.scV2XSwitch @@ -718,26 +716,6 @@ internal class SOPSettingView @JvmOverloads constructor( * 其他类别开关设置 */ private fun otherSetting() { - //红绿灯标识开关 - scTrafficLight.isChecked = !HmiBuildConfig.isShowTrafficLightView - scTrafficLight.setOnCheckedChangeListener { _, isChecked -> - hmiAction("SOP 红绿灯标识开关, ", isChecked) - clickEventAnalytics("红绿灯标识",isChecked) - if (isChecked) { - CallerHmiManager.showTrafficLightView() - } else { - CallerHmiManager.hideTrafficLightView() - } - } - - //红绿灯车端来源标识开关 - scCarUnionTrafficLight.isChecked = HmiBuildConfig.isShowCarSourceTrafficLightView - scCarUnionTrafficLight.setOnCheckedChangeListener { _, isChecked -> - hmiAction("SOP 红绿灯车端来源标识开关, ", isChecked) - clickEventAnalytics("红绿灯车端融合标识",isChecked) - HmiBuildConfig.isShowCarSourceTrafficLightView = isChecked - } - //系统启动状态展示 scConnectionSwitch.isChecked = HmiBuildConfig.isShowConnectionProgressView scConnectionSwitch.setOnCheckedChangeListener { _, isChecked -> diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SingleTrafficLightView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SingleTrafficLightView.kt index fe5bd2eccc..895532f53b 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SingleTrafficLightView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SingleTrafficLightView.kt @@ -120,9 +120,7 @@ class SingleTrafficLightView @JvmOverloads constructor( UiThreadHandler.post { CallerLogger.d("$M_HMI$TAG","update checkLightId:$checkLightId, lightSource: $lightSource") mCurrentLightId = checkLightId - if (!HmiBuildConfig.isShowTrafficLightView) { - updateTrafficLightIcon(checkLightId, lightSource) - } + updateTrafficLightIcon(checkLightId, lightSource) } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml index 79507f4ee8..90c277557e 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml @@ -727,31 +727,6 @@ app:layout_constraintLeft_toLeftOf="@id/tvOtherTitle" app:layout_constraintRight_toRightOf="parent" /> - - - - - + app:layout_constraintTop_toBottomOf="@id/tvOtherTitle" /> + app:layout_constraintTop_toBottomOf="@id/tvOtherTitle" /> - - Date: Fri, 11 Oct 2024 14:00:47 +0800 Subject: [PATCH 08/16] =?UTF-8?q?[6.7.0]=E8=B0=83=E6=95=B4=E4=B8=8A?= =?UTF-8?q?=E6=8A=A5View=E9=AB=98=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/layout/view_bone_tab.xml | 4 ++-- .../src/main/res/layout/view_map_container.xml | 4 ++-- .../src/main/res/layout/view_work_order.xml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_tab.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_tab.xml index 6a48deb66b..478f5ca7a5 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_tab.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_tab.xml @@ -28,7 +28,7 @@ Date: Fri, 11 Oct 2024 14:34:47 +0800 Subject: [PATCH 09/16] =?UTF-8?q?[6.7.0]=20[fea]=20[slide=20=E6=8A=BD?= =?UTF-8?q?=E7=A6=BB]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OCH/common/common/build.gradle | 1 + .../common}/src/main/assets/data.json | 0 .../common}/src/main/assets/images/img_0.png | Bin .../common}/src/main/assets/images/img_1.png | Bin .../common}/src/main/assets/images/img_2.png | Bin .../common}/src/main/assets/slide.json | 0 .../common/module/wigets/CommonSlideView.kt | 159 ++++++++++++++++++ .../res/drawable-nodpi/common_slide_block.png | Bin 0 -> 7900 bytes .../src/main/res/layout/common_slide_view.xml | 32 ++++ .../common/src/main/res/values/attrs.xml | 6 + .../common/src/main/res/values/colors.xml | 1 + OCH/shuttle/driver_weaknet/build.gradle | 1 - .../weaknet/ui/taskrunning/TaskRunningView.kt | 6 +- .../com/mogo/och/weaknet/view/BizMapView.kt | 63 ------- .../shuttle_weak_task_leave_station_view.xml | 9 - .../res/layout/shuttle_weak_task_running.xml | 4 +- .../src/main/res/values/attrs.xml | 90 ---------- 17 files changed, 204 insertions(+), 168 deletions(-) rename OCH/{shuttle/driver_weaknet => common/common}/src/main/assets/data.json (100%) rename OCH/{shuttle/driver_weaknet => common/common}/src/main/assets/images/img_0.png (100%) rename OCH/{shuttle/driver_weaknet => common/common}/src/main/assets/images/img_1.png (100%) rename OCH/{shuttle/driver_weaknet => common/common}/src/main/assets/images/img_2.png (100%) rename OCH/{shuttle/driver_weaknet => common/common}/src/main/assets/slide.json (100%) create mode 100644 OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/CommonSlideView.kt create mode 100755 OCH/common/common/src/main/res/drawable-nodpi/common_slide_block.png create mode 100644 OCH/common/common/src/main/res/layout/common_slide_view.xml delete mode 100644 OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/view/BizMapView.kt diff --git a/OCH/common/common/build.gradle b/OCH/common/common/build.gradle index 5a7057c888..6597437eaf 100644 --- a/OCH/common/common/build.gradle +++ b/OCH/common/common/build.gradle @@ -74,6 +74,7 @@ dependencies { api rootProject.ext.dependencies.flexbox api project(":OCH:common:data") + api rootProject.ext.dependencies.lottie if (Boolean.valueOf(USE_MAVEN_PACKAGE)) { api rootProject.ext.dependencies.mogocommons diff --git a/OCH/shuttle/driver_weaknet/src/main/assets/data.json b/OCH/common/common/src/main/assets/data.json similarity index 100% rename from OCH/shuttle/driver_weaknet/src/main/assets/data.json rename to OCH/common/common/src/main/assets/data.json diff --git a/OCH/shuttle/driver_weaknet/src/main/assets/images/img_0.png b/OCH/common/common/src/main/assets/images/img_0.png similarity index 100% rename from OCH/shuttle/driver_weaknet/src/main/assets/images/img_0.png rename to OCH/common/common/src/main/assets/images/img_0.png diff --git a/OCH/shuttle/driver_weaknet/src/main/assets/images/img_1.png b/OCH/common/common/src/main/assets/images/img_1.png similarity index 100% rename from OCH/shuttle/driver_weaknet/src/main/assets/images/img_1.png rename to OCH/common/common/src/main/assets/images/img_1.png diff --git a/OCH/shuttle/driver_weaknet/src/main/assets/images/img_2.png b/OCH/common/common/src/main/assets/images/img_2.png similarity index 100% rename from OCH/shuttle/driver_weaknet/src/main/assets/images/img_2.png rename to OCH/common/common/src/main/assets/images/img_2.png diff --git a/OCH/shuttle/driver_weaknet/src/main/assets/slide.json b/OCH/common/common/src/main/assets/slide.json similarity index 100% rename from OCH/shuttle/driver_weaknet/src/main/assets/slide.json rename to OCH/common/common/src/main/assets/slide.json diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/CommonSlideView.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/CommonSlideView.kt new file mode 100644 index 0000000000..69e257067f --- /dev/null +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/CommonSlideView.kt @@ -0,0 +1,159 @@ +package com.mogo.och.common.module.wigets + +import android.animation.ObjectAnimator +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.view.MotionEvent +import androidx.appcompat.widget.AppCompatTextView +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.constraintlayout.widget.ConstraintSet +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.och.common.module.R +import com.mogo.och.common.module.utils.ResourcesUtils +import com.mogo.och.common.module.utils.RxUtils +import kotlinx.android.synthetic.main.common_slide_view.view.lottie_bg + +class CommonSlideView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ConstraintLayout(context, attrs, defStyleAttr) { + companion object { + const val TAG = "LoadingMapStatusView" + } + + + private var initialX = 0f + private var initialY = 0f + private val tempSet = ConstraintSet() + + private var draggableButton: AppCompatTextView + + private var slideListener:SlideListener?=null + + private var slideTitle:String?=null + private var assetsfolder:String?=null + + fun setSlideListener(slideListener:SlideListener){ + this.slideListener = slideListener + } + + + init { + LayoutInflater.from(context).inflate(R.layout.common_slide_view, this, true) + + try { + val typedArray = context.obtainStyledAttributes(attrs, R.styleable.CommonSlideView) + slideTitle = typedArray.getString(R.styleable.CommonSlideView_slide_title)?:"" + assetsfolder = typedArray.getString(R.styleable.CommonSlideView_assetsfolder)?:"images" + typedArray.recycle() + } catch (e: Exception) { + e.printStackTrace() + } + + draggableButton = findViewById(R.id.actv_draggable_block) + draggableButton.text = slideTitle + lottie_bg.imageAssetsFolder = assetsfolder + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + CallerLogger.d(TAG,"onAttachedToWindow") + } + + + /** + * 为该组件的触碰事件重写事件处理方法 + */ + override fun onTouchEvent(event: MotionEvent?): Boolean { + when (event?.action) { + MotionEvent.ACTION_DOWN -> { + initialX = event.rawX; + initialY = event.rawY; + } + MotionEvent.ACTION_MOVE -> { + val dx = event.rawX - initialX; + val dy = event.rawY - initialY; + initialX = event.rawX; + initialY = event.rawY; + + if(draggableButton.translationX<0){ + tempSet.clone(this) + tempSet.setTranslationX(draggableButton.id, 0f) + tempSet.applyTo(this) + }else if(draggableButton.translationX>=0&&draggableButton.translationX<=width-draggableButton.width){ + tempSet.clone(this) + val dex = (draggableButton.translationX + dx).takeIf { it>=0 }?:0f + val newDex = dex.takeIf { it<=width-draggableButton.width }?:(width-draggableButton.width).toFloat() + tempSet.setTranslationX(draggableButton.id, newDex) + tempSet.applyTo(this) + }else{ + tempSet.clone(this) + val dex = (draggableButton.translationX + dx).takeIf { it<=width-draggableButton.width }?:(width-draggableButton.width).toFloat() + tempSet.setTranslationX(draggableButton.id, dex) + tempSet.applyTo(this) + } + } + MotionEvent.ACTION_UP -> { + if(draggableButton.translationX<(width-draggableButton.width)){ + ObjectAnimator.ofFloat( + draggableButton, "translationX", draggableButton.translationX, + 0f + ).apply { + duration = 100 + }.start() + }else if (draggableButton.translationX>=(width-draggableButton.width)){ + lottie_bg.setAnimation("data.json") + lottie_bg.playAnimation() + draggableButton.setTextColor(ResourcesUtils.getColor(R.color.common_80FFFFFF)) + RxUtils.createSubscribe(1_000) { + slideListener?.slideEnd() + } + }else{ + ObjectAnimator.ofFloat( + draggableButton, "translationX", draggableButton.translationX, + 0f + ).apply { + duration = 100 + }.start() + } + } + else -> {} + } + return true + } + + + override fun onVisibilityAggregated(isVisible: Boolean) { + super.onVisibilityAggregated(isVisible) + if(isVisible){ + lottie_bg.setAnimation("slide.json") + lottie_bg.playAnimation() + draggableButton.setTextColor(ResourcesUtils.getColor(R.color.white)) + ObjectAnimator.ofFloat( + draggableButton, "translationX", draggableButton.translationX, + 0f + ).apply { + duration = 100 + }.start() + } + } + + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + CallerLogger.d(TAG,"onDetachedFromWindow") + } + + fun setTextValue(value: String) { + draggableButton.text = value + } + + interface SlideListener{ + fun slideEnd() + } + + + +} \ No newline at end of file diff --git a/OCH/common/common/src/main/res/drawable-nodpi/common_slide_block.png b/OCH/common/common/src/main/res/drawable-nodpi/common_slide_block.png new file mode 100755 index 0000000000000000000000000000000000000000..ba80399ef40526cc075dac88baa2d4f2a91e676f GIT binary patch literal 7900 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 + + + + + + \ No newline at end of file diff --git a/OCH/common/common/src/main/res/values/attrs.xml b/OCH/common/common/src/main/res/values/attrs.xml index 13b47cc9ee..31323f4270 100644 --- a/OCH/common/common/src/main/res/values/attrs.xml +++ b/OCH/common/common/src/main/res/values/attrs.xml @@ -9,6 +9,12 @@ + + + + + + diff --git a/OCH/common/common/src/main/res/values/colors.xml b/OCH/common/common/src/main/res/values/colors.xml index 770f857d92..4bdbaf74bf 100644 --- a/OCH/common/common/src/main/res/values/colors.xml +++ b/OCH/common/common/src/main/res/values/colors.xml @@ -16,6 +16,7 @@ #3B4577 #80000000 + #80FFFFFF #1466FB #E0EFFF #B8C2D7 diff --git a/OCH/shuttle/driver_weaknet/build.gradle b/OCH/shuttle/driver_weaknet/build.gradle index a230b9a66d..3f2bd62161 100644 --- a/OCH/shuttle/driver_weaknet/build.gradle +++ b/OCH/shuttle/driver_weaknet/build.gradle @@ -61,7 +61,6 @@ dependencies { implementation rootProject.ext.dependencies.roomRxjava implementation rootProject.ext.dependencies.androidxrecyclerview kapt rootProject.ext.dependencies.recyclerviewadapterhelper - implementation rootProject.ext.dependencies.lottie implementation rootProject.ext.dependencies.androidxroomruntime kapt rootProject.ext.dependencies.androidxroomcompiler diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/TaskRunningView.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/TaskRunningView.kt index 957f39e00d..4eb0cc1fd0 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/TaskRunningView.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/TaskRunningView.kt @@ -10,15 +10,13 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.mogo.commons.AbsMogoApplication import com.mogo.eagle.core.utilcode.kotlin.onClick import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -import com.mogo.eagle.core.utilcode.mogo.view.SpacesItemDecoration import com.mogo.och.common.module.manager.autopilot.line.LineManager import com.mogo.och.common.module.utils.ResourcesUtils import com.mogo.och.common.module.wigets.CommonDialogStatus -import com.mogo.och.common.module.wigets.OCHCommitDialog +import com.mogo.och.common.module.wigets.CommonSlideView import com.mogo.och.shuttle.weaknet.R import com.mogo.och.weaknet.model.LineModel import com.mogo.och.weaknet.ui.bizswitch.SwtichBizeModel -import com.mogo.och.weaknet.view.BizLeaveStationView.SlideListener import kotlinx.android.synthetic.main.shuttle_weak_task_running.view.aciv_task_leave_station_slide_bg import kotlinx.android.synthetic.main.shuttle_weak_task_running.view.actv_arriver_station import kotlinx.android.synthetic.main.shuttle_weak_task_running.view.actv_complete_task @@ -63,7 +61,7 @@ class TaskRunningView: ConstraintLayout, TaskRunningModel.SwtichLineViewCallback rl_running_task_station_list.setLayoutManager(linearLayoutManager) mAdapter = TaskRunningAdapter(context, mutableListOf()) rl_running_task_station_list.setAdapter(mAdapter) - aciv_task_leave_station_slide_bg.setSlideListener(object : SlideListener{ + aciv_task_leave_station_slide_bg.setSlideListener(object : CommonSlideView.SlideListener { override fun slideEnd() { viewModel?.leaveStation() } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/view/BizMapView.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/view/BizMapView.kt deleted file mode 100644 index aa7c1e657e..0000000000 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/view/BizMapView.kt +++ /dev/null @@ -1,63 +0,0 @@ -package com.mogo.och.weaknet.view - -import android.content.Context -import android.os.Bundle -import android.util.AttributeSet -import android.view.LayoutInflater -import android.widget.FrameLayout -import com.mogo.eagle.core.data.config.FunctionBuildConfig -import com.mogo.eagle.core.function.view.MapBizView -import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils -import com.mogo.map.uicontroller.IMogoMapUIController -import com.mogo.och.shuttle.weaknet.R - -/** - * 魔戒蓝牙控件 - * 放置于StatusBar右侧位置 - */ -class BizMapView @JvmOverloads constructor( - context: Context, - attrs: AttributeSet? = null, - defStyleAttr: Int = 0 -) : FrameLayout(context, attrs, defStyleAttr) { - - private lateinit var mapBizView: MapBizView - - init { - if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode)) { - LayoutInflater.from(context).inflate(R.layout.shuttle_weak_m2_bizmap_map, this, true) - }else if(AppIdentityModeUtils.isB1(FunctionBuildConfig.appIdentityMode)){ - LayoutInflater.from(context).inflate(R.layout.shuttle_weak_jl_bizmap_map, this, true) - }else{ - LayoutInflater.from(context).inflate(R.layout.shuttle_weak_jl_bizmap_map, this, true) - } - mapBizView = findViewById(R.id.bizMapView) - } - - fun getUI(): IMogoMapUIController? { - return mapBizView.getUI() - } - - fun onCreate(bundle: Bundle?) { - mapBizView.onCreate(bundle) - } - fun onResume() { - mapBizView.onResume() - } - - fun onSaveInstanceState(outState: Bundle){ - mapBizView.onSaveInstanceState(outState) - } - - fun onLowMemory() { - mapBizView.onLowMemory() - } - - fun onPause() { - mapBizView.onPause() - } - - fun onDestroy() { - mapBizView.onDestroy() - } -} \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/res/layout/shuttle_weak_task_leave_station_view.xml b/OCH/shuttle/driver_weaknet/src/main/res/layout/shuttle_weak_task_leave_station_view.xml index ff7fa80565..60aaed0563 100644 --- a/OCH/shuttle/driver_weaknet/src/main/res/layout/shuttle_weak_task_leave_station_view.xml +++ b/OCH/shuttle/driver_weaknet/src/main/res/layout/shuttle_weak_task_leave_station_view.xml @@ -7,15 +7,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content"> - - - - - - - - - - diff --git a/OCH/taxi/unmanned-driver/src/main/res/values/attrs.xml b/OCH/taxi/unmanned-driver/src/main/res/values/attrs.xml index 99006aeb52..0e9452f453 100644 --- a/OCH/taxi/unmanned-driver/src/main/res/values/attrs.xml +++ b/OCH/taxi/unmanned-driver/src/main/res/values/attrs.xml @@ -5,94 +5,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file From a0c87b48a7c37a919ad9ad0ee67fb6dd09e3b9de Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Fri, 11 Oct 2024 15:32:48 +0800 Subject: [PATCH 10/16] =?UTF-8?q?[6.7.0]=E4=BF=AE=E5=A4=8D=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E4=B8=8A=E6=8A=A5=E5=92=8C=E6=95=85=E9=9A=9C=E4=B8=8A?= =?UTF-8?q?=E6=8A=A5=E5=A4=9A=E4=B8=AA=E7=AA=97=E5=8F=A3=E6=97=B6=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workorder/FaultReasonWindow.kt | 4 ++-- .../mogo_core_function_devatools/workorder/WorkOrderWindow.kt | 4 ++-- .../java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/workorder/FaultReasonWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/workorder/FaultReasonWindow.kt index e93670d0eb..0e2e19c7dc 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/workorder/FaultReasonWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/workorder/FaultReasonWindow.kt @@ -220,7 +220,7 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener, @SuppressLint("SetTextI18n") private fun initEvent() { - CallerDevaToolsListenerManager.addListener(TAG, this) + CallerDevaToolsListenerManager.addListener(this.hashCode().toString(), this) val iconDown = ContextCompat.getDrawable(mActivity, R.drawable.icon_fault_expand) iconDown?.setBounds(0, 0, iconDown.minimumWidth, iconDown.minimumHeight) val iconUp = ContextCompat.getDrawable(mActivity, R.drawable.icon_fault_retract) @@ -558,7 +558,7 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener, fun hideFloatWindow() { etNoteInput.clearFocus() - CallerDevaToolsListenerManager.removeListener(TAG) + CallerDevaToolsListenerManager.removeListener(this.hashCode().toString()) if (mFloatLayout.parent != null) { mWindowManager!!.removeView(mFloatLayout) } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/workorder/WorkOrderWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/workorder/WorkOrderWindow.kt index 86a46e7efb..a1f053f661 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/workorder/WorkOrderWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/workorder/WorkOrderWindow.kt @@ -135,7 +135,7 @@ class WorkOrderWindow constructor(activity: Activity) : View.OnTouchListener, @OptIn(DelicateCoroutinesApi::class) @SuppressLint("SetTextI18n") private fun initEvent(){ - CallerDevaToolsListenerManager.addListener(TAG, this) + CallerDevaToolsListenerManager.addListener(this.hashCode().toString(), this) //弹窗展示时间 tvWorkOrderTime.text = mActivity.resources.getString(R.string.work_order_time) + millis2String(System.currentTimeMillis(), TimeUtils.getHourMinSecondFormat()) @@ -382,7 +382,7 @@ class WorkOrderWindow constructor(activity: Activity) : View.OnTouchListener, if (mFloatLayout.parent != null){ mWindowManager!!.removeView(mFloatLayout) } - CallerDevaToolsListenerManager.removeListener(TAG) + CallerDevaToolsListenerManager.removeListener(this.hashCode().toString()) } override fun workOrderReportSuccess() { diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt index a407034c73..46421f4de2 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt @@ -1240,7 +1240,7 @@ enum class EventTypeEnumNew( FOURS_ACCIDENT_05.poiType -> { R.drawable.v2x_icon_jiaotongshigu_vr } - //事故 + //实时路况 FOURS_LIVING.poiType -> { R.drawable.v_to_x_marker_1 } From db32f5498d036f8fb80a5307b53ebb159369726d Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Fri, 11 Oct 2024 16:07:27 +0800 Subject: [PATCH 11/16] =?UTF-8?q?[6.7.0]=E8=B0=83=E6=95=B4=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E7=9B=92=E5=AD=90=E7=BA=A2=E7=82=B9=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=EF=BC=8C=E5=BD=93=E6=89=93=E5=BC=80=E6=B6=88=E6=81=AF=E7=9B=92?= =?UTF-8?q?=E5=AD=90=E5=88=97=E8=A1=A8=E6=97=B6=E5=87=BA=E7=8E=B0=E6=96=B0?= =?UTF-8?q?=E7=9A=84=E6=B6=88=E6=81=AF=EF=BC=8C=E4=B8=8D=E5=87=BA=E7=8E=B0?= =?UTF-8?q?=E7=BA=A2=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/eagle/core/function/hmi/bone/BoneTabLayout.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/BoneTabLayout.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/BoneTabLayout.kt index db741e45a1..711ead57c3 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/BoneTabLayout.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/BoneTabLayout.kt @@ -3,6 +3,7 @@ package com.mogo.eagle.core.function.hmi.bone import android.content.Context import android.util.AttributeSet import android.view.LayoutInflater +import android.view.View import androidx.constraintlayout.widget.ConstraintLayout import com.mogo.eagle.core.function.api.datacenter.msgbox.IMsgBoxEventListener import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxEventListenerManager @@ -171,7 +172,9 @@ class BoneTabLayout @JvmOverloads constructor( override fun onUpdateTipEvent(isShow: Boolean) { super.onUpdateTipEvent(isShow) UiThreadHandler.post { - tabSwitchMsgBox.updateNotice(isShow) + if(msgBoxTabView.visibility == View.GONE){ + tabSwitchMsgBox.updateNotice(isShow) + } } } } \ No newline at end of file From 2c83f3ca6a773cc2ee6b2a72279afbe7a02675a8 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Fri, 11 Oct 2024 16:30:53 +0800 Subject: [PATCH 12/16] =?UTF-8?q?[6.7.0]=E5=A2=9E=E5=8A=A0=E7=BA=A2?= =?UTF-8?q?=E7=BB=BF=E7=81=AFB2=E4=B9=98=E5=AE=A2=E7=AB=AF=E5=B1=9E?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo-core-function-hmi/src/main/res/values/attr.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/attr.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/attr.xml index aecb0fc39f..9ef14514ad 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/attr.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/attr.xml @@ -133,6 +133,7 @@ + From 3cafdabc9bbcd7e13fa8dfa221ed46d00c9be1df Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Fri, 11 Oct 2024 17:52:42 +0800 Subject: [PATCH 13/16] =?UTF-8?q?[670][data-center]=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=9B=9E=E6=89=A7=E6=B6=88=E6=81=AF=E9=93=BE=E8=B7=AF=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt index 2280e373b3..851ea1c280 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt @@ -1300,7 +1300,7 @@ class MoGoAdasListenerImpl : OnAdasListener { receivedAck.messageType == MessageType.TYPE_SEND_PLANNING_CMD ||//给Planning指令 receivedAck.messageType == MessageType.TYPE_SEND_SET_PARAM_REQ_V2 //设置参数命令V2 ) { - receiveReceivedAck(receivedAck) + receiveReceivedAck(receivedAck.toString()) } } @@ -1310,7 +1310,7 @@ class MoGoAdasListenerImpl : OnAdasListener { nodeAliasCode = AdasChain.CHAIN_CODE_ADAS_START_AUTOPILOT, paramIndexes = [0] ) - private fun receiveReceivedAck(receivedAck: ReceivedAck) { + private fun receiveReceivedAck(receivedAck: String) { } /** From 61844019266e7d1a218382202cee9fcf9697ee69 Mon Sep 17 00:00:00 2001 From: EmArrow Date: Fri, 11 Oct 2024 18:00:45 +0800 Subject: [PATCH 14/16] [6.7.0] fix dialog bug --- .../mogo/och/taxi/ui/TaxiMapDirectionView.kt | 1 + .../taxi/ui/navi/auto/TaxiMapDirectionView.kt | 1 + .../MoGoAdasMsgConnectStatusListenerImpl.kt | 15 +- .../bone/status/fsm/FSMStatusDetailDialog.kt | 2 +- .../function/hmi/dialog/BaseFloatDialog.java | 21 ++- .../function/hmi/ui/tools/AdUpgradeDialog.kt | 3 +- .../hmi/ui/tools/DockerRebootDialog.kt | 2 +- .../hmi/ui/tools/ModifyBindingCarDialog.kt | 2 +- .../function/hmi/ui/tools/OfflineMapDialog.kt | 2 +- .../hmi/ui/tools/ToBindingCarDialog.kt | 2 +- .../function/hmi/ui/tools/UpgradeAppDialog.kt | 2 +- .../main/res/layout/dialog_upgrade_app.xml | 2 +- .../main/res/layout/view_map_container.xml | 2 +- .../eagle/core/function/view/OverMapView.kt | 2 + .../core/function/view/TravelRealityView.kt | 131 +++++++++--------- .../core/data/deva/chain/ChainConstant.kt | 1 + 16 files changed, 114 insertions(+), 77 deletions(-) diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/TaxiMapDirectionView.kt b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/TaxiMapDirectionView.kt index 8225b2891f..8893f36bd6 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/TaxiMapDirectionView.kt +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/TaxiMapDirectionView.kt @@ -260,6 +260,7 @@ class TaxiMapDirectionView @JvmOverloads constructor( fun onDestroy() { mAMapNaviView.onDestroy() + mAMap.clear() } fun setStartMarkAndEndMark(startStation: LatLng?, endStation: LatLng?) { diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/navi/auto/TaxiMapDirectionView.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/navi/auto/TaxiMapDirectionView.kt index ecbe51ebe0..910d20a140 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/navi/auto/TaxiMapDirectionView.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/navi/auto/TaxiMapDirectionView.kt @@ -264,6 +264,7 @@ class TaxiMapDirectionView @JvmOverloads constructor( fun onDestroy() { mAMapNaviView.onDestroy() + mAMap.clear() } fun setStartMarkAndEndMark(startStation: LatLng?, endStation: LatLng?) { diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt index e8c5b59f6a..827b95f475 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt @@ -9,6 +9,9 @@ import com.mogo.commons.debug.DebugConfig.getNetMode import com.mogo.commons.storage.SharedPrefsMgr import com.mogo.eagle.core.data.app.AppConfigInfo import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_CONNECT_STATUS +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_SOURCE_ADAS +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_SOCKET_AUTOPILOT import com.mogo.eagle.core.data.msgbox.AutopilotMsg import com.mogo.eagle.core.data.msgbox.MsgBoxBean import com.mogo.eagle.core.data.msgbox.MsgBoxType @@ -29,6 +32,7 @@ import com.mogo.eagle.core.utilcode.util.ToastUtils import com.zhidao.support.adas.high.AdasManager import com.zhidao.support.adas.high.OnAdasConnectStatusListener import com.zhidao.support.adas.high.bean.VersionCompatibility +import com.zhidao.support.adas.high.chain.AdasChain import com.zhidao.support.adas.high.common.Constants.ENVIRONMENT.DEMO import com.zhidao.support.adas.high.common.Constants.ENVIRONMENT.DEVELOP import com.zhidao.support.adas.high.common.Constants.ENVIRONMENT.PRODUCTION @@ -36,6 +40,7 @@ import com.zhidao.support.adas.high.common.Constants.ENVIRONMENT.TEST import com.zhidao.support.adas.high.common.Constants.TERMINAL_ROLE.DRIVER import com.zhidao.support.adas.high.common.Constants.TERMINAL_ROLE.PASSENGER import com.zhjt.mogo.adas.data.AdasConstants +import com.zhjt.service.chain.ChainLog import mogo.telematics.pad.MessagePad import java.util.concurrent.atomic.AtomicBoolean @@ -237,7 +242,7 @@ class MoGoAdasMsgConnectStatusListenerImpl : CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectStatusReason = reason CallerAutoPilotStatusListenerManager.invokeAutoPilotStatus() CallerAutoPilotStatusListenerManager.invokeAutoPilotIPCStatusChanged(status, reason) - saveIntoMsgBox(status, reason) + saveIntoMsgBox(status, connectStatusDescribe) } /** @@ -289,9 +294,15 @@ class MoGoAdasMsgConnectStatusListenerImpl : CallerAutopilotCarConfigListenerManager.invokeAutopilotCertFileResult(certificationResult) } + @ChainLog( + linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT, + linkCode = CHAIN_SOURCE_ADAS, + nodeAliasCode = CHAIN_CODE_ADAS_CONNECT_STATUS, + paramIndexes = [0,1] + ) private fun saveIntoMsgBox( status: AdasConstants.IpcConnectionStatus, - reason: String? + reason: String ) { var title = "" var content = "" diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/status/fsm/FSMStatusDetailDialog.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/status/fsm/FSMStatusDetailDialog.kt index f14013128d..fe3a7d991f 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/status/fsm/FSMStatusDetailDialog.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/status/fsm/FSMStatusDetailDialog.kt @@ -20,7 +20,7 @@ import com.zhjt.mogo_core_function_devatools.status.entity.Status /** * FSM状态展示 Dialog */ -class FSMStatusDetailDialog(context: Context) : BaseFloatDialog(context), +class FSMStatusDetailDialog(context: Context) : BaseFloatDialog(context, TAG), StatusManager.IStatusListener { companion object { private const val TAG = "FSMStatusDetailDialog" diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/dialog/BaseFloatDialog.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/dialog/BaseFloatDialog.java index 3e9a52ceb4..b39e7cb3dc 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/dialog/BaseFloatDialog.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/dialog/BaseFloatDialog.java @@ -12,6 +12,9 @@ import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import com.mogo.commons.debug.DebugConfig; +import com.mogo.commons.module.status.IMogoStatusChangedListener; +import com.mogo.commons.module.status.MogoStatusManager; +import com.mogo.commons.module.status.StatusDescriptor; import com.mogo.eagle.core.function.hmi.R; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.PermissionUtils; @@ -21,14 +24,22 @@ import com.mogo.eagle.core.utilcode.util.PermissionUtils; * * @author tongchenfei */ -public class BaseFloatDialog extends Dialog { +public class BaseFloatDialog extends Dialog implements IMogoStatusChangedListener { private static final String TAG = "BaseFloatDialog"; + private static String REGISTER_TAG = ""; + public BaseFloatDialog(@NonNull Context context) { this(context, R.style.BaseFloatDialogStyle); } + public BaseFloatDialog(@NonNull Context context, String tag) { + this(context, R.style.BaseFloatDialogStyle); + REGISTER_TAG = TAG + "_" + tag; + MogoStatusManager.getInstance().registerStatusChangedListener(REGISTER_TAG, StatusDescriptor.MAIN_PAGE_IS_BACKGROUND, this); + } + public BaseFloatDialog(@NonNull Context context, int themeResId) { super(context, themeResId); if (DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_BYD) { @@ -61,6 +72,7 @@ public class BaseFloatDialog extends Dialog { @Override public void dismiss() { CallerLogger.d( TAG, "onDismiss===="); + MogoStatusManager.getInstance().unregisterStatusChangedListener(REGISTER_TAG, StatusDescriptor.MAIN_PAGE_IS_BACKGROUND, this); super.dismiss(); } private void setWindowSize(){ @@ -76,4 +88,11 @@ public class BaseFloatDialog extends Dialog { } getWindow().setAttributes(attributes); } + + @Override + public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) { + if(descriptor == StatusDescriptor.MAIN_PAGE_IS_BACKGROUND && isTrue){ + dismiss(); + } + } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AdUpgradeDialog.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AdUpgradeDialog.kt index 215b2fbbbd..769725fa72 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AdUpgradeDialog.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AdUpgradeDialog.kt @@ -15,9 +15,10 @@ import com.mogo.eagle.core.utilcode.util.ToastUtils * @since: 2022/1/13 */ class AdUpgradeDialog(context: Context, images: List, padSn: String, releaseId: String) : - BaseFloatDialog(context), LifecycleObserver { + BaseFloatDialog(context,TAG), LifecycleObserver { companion object { + private const val TAG = "AdUpgradeDialog" private var adUpgradeDialog: AdUpgradeDialog? = null fun show(context: Context?, images: List, padSn: String, releaseId: String) { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/DockerRebootDialog.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/DockerRebootDialog.kt index e4ed66d642..88cc15bd2b 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/DockerRebootDialog.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/DockerRebootDialog.kt @@ -11,7 +11,7 @@ import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog * @description 重启自动驾驶docker确认对话框 * @since: 2022/2/17 */ -class DockerRebootDialog(context: Context): BaseFloatDialog(context), LifecycleObserver { +class DockerRebootDialog(context: Context): BaseFloatDialog(context, "DockerReboot"), LifecycleObserver { private var rebootConfirm : TextView? = null private var rebootCancel : TextView? = null diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/ModifyBindingCarDialog.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/ModifyBindingCarDialog.kt index 6d3c75519a..62853c34a2 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/ModifyBindingCarDialog.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/ModifyBindingCarDialog.kt @@ -16,7 +16,7 @@ import com.mogo.eagle.core.utilcode.mogo.toast.TipToast * @brief 修改车辆对话框 * @author lixiaopeng */ -class ModifyBindingCarDialog(context: Context) : BaseFloatDialog(context), LifecycleObserver { +class ModifyBindingCarDialog(context: Context) : BaseFloatDialog(context, TAG), LifecycleObserver { companion object { private const val TAG = "ModifyBindingCarDialog" diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/OfflineMapDialog.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/OfflineMapDialog.kt index 3cbedff0f8..3f00f75b4e 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/OfflineMapDialog.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/OfflineMapDialog.kt @@ -22,7 +22,7 @@ import me.jessyan.autosize.utils.AutoSizeUtils /** * 离线地图缓存 */ -class OfflineMapDialog(context: Context) : BaseFloatDialog(context) { +class OfflineMapDialog(context: Context) : BaseFloatDialog(context, TAG) { companion object { private const val TAG = "OfflineMapDialog" diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/ToBindingCarDialog.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/ToBindingCarDialog.kt index fd6ff11f66..52fe405225 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/ToBindingCarDialog.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/ToBindingCarDialog.kt @@ -17,7 +17,7 @@ import com.mogo.eagle.core.utilcode.mogo.toast.TipToast * @brief 绑定车辆对话框 * @author lixiaopeng */ -class ToBindingCarDialog(context: Context) : BaseFloatDialog(context), LifecycleObserver { +class ToBindingCarDialog(context: Context) : BaseFloatDialog(context, TAG), LifecycleObserver { companion object { private const val TAG = "ToBindingCarDialog" diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/UpgradeAppDialog.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/UpgradeAppDialog.kt index e8a7e9ad4e..e2a8aa4942 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/UpgradeAppDialog.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/UpgradeAppDialog.kt @@ -19,7 +19,7 @@ import java.lang.ref.WeakReference * @brief APP升级提示弹框 * @author lixiaopeng */ -class UpgradeAppDialog(context: Context) : BaseFloatDialog(context), LifecycleObserver { +class UpgradeAppDialog(context: Context) : BaseFloatDialog(context,TAG), LifecycleObserver { companion object{ private const val TAG = "UpgradeAppDialog" diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_upgrade_app.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_upgrade_app.xml index 61cbf44203..eb22909f7a 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_upgrade_app.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_upgrade_app.xml @@ -16,7 +16,7 @@ android:textSize="@dimen/dp_45" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" - app:layout_constraintTop_toBottomOf="parent" /> + app:layout_constraintTop_toTopOf="parent" /> ?? = null + private var deviceInPathList: List? = null @Volatile private var roadTrackList: List?>?>? = null @@ -269,31 +270,33 @@ class TravelRealityView @JvmOverloads constructor( initView(context) } catch (e: Exception) { e.printStackTrace() - Log.d(TAG, "TravelRealityView初始化异常") + CallerLogger.d("$M_MAP$TAG", "TravelRealityView初始化异常") } } // =================必须通知高德地图生命周期的变化================= fun onCreateView(savedInstanceState: Bundle?) { mMapView?.onCreate(savedInstanceState) - Log.d(TAG, "高德地图onCreateView") + CallerLogger.d("$M_MAP$TAG", "高德地图onCreateView") } fun onResume() { mMapView?.onResume() isMapDestroyed = false - Log.d(TAG, "高德地图onResume") + CallerLogger.d("$M_MAP$TAG", "高德地图onResume") } fun onPause() { mMapView?.onPause() - Log.d(TAG, "高德地图onPause") + CallerLogger.d("$M_MAP$TAG", "高德地图onPause") } fun onDestroy() { mMapView?.onDestroy() + mAMap?.clear() + mAMap = null isMapDestroyed = true - Log.d(TAG, "高德地图页面已销毁!") + CallerLogger.d("$M_MAP$TAG", "高德地图页面已销毁!") } // =================必须通知高德地图生命周期的变化================= @@ -350,7 +353,7 @@ class TravelRealityView @JvmOverloads constructor( * 清除所有Marker和Polyline */ fun clearAllMarkersAndPolyline() { - Log.d(TAG, "clearAllMarkersAndPolyline") + CallerLogger.d("$M_MAP$TAG", "clearAllMarkersAndPolyline") nonFrequentHandler?.removeCallbacksAndMessages(null) travelNetWorkModel.cancelAllRequest() reqData = null @@ -469,7 +472,7 @@ class TravelRealityView @JvmOverloads constructor( } private fun initTravelRealityMapView(isInit: Boolean = false) { - Log.d(TAG, "initAMapView") + CallerLogger.d("$M_MAP$TAG", "initAMapView") mAMap = mMapView?.map val mapStyleOptions = CustomMapStyleOptions() if (!mapStylePath.isNullOrEmpty() && !mapStyleExtraPath.isNullOrEmpty()) { @@ -511,7 +514,7 @@ class TravelRealityView @JvmOverloads constructor( } if (isInit) { mAMap?.setOnMapLoadedListener { - Log.d(TAG, "地图加载完成!") + CallerLogger.d("$M_MAP$TAG", "地图加载完成!") isMapLoaded = true mAMap?.setCustomMapStyle(mapStyleOptions) // 实时路况图层关闭,必须添加在loaded结束之后,其他位置不生效 @@ -569,13 +572,13 @@ class TravelRealityView @JvmOverloads constructor( override fun onVisibilityChanged(changedView: View, visibility: Int) { super.onVisibilityChanged(changedView, visibility) if (visibility == VISIBLE) { - Log.d(TAG, "onVisibilityChanged:VISIBLE!") + CallerLogger.d("$M_MAP$TAG", "onVisibilityChanged:VISIBLE!") } } override fun onAttachedToWindow() { super.onAttachedToWindow() - Log.d(TAG, "onAttachedToWindow") + CallerLogger.d("$M_MAP$TAG", "onAttachedToWindow") initHandlers() advanceRequest() CallerPlanningRottingListenerManager.addListener("${TAG}${this.hashCode()}", this) @@ -586,7 +589,7 @@ class TravelRealityView @JvmOverloads constructor( override fun onDetachedFromWindow() { super.onDetachedFromWindow() - Log.d(TAG, "onDetachedFromWindow") + CallerLogger.d("$M_MAP$TAG", "onDetachedFromWindow") deviceList = null retryCount = 0 // 注册定位监听 @@ -606,10 +609,10 @@ class TravelRealityView @JvmOverloads constructor( private fun advanceRequest() { isRoadTrackReq = true - Log.d(TAG, "请求获取智慧道路轨迹!") + CallerLogger.d("$M_MAP$TAG", "请求获取智慧道路轨迹!") // 获取智慧道路轨迹 travelNetWorkModel.getCityRoadTrack(onSuccess = { - Log.d(TAG, "Road track result is:$it") + CallerLogger.d("$M_MAP$TAG", "Road track result is:$it") roadTrackList = it isRoadTrackReq = false // 司机屏默认显示小地图的渲染,乘客屏默认显示行程总览地图的渲染 @@ -618,7 +621,7 @@ class TravelRealityView @JvmOverloads constructor( } }, onError = { isRoadTrackReq = false - Log.d(TAG, "Road track error is:$it") + CallerLogger.d("$M_MAP$TAG", "Road track error is:$it") }) } @@ -670,7 +673,7 @@ class TravelRealityView @JvmOverloads constructor( globalData[0].lat, globalData[0].lon ) - Log.w(TAG, "起终点距离为:$distance") + CallerLogger.w("$M_MAP$TAG", "起终点距离为:$distance") // if (distance < 2000) { // roadRange = maxRoadRange // roadWidth = minRoadWidth @@ -706,7 +709,7 @@ class TravelRealityView @JvmOverloads constructor( } private fun handleRoadEvent(eventList: List, globalList: ArrayList) { - if (globalList.isNullOrEmpty()) return + if (globalList.isEmpty()) return testTime = System.currentTimeMillis() if (eventList.isEmpty()) { listener?.onDraw(emptyList(), true) @@ -717,8 +720,8 @@ class TravelRealityView @JvmOverloads constructor( } else { val eventDrawMap = HashMap() val eventOptionsList = ArrayList() - var distance = 0.0 - var key = "" + var distance: Double + var key: String val roadEvents = ArrayList() val eventPointMap = HashMap() globalList.forEachIndexed { index, globalPoint -> @@ -734,8 +737,7 @@ class TravelRealityView @JvmOverloads constructor( ) key = "${eventBean.lon},${eventBean.lat}" if (distance >= 10 || eventPointMap.contains(key)) { - Log.d( - TAG, + CallerLogger.d("$M_MAP$TAG", "道路事件:点(${key})到线段${index}-${index + 1}的距离为:${distance}米" ) return@forEach @@ -750,7 +752,7 @@ class TravelRealityView @JvmOverloads constructor( } } listener?.onDraw(eventDrawMap.values.toList(), true) - Log.d(TAG, "过滤掉的事件个数为:${eventList.size - eventOptionsList.size}") + CallerLogger.d("$M_MAP$TAG", "过滤掉的事件个数为:${eventList.size - eventOptionsList.size}") // 事件不足3个则用路口设备补齐 completeQuantity(roadEvents) // 绘制道路事件 @@ -761,7 +763,7 @@ class TravelRealityView @JvmOverloads constructor( private fun completeQuantity(roadEvents: ArrayList) { val ipPointEntityMap = HashMap>() // 全部展示事件,事件数不足则用路口设备补齐 - Log.d(TAG, "已绘制的道路事件个数为:${roadEvents.size}") + CallerLogger.d("$M_MAP$TAG", "已绘制的道路事件个数为:${roadEvents.size}") if (roadEvents.size >= 3) { roadEvents[0].let { it.ip?.also { ip -> @@ -894,7 +896,7 @@ class TravelRealityView @JvmOverloads constructor( } else -> { - Log.d(TAG, "请求到未知事件!") + CallerLogger.d("$M_MAP$TAG", "请求到未知事件!") } } } @@ -908,11 +910,11 @@ class TravelRealityView @JvmOverloads constructor( ipPointEntityMap: HashMap>, eventSize: Int ) { - Log.d(TAG, "retryGetCrossDevice") + CallerLogger.d("$M_MAP$TAG", "retryGetCrossDevice") val crossDeviceListTmp = deviceInPathList while (crossDeviceListTmp.isNullOrEmpty()) { if (retryCount >= 5) { - Log.d(TAG, "尝试多次后仍无法获取到路口设备数据!") + CallerLogger.d("$M_MAP$TAG", "尝试多次后仍无法获取到路口设备数据!") break } Thread.sleep(250) @@ -920,12 +922,12 @@ class TravelRealityView @JvmOverloads constructor( } var maxSize = 3 - eventSize if (maxSize <= 0) { - Log.d(TAG, "全息路口个数计算有误则返回!") + CallerLogger.d("$M_MAP$TAG", "全息路口个数计算有误则返回!") return } - Log.d(TAG, "待查询缩略图的事件个数为:${eventSize}") + CallerLogger.d("$M_MAP$TAG", "待查询缩略图的事件个数为:${eventSize}") if (!crossDeviceListTmp.isNullOrEmpty()) { - Log.d(TAG, "缓存的全息路口个数为:${crossDeviceListTmp.size}") + CallerLogger.d("$M_MAP$TAG", "缓存的全息路口个数为:${crossDeviceListTmp.size}") // 轨迹线附近的路口设备取几个进行卡片展示 crossDeviceListTmp.forEach { deviceInfoBean -> if (maxSize > 0) { @@ -1005,12 +1007,12 @@ class TravelRealityView @JvmOverloads constructor( ipPointEntityMap: HashMap> ) { val ipList = ipPointEntityMap.keys.toMutableList() - Log.d(TAG, "请求获取缩略图,个数为:${ipList.size}!") + CallerLogger.d("$M_MAP$TAG", "请求获取缩略图,个数为:${ipList.size}!") if (ipList.isEmpty()) { return } travelNetWorkModel.batchRequestCrossLive(ipList, onSuccess = { - Log.d(TAG, "Cross live result is:$it") + CallerLogger.d("$M_MAP$TAG", "Cross live result is:$it") val liveOptionsList = ArrayList() var markerOption: MarkerOptions var pair: Pair @@ -1043,18 +1045,18 @@ class TravelRealityView @JvmOverloads constructor( ipPointEntityMap[ip]!! ) } else { - Log.d(TAG, "缓存中未查到对应ip!!") + CallerLogger.d("$M_MAP$TAG", "缓存中未查到对应ip!!") return@let } } } } - Log.d(TAG, "绘制卡片的个数为:${liveOptionsList.size}") + CallerLogger.d("$M_MAP$TAG", "绘制卡片的个数为:${liveOptionsList.size}") // 绘制事件卡片 drawMarkers(DRAW_LIVE_DETAIL, liveOptionsList) adjustCameraWithVertex(vertexList) }, onError = { - Log.d(TAG, "Cross live error is:$it") + CallerLogger.d("$M_MAP$TAG", "Cross live error is:$it") }) } @@ -1082,8 +1084,7 @@ class TravelRealityView @JvmOverloads constructor( ) key = "${deviceBean.lon},${deviceBean.lat}" if (distance >= 10 || devicePointMap.contains(key)) { - Log.d( - TAG, + CallerLogger.d("$M_MAP$TAG", "路口设备:点(${key})到线段${index}-${index + 1}的距离为:${distance}米" ) return@loop @@ -1128,7 +1129,7 @@ class TravelRealityView @JvmOverloads constructor( ) } deviceInPathList = deviceInPaths - Log.d(TAG, "待绘制的全息路口的个数为:${crossOptionsList.size}") + CallerLogger.d("$M_MAP$TAG", "待绘制的全息路口的个数为:${crossOptionsList.size}") // 绘制路口设备 drawMarkers(DRAW_CROSS_DEVICE, crossOptionsList) } @@ -1164,7 +1165,7 @@ class TravelRealityView @JvmOverloads constructor( val globalOptionList = ArrayList() val globalIndexSet = HashSet() if (globalList.isNullOrEmpty()) {// 无轨迹时以道路中心线为中轴画给定宽度的纹理 - Log.d(TAG, "无轨迹点,绘制全局智慧道路!") + CallerLogger.d("$M_MAP$TAG", "无轨迹点,绘制全局智慧道路!") val boundsBuilder = LatLngBounds.Builder() var latLngTmp: LatLng roadTrajectoryList.forEach { trajectoryList -> @@ -1198,7 +1199,7 @@ class TravelRealityView @JvmOverloads constructor( ) moveMapCamera(cameraUpdate) } else { - Log.d(TAG, "有轨迹点,绘制局部智慧道路!") + CallerLogger.d("$M_MAP$TAG", "有轨迹点,绘制局部智慧道路!") roadTrajectoryList.forEach { trajectoryList -> var distanceTmp: Double // var lastIndex = -1 @@ -1234,7 +1235,7 @@ class TravelRealityView @JvmOverloads constructor( ) // 如果距离小于50m则认为在智慧道路内 if (distanceTmp < 50) { - Log.d(TAG, "智慧道路内点索引为:$i") + CallerLogger.d("$M_MAP$TAG", "智慧道路内点索引为:$i") globalIndexSet.add(i) } } @@ -1246,7 +1247,7 @@ class TravelRealityView @JvmOverloads constructor( var polylineOptionTmp: PolylineOptions? = null globalList.forEachIndexed { index, point -> if (!globalIndexSet.contains(index)) return@forEachIndexed - Log.w(TAG, "智慧道路内点索引为:$index") + CallerLogger.w("$M_MAP$TAG", "智慧道路内点索引为:$index") if (lastIndex < 0 || index - lastIndex > 1) { globalOptionList.add(PolylineOptions().also { optionTmp = it @@ -1414,7 +1415,7 @@ class TravelRealityView @JvmOverloads constructor( } else { lastTime = System.currentTimeMillis() } - Log.d(TAG, "下发全局轨迹!") + CallerLogger.d("$M_MAP$TAG", "下发全局轨迹!") globalPathResp?.let { globalPath -> if (isSmallMap) { if (globalPath.wayPointsList.size > 0) { @@ -1428,13 +1429,13 @@ class TravelRealityView @JvmOverloads constructor( pointList.add(Point(loc.longitude, loc.latitude)) pointCloneList.add(Point(loc.longitude, loc.latitude)) } - Log.d(TAG, "轨迹点个数为:${pointList.size}") + CallerLogger.d("$M_MAP$TAG", "轨迹点个数为:${pointList.size}") reqData = pointCloneList handleGlobalPath(pointList) requestData(pointList) if (!isRoadTrackReq) { - Log.d(TAG, "处理智慧道路轨迹!") + CallerLogger.d("$M_MAP$TAG", "处理智慧道路轨迹!") handleRoadTrajectories(roadTrackList, pointList) } } @@ -1620,21 +1621,21 @@ class TravelRealityView @JvmOverloads constructor( private fun requestData(pointList: ArrayList) { if (!isCrossDeviceReq) { - Log.d(TAG, "请求获取路口设备!") + CallerLogger.d("$M_MAP$TAG", "请求获取路口设备!") isCrossDeviceReq = true // 获取路口设备 travelNetWorkModel.getCrossDevice(onSuccess = { - Log.d(TAG, "Cross device result is:$it") + CallerLogger.d("$M_MAP$TAG", "Cross device result is:$it") isCrossDeviceReq = false deviceList = it handleCrossDevices(it, pointList) }, onError = { isCrossDeviceReq = false - Log.d(TAG, "Cross device error is:$it") + CallerLogger.d("$M_MAP$TAG", "Cross device error is:$it") }) } if (!isRoadEventReq) { - Log.d(TAG, "请求获取道路事件!") + CallerLogger.d("$M_MAP$TAG", "请求获取道路事件!") // 获取道路事件 var cityCode = CallerMapUIServiceManager.getCityCode() ?: "0734" if (cityCode.isEmpty()) { @@ -1646,13 +1647,13 @@ class TravelRealityView @JvmOverloads constructor( onSuccess = { isRoadEventReq = false retryCount = 0 - Log.d(TAG, "Events result is:$it") + CallerLogger.d("$M_MAP$TAG", "Events result is:$it") handleRoadEvent(it, pointList) }, onError = { isRoadEventReq = false retryCount = 0 - Log.d(TAG, "Events error is:$it") + CallerLogger.d("$M_MAP$TAG", "Events error is:$it") }) } } @@ -1666,7 +1667,7 @@ class TravelRealityView @JvmOverloads constructor( if (mAMap != null && mAMap!!.projection != null) { var latLng: LatLng? // 经纬度转屏幕坐标 - var point = mAMap!!.projection!!.toScreenLocation(position) + val point = mAMap!!.projection!!.toScreenLocation(position) point?.let { travelNetWorkModel.calculateVertex(context, orientation, it).forEach { screenP -> // 每个顶点屏幕坐标转高德坐标 @@ -1817,7 +1818,7 @@ class TravelRealityView @JvmOverloads constructor( } } catch (e: Exception) { e.printStackTrace() - Log.e(TAG, "概览页面渲染异常为:${e.message}") + CallerLogger.e("$M_MAP$TAG", "概览页面渲染异常为:${e.message}") } } } @@ -1859,7 +1860,7 @@ class TravelRealityView @JvmOverloads constructor( } private fun realDrawGlobalPath(polylineOptions: PolylineOptions) { - Log.d(TAG, "realDrawGlobalPath") + CallerLogger.d("$M_MAP$TAG", "realDrawGlobalPath") if (globalPolyline == null) { globalPolyline = mAMap?.addPolyline(polylineOptions) } else { @@ -1868,7 +1869,7 @@ class TravelRealityView @JvmOverloads constructor( } private fun realDrawEventMarkers(eventOptionList: ArrayList) { - Log.d(TAG, "realDrawEventMarkers") + CallerLogger.d("$M_MAP$TAG", "realDrawEventMarkers") eventMarkerList.forEach { it.destroy() } @@ -1881,11 +1882,11 @@ class TravelRealityView @JvmOverloads constructor( it.isClickable = false } } - Log.d(TAG, "计算到绘制事件耗时为:${System.currentTimeMillis() - testTime}") + CallerLogger.d("$M_MAP$TAG", "计算到绘制事件耗时为:${System.currentTimeMillis() - testTime}") } private fun realClearEventMarkers() { - Log.d(TAG, "realClearEventMarkers") + CallerLogger.d("$M_MAP$TAG", "realClearEventMarkers") eventMarkerList.forEach { it.destroy() } @@ -1893,7 +1894,7 @@ class TravelRealityView @JvmOverloads constructor( } private fun realDrawCrossDeviceMarkers(eventMarkerList: ArrayList) { - Log.d(TAG, "realDrawCrossDeviceMarkers") + CallerLogger.d("$M_MAP$TAG", "realDrawCrossDeviceMarkers") deviceMarkerList.forEach { it.destroy() } @@ -1907,7 +1908,7 @@ class TravelRealityView @JvmOverloads constructor( } private fun realClearCrossDeviceMarkers() { - Log.d(TAG, "realClearCrossDeviceMarkers") + CallerLogger.d("$M_MAP$TAG", "realClearCrossDeviceMarkers") deviceMarkerList.forEach { it.destroy() } @@ -1918,7 +1919,7 @@ class TravelRealityView @JvmOverloads constructor( * 绘制在智慧道路范围内的轨迹 */ private fun realDrawGlobalTrajectory(polylineOptionsList: ArrayList) { - Log.d(TAG, "realDrawGlobalTrajectory") + CallerLogger.d("$M_MAP$TAG", "realDrawGlobalTrajectory") if (globalPolylineList.isNotEmpty() && globalPolylineList.size != polylineOptionsList.size) { globalPolylineList.forEach { it.remove() @@ -1948,7 +1949,7 @@ class TravelRealityView @JvmOverloads constructor( * 绘制智慧道路范围(和全局轨迹匹配过的) */ private fun realDrawRoadTrajectory(polylineOptionsList: ArrayList) { - Log.d(TAG, "realDrawRoadTrajectory") + CallerLogger.d("$M_MAP$TAG", "realDrawRoadTrajectory") if (trajectoryPolylineList.isNotEmpty() && trajectoryPolylineList.size != polylineOptionsList.size) { trajectoryPolylineList.forEach { it.remove() @@ -1975,7 +1976,7 @@ class TravelRealityView @JvmOverloads constructor( } private fun realDrawLiveMarkers(liveOptionList: ArrayList) { - Log.d(TAG, "realDrawLiveMarkers") + CallerLogger.d("$M_MAP$TAG", "realDrawLiveMarkers") liveMarkerList.forEach { it.destroy() } @@ -1990,7 +1991,7 @@ class TravelRealityView @JvmOverloads constructor( } private fun realClearLiveMarkers() { - Log.d(TAG, "realClearLiveMarkers") + CallerLogger.d("$M_MAP$TAG", "realClearLiveMarkers") liveMarkerList.forEach { it.destroy() } @@ -1998,7 +1999,7 @@ class TravelRealityView @JvmOverloads constructor( } private fun realUpdateVideoMarker(options: List) { - Log.d(TAG, "realUpdateVideoMarker") + CallerLogger.d("$M_MAP$TAG", "realUpdateVideoMarker") liveMarkerList.forEach { liveMarker -> options.forEach { if (it.position == liveMarker.position) { @@ -2010,7 +2011,7 @@ class TravelRealityView @JvmOverloads constructor( } private fun realDrawEndMarker(options: List) { - Log.d(TAG, "realDrawEndMarker") + CallerLogger.d("$M_MAP$TAG", "realDrawEndMarker") mStartMarker?.destroy() mStartMarker = null mEndMarker?.destroy() @@ -2035,7 +2036,7 @@ class TravelRealityView @JvmOverloads constructor( } private fun realClearAllMarkersAndPolyline() { - Log.d(TAG, "realClearAllMarkersAndPolyline") + CallerLogger.d("$M_MAP$TAG", "realClearAllMarkersAndPolyline") // 清除终点 mStartMarker?.destroy() mStartMarker = null diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt index bbc3498ff1..7d1770f792 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt @@ -47,6 +47,7 @@ class ChainConstant { /* ------------ Tag ---------- */ const val CHAIN_CODE_MULTI_CONNECT = "CHAIN_CODE_MULTI_CONNECT" + const val CHAIN_CODE_ADAS_CONNECT_STATUS = "CHAIN_CODE_ADAS_CONNECT_STATUS" const val CHAIN_CODE_ADAS_CAR_CONFIG = "CHAIN_CODE_ADAS_CAR_CONFIG" const val CHAIN_CODE_ADAS_RECT_DATA = "CHAIN_CODE_ADAS_RECT_DATA" const val CHAIN_CODE_ADAS_CAR_LOC = "CHAIN_CODE_ADAS_CAR_LOC" From 89e5b018af1951c539233a91d2d998d0302e21f7 Mon Sep 17 00:00:00 2001 From: EmArrow Date: Fri, 11 Oct 2024 18:01:54 +0800 Subject: [PATCH 15/16] [6.7.0] remove multi log --- .../mogo/och/common/module/utils/BigFrameAnimatorContainer.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/utils/BigFrameAnimatorContainer.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/utils/BigFrameAnimatorContainer.kt index 12d3f53912..b6449aa3da 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/utils/BigFrameAnimatorContainer.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/utils/BigFrameAnimatorContainer.kt @@ -56,7 +56,6 @@ class BigFrameAnimatorContainer (resId: Int, mHandler = object: Handler(Looper.myLooper()!!){ override fun handleMessage(msg: Message) { super.handleMessage(msg) - CallerLogger.d(TAG,"消息类型:${msg.what}") if(msg.what==0){ val imageView = mSoftReferenceImageView!!.get() if (!mShouldRun || imageView == null) { From 29c39751f191527f278add6717ad7c31485093f0 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Fri, 11 Oct 2024 18:10:17 +0800 Subject: [PATCH 16/16] =?UTF-8?q?[6.7.0]=E6=95=B0=E6=8D=AE=E4=B8=8A?= =?UTF-8?q?=E8=BD=A6-=E7=BA=A2=E7=BB=BF=E7=81=AFbus=E4=B9=98=E5=AE=A2?= =?UTF-8?q?=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../notice/traffic/TrafficLightPromptView.kt | 155 ++++++++++++------ .../drawable-xhdpi/bg_light_prompt_bus_p.png | Bin 0 -> 49017 bytes .../view_traffic_light_prompt_p_bus.xml | 54 ++++++ ...l => view_traffic_light_prompt_p_taxi.xml} | 0 .../src/main/res/values/color.xml | 3 + .../src/main/res/values/dimens.xml | 1 + 6 files changed, 167 insertions(+), 46 deletions(-) create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/bg_light_prompt_bus_p.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_traffic_light_prompt_p_bus.xml rename core/function-impl/mogo-core-function-hmi/src/main/res/layout/{view_traffic_light_prompt_p.xml => view_traffic_light_prompt_p_taxi.xml} (100%) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/traffic/TrafficLightPromptView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/traffic/TrafficLightPromptView.kt index 6cf7f76452..a5336bf601 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/traffic/TrafficLightPromptView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/traffic/TrafficLightPromptView.kt @@ -16,7 +16,6 @@ import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.ui.widget.TypefaceTextView import com.mogo.eagle.core.utilcode.mogo.thread.WorkThreadHandler import com.mogo.eagle.core.utilcode.util.ThreadUtils -import com.mogo.eagle.core.utilcode.util.UiThreadHandler /** * 融合红绿灯变灯提示 @@ -32,7 +31,7 @@ class TrafficLightPromptView @JvmOverloads constructor( private const val TAG = "TrafficLightPromptView" } - private var user = 0 //使用方,driver:0 passenger:1 + private var user = 0 //使用方,driver:0 passenger taxi:1 passenger bus:2 private var tvPromptTitle: TextView ?= null private var tvPromptContent: TextView ?= null private var tvTrafficNum: TypefaceTextView ?= null @@ -91,11 +90,21 @@ class TrafficLightPromptView @JvmOverloads constructor( override fun onAttachedToWindow() { super.onAttachedToWindow() - if(user == 0){ - LayoutInflater.from(context).inflate(R.layout.view_traffic_light_prompt, this, true) - tvPromptTitle = findViewById(R.id.tvPromptTitle) - }else{ - LayoutInflater.from(context).inflate(R.layout.view_traffic_light_prompt_p, this, true) + when (user) { + 0 -> { + //司机端 + LayoutInflater.from(context).inflate(R.layout.view_traffic_light_prompt, this, true) + tvPromptTitle = findViewById(R.id.tvPromptTitle) + } + 1 -> { + //TAXI乘客端 + LayoutInflater.from(context).inflate(R.layout.view_traffic_light_prompt_p_taxi, this, true) + } + else -> { + //BUS乘客端 + LayoutInflater.from(context).inflate(R.layout.view_traffic_light_prompt_p_bus, this, true) + tvPromptTitle = findViewById(R.id.tvPromptTitle) + } } tvPromptContent = findViewById(R.id.tvPromptContent) tvTrafficNum = findViewById(R.id.tvTrafficNum) @@ -163,12 +172,22 @@ class TrafficLightPromptView @JvmOverloads constructor( msg.obj = currentDuration mLightHandler.sendMessageDelayed(msg,200) } - if(user == 0){ - tvTrafficNum?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_green)) - tvTrafficNumDecimal?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_green)) - }else{ - tvTrafficNum?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_green_p)) - tvTrafficNumDecimal?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_green_p)) + when (user) { + 0 -> { + //司机端 + tvTrafficNum?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_green)) + tvTrafficNumDecimal?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_green)) + } + 1 -> { + //TAXI乘客端 + tvTrafficNum?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_green_p)) + tvTrafficNumDecimal?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_green_p)) + } + else -> { + //BUS乘客端 + tvTrafficNum?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_green_p_bus)) + tvTrafficNumDecimal?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_green_p_bus)) + } } } TrafficLightEnum.RED->{ @@ -179,12 +198,22 @@ class TrafficLightPromptView @JvmOverloads constructor( msg.obj = currentDuration mLightHandler.sendMessageDelayed(msg,200) } - if(user == 0){ - tvTrafficNum?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_red)) - tvTrafficNumDecimal?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_red)) - }else{ - tvTrafficNum?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_red_p)) - tvTrafficNumDecimal?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_red_p)) + when (user) { + 0 -> { + //司机端 + tvTrafficNum?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_red)) + tvTrafficNumDecimal?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_red)) + } + 1 -> { + //TAXI乘客端 + tvTrafficNum?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_red_p)) + tvTrafficNumDecimal?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_red_p)) + } + else -> { + //BUS乘客端 + tvTrafficNum?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_red_p_bus)) + tvTrafficNumDecimal?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_red_p_bus)) + } } } TrafficLightEnum.YELLOW->{ @@ -195,12 +224,22 @@ class TrafficLightPromptView @JvmOverloads constructor( msg.obj = currentDuration mLightHandler.sendMessageDelayed(msg,200) } - if(user == 0){ - tvTrafficNum?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_yellow)) - tvTrafficNumDecimal?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_yellow)) - }else{ - tvTrafficNum?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_yellow_p)) - tvTrafficNumDecimal?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_yellow_p)) + when (user) { + 0 -> { + //司机端 + tvTrafficNum?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_yellow)) + tvTrafficNumDecimal?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_yellow)) + } + 1 -> { + //TAXI乘客端 + tvTrafficNum?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_yellow_p)) + tvTrafficNumDecimal?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_yellow_p)) + } + else -> { + //BUS乘客端 + tvTrafficNum?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_yellow_p_bus)) + tvTrafficNumDecimal?.setTextColor(ContextCompat.getColor(context,R.color.light_prompt_yellow_p_bus)) + } } } TrafficLightEnum.BLACK->{ @@ -218,33 +257,57 @@ class TrafficLightPromptView @JvmOverloads constructor( } when(nextState){ TrafficLightEnum.GREEN->{ - if(user == 0){ - //司机端提示 - tvPromptTitle?.text = "即将绿灯" - tvPromptContent?.text = "请准备出发" - }else{ - //乘客端提示 - tvPromptContent?.text = "即将绿灯,请准备出发" + when (user) { + 0 -> { + //司机端提示 + tvPromptTitle?.text = "即将绿灯" + tvPromptContent?.text = "请准备出发" + } + 1 -> { + //TAXI乘客端提示 + tvPromptContent?.text = "即将绿灯,请准备出发" + } + else -> { + //BUS乘客端提示 + tvPromptTitle?.text = "即将绿灯" + tvPromptContent?.text = "请准备出发" + } } } TrafficLightEnum.RED->{ - if(user == 0){ - //司机端提示 - tvPromptTitle?.text = "即将红灯" - tvPromptContent?.text = "请减速慢行" - }else{ - //乘客端提示 - tvPromptContent?.text = "即将红灯,请减速慢行" + when (user) { + 0 -> { + //司机端提示 + tvPromptTitle?.text = "即将红灯" + tvPromptContent?.text = "请减速慢行" + } + 1 -> { + //TAXI乘客端提示 + tvPromptContent?.text = "即将红灯,请减速慢行" + } + else -> { + //BUS乘客端提示 + tvPromptTitle?.text = "即将红灯" + tvPromptContent?.text = "请减速慢行" + } } } TrafficLightEnum.YELLOW->{ - if(user == 0){ - //司机端提示 - tvPromptTitle?.text = "即将黄灯" - tvPromptContent?.text = "请减速慢行" - }else{ - //乘客端提示 - tvPromptContent?.text = "即将红灯,请减速慢行" + when (user) { + 0 -> { + //司机端提示 + tvPromptTitle?.text = "即将黄灯" + tvPromptContent?.text = "请减速慢行" + } + 1 -> { + //TAXI乘客端提示 + tvPromptContent?.text = "即将红灯,请减速慢行" + } + else -> { + //BUS乘客端提示 + tvPromptTitle?.text = "即将黄灯" + tvPromptContent?.text = "请减速慢行" + } } } TrafficLightEnum.BLACK->{ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/bg_light_prompt_bus_p.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/bg_light_prompt_bus_p.png new file mode 100644 index 0000000000000000000000000000000000000000..96a1c7baae23a61df9db5df290fea067bae4a36e GIT binary patch literal 49017 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 literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_traffic_light_prompt_p_bus.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_traffic_light_prompt_p_bus.xml new file mode 100644 index 0000000000..d341621241 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_traffic_light_prompt_p_bus.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_traffic_light_prompt_p.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_traffic_light_prompt_p_taxi.xml similarity index 100% rename from core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_traffic_light_prompt_p.xml rename to core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_traffic_light_prompt_p_taxi.xml diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml index 555525b2a3..f286b4bedd 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml @@ -84,8 +84,11 @@ #31FF56 #FFCD3D #F63C12 + #F63C12 #36DB1C + #1FD74A #FDB700 + #FDB400 #131415 diff --git a/core/mogo-core-res/src/main/res/values/dimens.xml b/core/mogo-core-res/src/main/res/values/dimens.xml index edb2344b4f..6a2585cc0d 100644 --- a/core/mogo-core-res/src/main/res/values/dimens.xml +++ b/core/mogo-core-res/src/main/res/values/dimens.xml @@ -1106,6 +1106,7 @@ 45dp 46dp 48dp + 50dp 52dp 55dp 57dp