From 039ce42e4616b8cd280eb3b3ae46e69f6adf420a Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Tue, 17 Jun 2025 11:53:23 +0800 Subject: [PATCH] =?UTF-8?q?[8.1.0][opt]=E8=B0=83=E6=95=B4B2=E9=A2=84?= =?UTF-8?q?=E6=B5=8B=E5=92=8C=E5=86=B3=E7=AD=96=E7=9A=84UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../passenger/presenter/PM2ADASPresenter.kt | 14 ++--- .../business/identify/IdentifyFactory.kt | 51 ++++++++++++++++++- .../core/function/view/DecisionLayout.kt | 27 ++++++++++ .../core/function/view/PredictionLayout.kt | 1 - .../layout/layout_b2_decision_container.xml | 33 ++++++------ .../layout/layout_b2_prediction_container.xml | 13 ++--- 6 files changed, 107 insertions(+), 32 deletions(-) diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/b2/com/mogo/och/shuttle/weaknet/passenger/presenter/PM2ADASPresenter.kt b/OCH/shuttle/passenger_weaknet/src/main/java/b2/com/mogo/och/shuttle/weaknet/passenger/presenter/PM2ADASPresenter.kt index 7781ff15d1..29fb9842f2 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/b2/com/mogo/och/shuttle/weaknet/passenger/presenter/PM2ADASPresenter.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/b2/com/mogo/och/shuttle/weaknet/passenger/presenter/PM2ADASPresenter.kt @@ -231,12 +231,12 @@ class PM2ADASPresenter(view: PM2HPMapFragment?) : } private fun updateMapFlag(open: Boolean) { -// if (open) { -// FunctionBuildConfig.isDrawDecIdentifyData = true -// FunctionBuildConfig.isDrawPreIdentifyData = true -// } else { -// FunctionBuildConfig.isDrawDecIdentifyData = false -// FunctionBuildConfig.isDrawPreIdentifyData = false -// } + if (open) { + FunctionBuildConfig.isDrawDecIdentifyData = true + FunctionBuildConfig.isDrawPreIdentifyData = true + } else { + FunctionBuildConfig.isDrawDecIdentifyData = false + FunctionBuildConfig.isDrawPreIdentifyData = false + } } } \ No newline at end of file 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 a63c633aa1..32f4f56a5c 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 @@ -2,6 +2,7 @@ package com.mogo.eagle.core.function.business.identify import android.os.Handler import android.os.Message +import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.deva.chain.ChainConstant import com.mogo.eagle.core.data.traffic.TrafficData import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotCarConfigListener @@ -9,10 +10,12 @@ 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.thread.WorkThreadHandler +import com.mogo.map.MogoMap import com.zhjt.service.chain.ChainLog import mogo.telematics.pad.MessagePad import mogo.telematics.pad.MessagePad.TrackedObject import mogo.yycp.api.proto.SocketDownData +import prediction2025.Prediction2025 import java.util.concurrent.TimeUnit object IdentifyFactory : Identify, IMoGoObuStatusListener, IMoGoAutopilotCarConfigListener { @@ -28,9 +31,21 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener, IMoGoAutopilotCarConf internal val aiCloudDataDrawer = IdentifyAiCloudDataDrawer() } + // 预测 + object PreDriverIdentify { + internal val preDataDrawer = IdentifyOriginDataDrawer() + } + private var identify: Identify = DriverIdentify.originDataDrawer private var aiCloudIdentify: Identify? = null + + // 预测 + private var preIdentify: Identify = PreDriverIdentify.preDataDrawer + private var startTime: Long = 0L + + // private var preStartTime: Long = 0L +// private var desStartTime: Long = 0L private var dockerVersion: String? = null fun initType() { @@ -51,6 +66,8 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener, IMoGoAutopilotCarConf private const val MSG_DATA_OBU_WARNING_REMOVE = 4 private const val MSG_DATA_CLEAR = 5 private const val MSG_DATA_AI_CLEAR = 6 + private const val MSG_DATA_PRE_TRACK = 7 + private const val MSG_DATA_PRE_CLEAR = 8 // 维护一个线程定时轮询数据进行地图绘制 private val mDrawerHandler: Handler = @@ -68,13 +85,20 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener, IMoGoAutopilotCarConf if (internal >= 1000) { lostFrame(internal.toString()) identify.clearOldMarker() + preIdentify.clearOldMarker() } sendEmptyMessageDelayed(MSG_CHECK, 1000L) } MSG_DATA_TRACK -> { if (msg.obj is List<*>) { - identify.renderAdasRecognizedResult(msg.obj as List?) + val objectList = msg.obj as List? + val mapInstanceList = ArrayList() + mapInstanceList.add(MogoMap.DEFAULT) + if (FunctionBuildConfig.isDrawPreIdentifyData) { + mapInstanceList.add(MogoMap.SMALL_PRED_MAP) + } + identify.renderAdasRegResults(objectList, mapInstanceList) startTime = System.nanoTime() } } @@ -88,6 +112,9 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener, IMoGoAutopilotCarConf } } + MSG_DATA_PRE_TRACK -> { + } + MSG_DATA_WARNING -> { if (msg.obj is List<*>) { identify.renderPlanningWarningObj(msg.obj as List?) @@ -107,12 +134,19 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener, IMoGoAutopilotCarConf } MSG_DATA_CLEAR -> { - identify.clearOldMarker() + val mapInstanceList = ArrayList() + mapInstanceList.add(MogoMap.DEFAULT) + mapInstanceList.add(MogoMap.SMALL_PRED_MAP) + identify.clearOldMarkers(mapInstanceList) } MSG_DATA_AI_CLEAR -> { aiCloudIdentify!!.clearAiMarker(msg.data.getString("mapInstance")!!) } + + MSG_DATA_PRE_CLEAR -> { + preIdentify.clearPredictionMarker(MogoMap.SMALL_PRED_MAP) + } } } } @@ -124,6 +158,13 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener, IMoGoAutopilotCarConf mDrawerHandler.sendMessage(message) } + override fun renderPredictionResult(predictionObjectList: List?) { + val message = Message.obtain() + message.what = MSG_DATA_PRE_TRACK + message.obj = predictionObjectList + mDrawerHandler.sendMessage(message) + } + override fun renderAiCloudResult( resultList: List, mapInstance: String @@ -155,6 +196,12 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener, IMoGoAutopilotCarConf mDrawerHandler.sendMessage(message) } + override fun clearPredictionMarker(mapInstance: String) { + val message = Message.obtain() + message.what = MSG_DATA_PRE_CLEAR + mDrawerHandler.sendMessage(message) + } + override fun updateTrackerWarningInfo(trafficData: TrafficData) { super.updateTrackerWarningInfo(trafficData) val message = Message.obtain() diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/DecisionLayout.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/DecisionLayout.kt index ecde6d6bfe..e75318fb4f 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/DecisionLayout.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/DecisionLayout.kt @@ -7,12 +7,16 @@ import android.util.AttributeSet import android.view.LayoutInflater import androidx.constraintlayout.widget.ConstraintLayout import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotIdentifyListener +import com.mogo.eagle.core.function.business.routeoverlay.DecisionDataManager +import com.mogo.eagle.core.function.business.routeoverlay.PredictionDataManager import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager import com.mogo.eagle.core.function.map.R import com.mogo.eagle.core.utilcode.util.ThreadUtils +import com.mogo.eagle.core.utilcode.util.UiThreadHandler import kotlinx.android.synthetic.main.layout_decision_container.view.tvPre1 import kotlinx.android.synthetic.main.layout_decision_container.view.tvPre2 import kotlinx.android.synthetic.main.layout_decision_container.view.tvPre3 +import me.jessyan.autosize.utils.AutoSizeUtils class DecisionLayout @JvmOverloads constructor( context: Context, @@ -40,6 +44,7 @@ class DecisionLayout @JvmOverloads constructor( 0 -> LayoutInflater.from(context).inflate(R.layout.layout_decision_container, this, true) else -> LayoutInflater.from(context).inflate(R.layout.layout_b2_decision_container, this, true) } + storeWidthAndHeight() } override fun onAttachedToWindow() { @@ -93,4 +98,26 @@ class DecisionLayout @JvmOverloads constructor( fun onDestroy() { } + + private fun storeWidthAndHeight() { + UiThreadHandler.post { + when (carType) { + // 默认值为对应0,不需要赋值 + 1 -> { + val decWid = AutoSizeUtils.dp2px(context, 110f) + val decHet = AutoSizeUtils.dp2px(context, 211f) + val mapWid = AutoSizeUtils.dp2px(context, 996f) + val mapHet = AutoSizeUtils.dp2px(context, 650f) + PredictionDataManager.getInstance()?.decWidth = decWid + PredictionDataManager.getInstance()?.decHeight = decHet + PredictionDataManager.getInstance()?.mapWidth = mapWid + PredictionDataManager.getInstance()?.mapHeight = mapHet + DecisionDataManager.getInstance()?.decWidth = decWid + DecisionDataManager.getInstance()?.decHeight = decHet + DecisionDataManager.getInstance()?.mapWidth = mapWid + DecisionDataManager.getInstance()?.mapHeight = mapHet + } + } + } + } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/PredictionLayout.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/PredictionLayout.kt index 92eb717fe6..41cfa3db5f 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/PredictionLayout.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/PredictionLayout.kt @@ -16,7 +16,6 @@ class PredictionLayout @JvmOverloads constructor( private var carType = 0 init { - LayoutInflater.from(context).inflate(R.layout.layout_prediction_container, this, true) initView(attrs) } diff --git a/core/function-impl/mogo-core-function-map/src/main/res/layout/layout_b2_decision_container.xml b/core/function-impl/mogo-core-function-map/src/main/res/layout/layout_b2_decision_container.xml index f0e085b467..9a1f892dad 100644 --- a/core/function-impl/mogo-core-function-map/src/main/res/layout/layout_b2_decision_container.xml +++ b/core/function-impl/mogo-core-function-map/src/main/res/layout/layout_b2_decision_container.xml @@ -12,8 +12,8 @@ android:layout_height="211dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginStart="@dimen/dp_27" - android:layout_marginBottom="24dp" + android:layout_marginStart="@dimen/dp_12" + android:layout_marginBottom="11dp" app:map_index="0" /> @@ -24,7 +24,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginBottom="24dp" + android:layout_marginBottom="11dp" app:map_index="1" /> @@ -34,22 +34,23 @@ android:layout_height="211dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginEnd="@dimen/dp_27" - android:layout_marginBottom="20dp" + android:layout_marginEnd="@dimen/dp_12" + android:layout_marginBottom="11dp" app:map_index="2" /> \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-map/src/main/res/layout/layout_b2_prediction_container.xml b/core/function-impl/mogo-core-function-map/src/main/res/layout/layout_b2_prediction_container.xml index 1c2106bf51..784fb58ea6 100644 --- a/core/function-impl/mogo-core-function-map/src/main/res/layout/layout_b2_prediction_container.xml +++ b/core/function-impl/mogo-core-function-map/src/main/res/layout/layout_b2_prediction_container.xml @@ -8,24 +8,25 @@