From 91954326e4ea484d280c1fa3bf368a32071b4a00 Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Tue, 15 Jul 2025 16:28:17 +0800 Subject: [PATCH] =?UTF-8?q?[8.1.2][fix]=E8=A7=A3=E5=86=B3=E8=B7=AF?= =?UTF-8?q?=E5=8F=A3=E5=9C=BA=E6=99=AF=E5=86=B3=E7=AD=96=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E6=9C=89=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/identify/IdentifyFactory.kt | 22 ++++++++++++-- .../core/function/view/DecisionLayout.kt | 29 ++++++++++++++++++- 2 files changed, 48 insertions(+), 3 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 a63c633aa1..5849ba0754 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,6 +10,7 @@ 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 @@ -55,6 +57,8 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener, IMoGoAutopilotCarConf // 维护一个线程定时轮询数据进行地图绘制 private val mDrawerHandler: Handler = object : Handler(WorkThreadHandler.newInstance("IdentifyFactoryDrawer").looper) { + private var isPredicted = false + override fun handleMessage(msg: Message) { super.handleMessage(msg) when (msg.what) { @@ -74,7 +78,14 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener, IMoGoAutopilotCarConf 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) { + isPredicted = true + mapInstanceList.add(MogoMap.SMALL_PRED_MAP) + } + identify.renderAdasRegResults(objectList, mapInstanceList) startTime = System.nanoTime() } } @@ -107,7 +118,14 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener, IMoGoAutopilotCarConf } MSG_DATA_CLEAR -> { - identify.clearOldMarker() + if (isPredicted) { + val mapInstanceList = ArrayList() + mapInstanceList.add(MogoMap.DEFAULT) + mapInstanceList.add(MogoMap.SMALL_PRED_MAP) + identify.clearOldMarkers(mapInstanceList) + } else { + identify.clearOldMarker() + } } MSG_DATA_AI_CLEAR -> { 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 91b3869a4d..477907fe24 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 @@ -5,6 +5,7 @@ import android.content.Context import android.os.Bundle import android.os.SystemClock import android.util.AttributeSet +import android.util.Log import android.view.LayoutInflater import androidx.constraintlayout.widget.ConstraintLayout import chassis.Chassis @@ -24,6 +25,7 @@ import com.shuyu.gsyvideoplayer.model.VideoOptionModel import com.shuyu.gsyvideoplayer.player.IjkPlayerManager import com.shuyu.gsyvideoplayer.player.PlayerFactory import com.shuyu.gsyvideoplayer.utils.GSYVideoType +import com.zhidaoauto.map.data.road.RoadCross import com.zhidaoauto.map.data.road.StopLine import kotlinx.android.synthetic.main.layout_decision_container.view.tvPre1 import kotlinx.android.synthetic.main.layout_decision_container.view.tvPre2 @@ -120,9 +122,15 @@ class DecisionLayout @JvmOverloads constructor( fun onDestroy() { } + @Volatile + private var isCrossScene = false private var state = -1 private var action = -1 override fun pncActions(planningActionMsg: MessagePad.PlanningActionMsg) { + if (isCrossScene) { + Log.d(TAG, "路口场景不直接使用决策信息!") + return + } val actionMsg = planningActionMsg.actionMsg val s = actionMsg.drivingState.number val a = actionMsg.drivingAction.number @@ -181,9 +189,11 @@ class DecisionLayout @JvmOverloads constructor( } } + @Volatile private var lastUpdateTime = 0L override fun onStopLineInfo(info: StopLine) { - if (info.distance < 15) { + if (info.distance < 15 && !isInCrossRoad) {// 不在路口内且距离停止线小于15m + isCrossScene = true val time = System.currentTimeMillis() if (time - lastUpdateTime > 500) { lastUpdateTime = time @@ -204,6 +214,23 @@ class DecisionLayout @JvmOverloads constructor( } } + @Volatile + private var isInCrossRoad = false + + override fun onRoadChange(cross: Boolean, roadCross: RoadCross?) { + if (isInCrossRoad && !cross) {// 上次在路口内,当前不在路口内,则代表出路口了 + isCrossScene = false + val time = System.currentTimeMillis() + if (time - lastUpdateTime > 500) { + lastUpdateTime = time + ThreadUtils.runOnUiThread { + updateAnim(2)// 出路口默认显示"车道保持" + } + } + } + isInCrossRoad = cross + } + @SuppressLint("SetTextI18n") private fun updateAnim(type: Int) { val randomNum = 80 + Random(SystemClock.elapsedRealtime()).nextInt(16)