From f3f0d9df5a8828ff9eb49d55c682a336e283fc0f Mon Sep 17 00:00:00 2001 From: yangyakun Date: Fri, 16 May 2025 17:48:59 +0800 Subject: [PATCH 01/13] =?UTF-8?q?[8.0.0]=20[fea]=20[=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=97=B6=20=E9=94=80=E6=AF=81=20=E4=B8=AD?= =?UTF-8?q?=E9=97=B4=E6=A8=A1=E5=9D=97]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../passenger/ui/homepage/HomeView.kt | 111 ++++++++++++++---- .../passenger/ui/homepage/HomeViewModel.kt | 32 +++-- .../src/main/res/layout/taxi_p_home.xml | 36 ++++-- .../src/main/res/values/ids.xml | 5 + 4 files changed, 142 insertions(+), 42 deletions(-) create mode 100644 OCH/taxi/unmanned-passenger/src/main/res/values/ids.xml diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/homepage/HomeView.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/homepage/HomeView.kt index 6a7e480c80..f2b49ae340 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/homepage/HomeView.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/homepage/HomeView.kt @@ -12,20 +12,24 @@ import androidx.constraintlayout.widget.Guideline import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.findViewTreeViewModelStoreOwner import com.mogo.eagle.core.data.map.MogoLatLng +import com.mogo.eagle.core.function.view.DecisionLayout +import com.mogo.eagle.core.function.view.PredictionLayout import com.mogo.eagle.core.utilcode.kotlin.onClick import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.och.bridge.autopilot.location.OchLocationManager +import com.mogo.och.common.module.utils.RxUtils import com.mogo.och.unmanned.passenger.ui.bar.LeftBarView import com.mogo.och.unmanned.taxi.passenger.R import kotlinx.android.synthetic.main.taxi_p_home.view.acbtn_show_all -import kotlinx.android.synthetic.main.taxi_p_home.view.acbtn_show_hdmap +import kotlinx.android.synthetic.main.taxi_p_home.view.acbtn_show_hdmap_create +import kotlinx.android.synthetic.main.taxi_p_home.view.acbtn_show_hdmap_destory import kotlinx.android.synthetic.main.taxi_p_home.view.decContainer import kotlinx.android.synthetic.main.taxi_p_home.view.hdMapView -import kotlinx.android.synthetic.main.taxi_p_home.view.preContainer import kotlinx.android.synthetic.main.taxi_p_home.view.lbv_go2_center import kotlinx.android.synthetic.main.taxi_p_home.view.leftEndGuideline import kotlinx.android.synthetic.main.taxi_p_home.view.midContainer import kotlinx.android.synthetic.main.taxi_p_home.view.midStartGuideline +import kotlinx.android.synthetic.main.taxi_p_home.view.preContainer class HomeView @JvmOverloads constructor( context: Context, @@ -43,6 +47,9 @@ class HomeView @JvmOverloads constructor( private var viewModel: HomeViewModel?=null + private var predictionLayout: PredictionLayout? = null + private var decisionLayout: DecisionLayout? = null + private fun initView() { @@ -64,8 +71,11 @@ class HomeView @JvmOverloads constructor( }) - acbtn_show_hdmap.onClick { - showHdMap() + acbtn_show_hdmap_create.onClick { + showHdMap(false) + } + acbtn_show_hdmap_destory.onClick { + showHdMap(true) } acbtn_show_all.onClick { showAmapAndHdMap() @@ -76,51 +86,82 @@ class HomeView @JvmOverloads constructor( /** * 展示两屏幕 */ - fun showHdMap(){ - updateViewState(true,false,false) + fun showHdMap(destoryMap: Boolean){ + CallerLogger.d(TAG,"展示高德 不展示高精") + if(destoryMap){ + leftEndGuideline.setGuidelinePercent(0.666f) + lbv_go2_center.visibility = VISIBLE + midContainer.visibility = GONE + destoryMaps() + }else{ + if(predictionLayout==null||decisionLayout==null){ + createMaps() + leftEndGuideline.setGuidelinePercent(0.666f) + lbv_go2_center.visibility = VISIBLE + midContainer.visibility = GONE + }else { + leftEndGuideline.setGuidelinePercent(0.666f) + lbv_go2_center.visibility = VISIBLE + midContainer.visibility = GONE + } + } + } /** * 展示3屏 */ fun showAmapAndHdMap(){ - updateViewState(true,true,false) + // 展示预测地图和高精地图 + CallerLogger.d(TAG,"展示高德地图和高精地图") + if(predictionLayout==null||decisionLayout==null){ + createMaps() + midStartGuideline.setGuidelinePercent(0.333f) + leftEndGuideline.setGuidelinePercent(0.333f) + lbv_go2_center.visibility = GONE + midContainer.visibility = VISIBLE + }else { + midStartGuideline.setGuidelinePercent(0.333f) + leftEndGuideline.setGuidelinePercent(0.333f) + lbv_go2_center.visibility = GONE + midContainer.visibility = VISIBLE + } } fun onCreate(savedInstanceState: Bundle?) { hdMapView.onCreate(savedInstanceState) - preContainer.onCreate(savedInstanceState) - decContainer.onCreate(savedInstanceState) + predictionLayout?.onCreate(savedInstanceState) + decisionLayout?.onCreate(savedInstanceState) } fun onSaveInstanceState(outState: Bundle) { hdMapView.onSaveInstanceState(outState) - preContainer.onSaveInstanceState(outState) - decContainer.onSaveInstanceState(outState) + predictionLayout?.onSaveInstanceState(outState) + decisionLayout?.onSaveInstanceState(outState) } fun onResume() { hdMapView.onResume() - preContainer.onResume() - decContainer.onResume() + predictionLayout?.onResume() + decisionLayout?.onResume() } fun onLowMemory() { hdMapView.onLowMemory() - preContainer.onLowMemory() - decContainer.onLowMemory() + predictionLayout?.onLowMemory() + decisionLayout?.onLowMemory() } fun onPause() { hdMapView.onPause() - preContainer.onPause() - decContainer.onPause() + predictionLayout?.onPause() + decisionLayout?.onPause() } fun onDestroy() { hdMapView.onDestroy() - preContainer.onDestroy() - decContainer.onDestroy() + predictionLayout?.onDestroy() + decisionLayout?.onDestroy() } override fun onAttachedToWindow() { @@ -249,12 +290,40 @@ class HomeView @JvmOverloads constructor( } } - override fun showTwoScreen() { - showHdMap() + override fun showTwoScreen(destoryMap:Boolean) { + showHdMap(destoryMap) } override fun showThreeScreen() { showAmapAndHdMap() } + private fun createMaps(){ + if(predictionLayout == null){ + predictionLayout = PredictionLayout(context) + predictionLayout?.id = R.id.prediction_layout_id + preContainer.addView(predictionLayout) + predictionLayout?.onCreate(null) + predictionLayout?.onResume() + } + if(decisionLayout == null){ + decisionLayout = DecisionLayout(context) + decisionLayout?.id = R.id.decision_layout_id + decContainer.addView(decisionLayout) + decisionLayout?.onCreate(null) + decisionLayout?.onResume() + } + } + + private fun destoryMaps() { + predictionLayout?.onDestroy() + decisionLayout?.onDestroy() + RxUtils.createSubscribe(50) { + preContainer.removeView(predictionLayout) + decContainer.removeView(decisionLayout) + predictionLayout = null + decisionLayout = null + } + } + } \ No newline at end of file diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/homepage/HomeViewModel.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/homepage/HomeViewModel.kt index 355b465fd2..e0bd69becc 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/homepage/HomeViewModel.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/homepage/HomeViewModel.kt @@ -35,7 +35,7 @@ class HomeViewModel : ViewModel(), BridgeListener, OrderListener { } interface HomeCallback { - fun showTwoScreen() + fun showTwoScreen(destoryMap:Boolean) fun showThreeScreen() } @@ -56,19 +56,31 @@ class HomeViewModel : ViewModel(), BridgeListener, OrderListener { fun checkScreenChange(){ CallerLogger.d(TAG,"havePredictionInfos:${havePredictionInfos}--haveTrajectoryInfos:${haveTrajectoryInfos}--order:${order}") - if(order!=null&&havePredictionInfos&&havePredictionInfos){ - FunctionBuildConfig.isDrawDecIdentifyData = true - FunctionBuildConfig.isDrawPreIdentifyData = true - // 展示三联屏 - BizLoopManager.runInMainThread{ - this.viewCallback?.showThreeScreen() - } - }else{ + + if(order==null){ + // 进入双屏 需要销毁创建4张地图 FunctionBuildConfig.isDrawDecIdentifyData = false FunctionBuildConfig.isDrawPreIdentifyData = false // 展示二联屏幕 BizLoopManager.runInMainThread{ - this.viewCallback?.showTwoScreen() + this.viewCallback?.showTwoScreen(true) + } + }else{ + if(havePredictionInfos&&haveTrajectoryInfos){ + // 进入三屏幕 + FunctionBuildConfig.isDrawDecIdentifyData = true + FunctionBuildConfig.isDrawPreIdentifyData = true + // 展示三联屏 + BizLoopManager.runInMainThread{ + this.viewCallback?.showThreeScreen() + } + }else{ + // 进入双屏 需要隐藏 + FunctionBuildConfig.isDrawDecIdentifyData = false + FunctionBuildConfig.isDrawPreIdentifyData = false + BizLoopManager.runInMainThread{ + this.viewCallback?.showTwoScreen(false) + } } } } diff --git a/OCH/taxi/unmanned-passenger/src/main/res/layout/taxi_p_home.xml b/OCH/taxi/unmanned-passenger/src/main/res/layout/taxi_p_home.xml index 10dd33baef..8995cc8f02 100644 --- a/OCH/taxi/unmanned-passenger/src/main/res/layout/taxi_p_home.xml +++ b/OCH/taxi/unmanned-passenger/src/main/res/layout/taxi_p_home.xml @@ -34,25 +34,25 @@ app:layout_constraintStart_toEndOf="@+id/midStartGuideline" app:layout_constraintEnd_toStartOf="@id/rightStartGuideline"> - + android:layout_height="@dimen/dp_676"/> - - + android:layout_height="@dimen/dp_676"/> @@ -148,19 +148,33 @@ + + + \ No newline at end of file diff --git a/OCH/taxi/unmanned-passenger/src/main/res/values/ids.xml b/OCH/taxi/unmanned-passenger/src/main/res/values/ids.xml new file mode 100644 index 0000000000..b9a90c85af --- /dev/null +++ b/OCH/taxi/unmanned-passenger/src/main/res/values/ids.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file From 89592bbedd7135cd58679224086f4658913d13bc Mon Sep 17 00:00:00 2001 From: yangyakun Date: Fri, 16 May 2025 17:49:16 +0800 Subject: [PATCH 02/13] =?UTF-8?q?[8.0.0]=20[fea]=20[=E5=9F=9F=E5=90=8D?= =?UTF-8?q?=E5=A1=AB=E5=85=85]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/config/urlConfig.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/config/urlConfig.json b/app/config/urlConfig.json index b7eac342c5..1ff2715885 100644 --- a/app/config/urlConfig.json +++ b/app/config/urlConfig.json @@ -11,7 +11,7 @@ "eagle_dns_url": "", "bind_driver_qr_url": "", "chart_socket_url":"", - "nde_url":"", + "nde_url":"https://nde-qa-city.zhidaozhixing.com", "secure_active_url":"http://gateway.ee-private-dev1.myghost.zhidaoauto.com/openapi/security/deviceCert/active", "secure_refresh_url":"http://gateway.ee-private-dev1.myghost.zhidaoauto.com/openapi/security/deviceCert/refresh", "secure_auth_url":"http://gateway.ee-private-dev1.myghost.zhidaoauto.com/openapi/security/deviceCert/auth", @@ -29,7 +29,7 @@ "eagle_dns_url": "", "bind_driver_qr_url": "", "chart_socket_url":"", - "nde_url":"", + "nde_url":"https://nde-qa-city.zhidaozhixing.com", "secure_active_url":"https://mygateway.zhidaozhixing.com/openapi/security/deviceCert/active", "secure_refresh_url":"https://mygateway.zhidaozhixing.com/openapi/security/deviceCert/refresh", "secure_auth_url":"https://mygateway.zhidaozhixing.com/openapi/security/deviceCert/auth", @@ -49,7 +49,7 @@ "eagle_dns_url": "http://eagle-dns-a.zhidaozhixing.com/", "bind_driver_qr_url": "https://och-mini-eh.zhidaozhixing.com?pipe=ehsafety&sn=%1$s", "chart_socket_url":"wss://acp-eh.zhidaozhixing.com/ws", - "nde_url":"", + "nde_url":"https://nde-qa-city.zhidaozhixing.com", "secure_active_url":"http://gateway.ee-private-dev1.myghost.zhidaoauto.com/openapi/security/deviceCert/active", "secure_refresh_url":"http://gateway.ee-private-dev1.myghost.zhidaoauto.com/openapi/security/deviceCert/refresh", "secure_auth_url":"http://gateway.ee-private-dev1.myghost.zhidaoauto.com/openapi/security/deviceCert/auth", @@ -67,7 +67,7 @@ "eagle_dns_url": "https://och-hailing-eh.zhidaozhixing.com/", "bind_driver_qr_url": "https://och-mini-eh.zhidaozhixing.com?pipe=ehsafety&sn=%1$s", "chart_socket_url":"wss://acp-eh.zhidaozhixing.com/ws", - "nde_url":"", + "nde_url":"https://nde-qa-city.zhidaozhixing.com", "secure_active_url":"https://mygateway.zhidaozhixing.com/openapi/security/deviceCert/active", "secure_refresh_url":"https://mygateway.zhidaozhixing.com/openapi/security/deviceCert/refresh", "secure_auth_url":"https://mygateway.zhidaozhixing.com/openapi/security/deviceCert/auth", @@ -87,7 +87,7 @@ "eagle_dns_url": "http://eagle-dns-a.zhidaozhixing.com/", "bind_driver_qr_url": "https://och-mini-yt.zhidaozhixing.com?pipe=ytsafety&sn=%1$s", "chart_socket_url":"", - "nde_url":"", + "nde_url":"https://nde-qa-city.zhidaozhixing.com", "secure_active_url":"http://gateway.ee-private-dev1.myghost.zhidaoauto.com/openapi/security/deviceCert/active", "secure_refresh_url":"http://gateway.ee-private-dev1.myghost.zhidaoauto.com/openapi/security/deviceCert/refresh", "secure_auth_url":"http://gateway.ee-private-dev1.myghost.zhidaoauto.com/openapi/security/deviceCert/auth", @@ -105,7 +105,7 @@ "eagle_dns_url": "https://och-hailing-yt.zhidaozhixing.com/", "bind_driver_qr_url": "https://och-mini-yt.zhidaozhixing.com?pipe=ytsafety&sn=%1$s", "chart_socket_url":"", - "nde_url":"", + "nde_url":"https://nde-qa-city.zhidaozhixing.com", "secure_active_url":"https://mygateway.zhidaozhixing.com/openapi/security/deviceCert/active", "secure_refresh_url":"https://mygateway.zhidaozhixing.com/openapi/security/deviceCert/refresh", "secure_auth_url":"https://mygateway.zhidaozhixing.com/openapi/security/deviceCert/auth", From 86798e322f17ff94f9f6ff8db66524a81177c5cb Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Fri, 16 May 2025 18:17:18 +0800 Subject: [PATCH 03/13] =?UTF-8?q?[8.0.0]MogoMind=E9=9C=80=E6=B1=82?= =?UTF-8?q?=E8=B0=83=E6=95=B4PNC=E4=BA=8B=E4=BB=B6=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E5=92=8C=E8=AF=A6=E6=83=85=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=EF=BC=8C=E8=BD=A6=E9=BE=99=E6=8E=A8=E8=8D=90=E8=BD=A6=E9=81=93?= =?UTF-8?q?=E8=83=8C=E6=99=AF=E8=89=B2=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/aiview/PNCActionsViewModel.kt | 168 +++++++++++++++++- .../ui/aiview/adapter/AIMessageViewHolder.kt | 8 +- .../ui/aiview/bean/AssistantMessage.kt | 4 +- .../main/res/layout/item_ai_pnc_action.xml | 59 ++++-- .../res/drawable/bg_nde_road_recommend.xml | 2 +- 5 files changed, 224 insertions(+), 17 deletions(-) diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/PNCActionsViewModel.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/PNCActionsViewModel.kt index 65d52298e2..b906723e24 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/PNCActionsViewModel.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/PNCActionsViewModel.kt @@ -7,6 +7,7 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerPlanningActionsListenerManager import com.mogo.eagle.core.utilcode.util.UiThreadHandler +import com.mogo.och.unmanned.passenger.model.TaxiPassengerModel import com.mogo.och.unmanned.passenger.ui.aiview.bean.AIMessage import mogo.telematics.pad.MessagePad @@ -47,8 +48,12 @@ class PNCActionsViewModel: ViewModel(), IMoGoAutopilotPlanningActionsListener { actions?.let { if(it.isNotEmpty() && it != currentAction){ currentAction = it - val action = AIMessage.PNCAction(it+System.currentTimeMillis(),it) - AIMessageManager.post(action) + val title = getActionTitle(it) + if(title.isNotEmpty()){ + val desc = getActionDesc(title) + val action = AIMessage.PNCAction(it+System.currentTimeMillis(),title,desc,System.currentTimeMillis()) + AIMessageManager.post(action) + } } } @@ -59,4 +64,163 @@ class PNCActionsViewModel: ViewModel(), IMoGoAutopilotPlanningActionsListener { } } + private fun getActionTitle(pncAction: String): String{ + return when(pncAction){ + "正在进站"->{ + "车辆进站" + } + "等待进站"->{ + "车辆等待进站" + } + "正在出站"->{ + "车辆出站" + } + "等待出站"->{ + "车辆等待出站" + } + "正在向左变道"->{ + "车辆向左变道" + } + "正在向右变道"->{ + "车辆向右变道" + } + "正在完成变道"->{ + "车辆完成变道" + } + "正在绕过障碍物"->{ + "车辆正在绕过前方障碍物" + } + "正在向左绕行避让前方静止障碍物"->{ + "车辆正在绕过前方障碍物" + } + "正在向右绕行避让前方静止障碍物"->{ + "车辆正在绕过前方障碍物" + } + "正在避让障碍物"->{ + "车辆正在避让前方障碍物" + } + "正在向左变道避让前方静止障碍物"->{ + "车辆正在避让前方障碍物" + } + "正在向右变道避让前方静止障碍物"->{ + "车辆正在避让前方障碍物" + } + "正在等红灯"->{ + "路口等红灯" + } + "正在向左变道避让前方道路施工"->{ + "车辆正在变道避让前方道路施工" + } + "正在向右变道避让前方道路施工"->{ + "车辆正在变道避让前方道路施工" + } + "正在向左绕行避让前方道路施工"->{ + "车辆正在绕行避让前方道路施工" + } + "正在向右绕行避让前方道路施工"->{ + "车辆正在绕行避让前方道路施工" + } + + "正在向左变道避让前方道路事故"->{ + "车辆正在变道避让前方道路事故" + } + "正在向右变道避让前方道路事故"->{ + "车辆正在变道避让前方道路事故" + } + "正在向左绕行避让前方道路事故"->{ + "车辆正在绕行避让前方道路事故" + } + "正在向右绕行避让前方道路事故"->{ + "车辆正在绕行避让前方道路事故" + } + "正在跟随车辆行驶"->{ + "车辆正在跟车通行" + } + "正在跟车行驶"->{ + "车辆正在跟车通行" + } + "正在向左变道避让前方车龙"->{ + "车辆正在绕行前方车龙" + } + "正在向右变道避让前方车龙"->{ + "车辆正在绕行前方车龙" + } + "正在使用云端规划通过路口"->{ + "车辆正在使用云端轨迹通行" + } + "正在避让后方来车"->{ + "车辆正在避让后方来车" + } + else->{ + "" + } + } + } + + private fun getActionDesc(action: String): String{ + return when(action){ + "车辆进站"->{ + "前方即将到达${TaxiPassengerModel.currentOCHOrder!!.orderEndSite.siteName}," + + "车辆正在规划减速并进站停靠,请安心等待车辆停稳再下车哦~" + } + "车辆等待进站"->{ + "车辆待环境安全后进站,耐心等几秒,安全比赶路更重要~" + } + "车辆出站"->{ + "欢迎乘坐MOGO RoboTaxi~车辆正在规划出站,坐稳扶好哦,我们出发啦!小智持续守护您的行程。" + } + "车辆等待出站"->{ + "车辆待环境安全后出站,耐心等几秒,安全比赶路更重要~" + } + "车辆向左变道"->{ + "确认环境安全,车辆正在规划平稳向左/向右变道,同时持续监测周边交通参与者动向,放心交给我们吧!" + } + "车辆向右变道"->{ + "确认环境安全,车辆正在规划平稳向左/向右变道,同时持续监测周边交通参与者动向,放心交给我们吧!" + } + "车辆完成变道"->{ + "变道完成啦,继续前进!小智持续守护您的行程。" + } + "车辆正在绕过前方障碍物"->{ + "发现前方障碍物,车辆正在规划平稳变道,即将画出一条完美弧线~" + } + "车辆正在避让前方障碍物"->{ + "发现前方障碍物,车辆正在规划平稳避让,诠释优雅与丝滑~" + } + "车辆完成绕障"->{ + "绕障完成啦,继续前进!小智持续守护您的行程。" + } + "路口等红灯"->{ + "车辆正在路口等红灯,可以安心放空望望窗外~小智一直在您身边哦!" + } + "车辆正在变道避让前方道路施工"->{ + "车辆正在提前规划向左/右变道避让前方道路施工,稳稳的很安心~您已体验到车路云一体化协同应用场景,是当之无愧的先锋体验官!" + } + "车辆正在绕行避让前方道路施工"->{ + "车辆正在提前规划向左/右绕行避让前方道路施工,稳稳的很安心~您已体验到车路云一体化协同应用场景,是当之无愧的先锋体验官!" + } + "车辆正在变道避让前方道路事故"->{ + "车辆正在提前规划向左/右变道避让前方道路事故,放心看我表现吧!您已体验到车路云一体化协同应用场景,小智为您欢呼!" + } + "车辆正在绕行避让前方道路事故"->{ + "车辆正在提前规划向左/右绕行避让前方道路事故,放心看我表现吧!您已体验到车路云一体化协同应用场景,小智为您欢呼!" + } + "车辆正在跟车通行"->{ + "车辆正在跟随前车通行,舒适度MAX~您已体验到车路云一体化协同应用场景,超越全国99%的乘客!" + } + "车辆正在绕行前方车龙"->{ + "车辆正在提前规划向左/右变道避让路口车龙,舒适度MAX~。您已体验到车路云一体化协同应用场景,超越全国99%的乘客!" + } + "车辆正在使用云端轨迹通行"->{ + "前方智慧路口内有障碍物,车辆正在使用云端规划轨迹通行。您已体验到车路云一体化协同应用场景,超越全国99%的乘客!" + } + "车辆正在避让后方来车"->{ + "车辆正在避让后方来车,耐心等几秒,安全比赶路更重要~" + } + else->{ + "" + } + } + } + } \ No newline at end of file diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/adapter/AIMessageViewHolder.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/adapter/AIMessageViewHolder.kt index 99f87adb19..61283e46aa 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/adapter/AIMessageViewHolder.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/adapter/AIMessageViewHolder.kt @@ -186,9 +186,15 @@ class QAViewHolder(val binding: View) : MessageViewHolder(binding) { class PNCActionViewHolder(binding: View) : MessageViewHolder(binding){ private var tvPncAction: TextView = binding.findViewById(R.id.tvPncAction) + private var tvPncActionDesc: TextView = binding.findViewById(R.id.tvPncActionDesc) + private var tvPncActionTime: TextView = binding.findViewById(R.id.tvPncActionTime) override fun bind(item: AIMessage, onItemClickListener: OnItemClickListener?) { - tvPncAction.text = item.title + if(item is AIMessage.PNCAction){ + tvPncAction.text = item.title + tvPncActionDesc.text = item.actionDesc + tvPncActionTime.text = DateTimeUtils.getTimeText(item.timeStamp, DateTimeUtils.HH_mm_ss) + } } } diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/bean/AssistantMessage.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/bean/AssistantMessage.kt index d6d00d5861..2b7ca9a3e4 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/bean/AssistantMessage.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/bean/AssistantMessage.kt @@ -135,7 +135,9 @@ sealed class AIMessage( data class PNCAction( override val id: String, - override val title: String + override val title: String, + var actionDesc: String, + var timeStamp: Long = 0, //事件发生事件戳 ): AIMessage(id,title) data class RoadV2NEvent( diff --git a/OCH/taxi/unmanned-passenger/src/main/res/layout/item_ai_pnc_action.xml b/OCH/taxi/unmanned-passenger/src/main/res/layout/item_ai_pnc_action.xml index 3d1864bf9a..701ab43851 100644 --- a/OCH/taxi/unmanned-passenger/src/main/res/layout/item_ai_pnc_action.xml +++ b/OCH/taxi/unmanned-passenger/src/main/res/layout/item_ai_pnc_action.xml @@ -9,18 +9,53 @@ app:yOffset="0dp" app:blurRadius="@dimen/dp_26"> - + android:layout_height="wrap_content"> + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_nde_road_recommend.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_nde_road_recommend.xml index b2ea52f057..6cdfd89974 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_nde_road_recommend.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_nde_road_recommend.xml @@ -1,7 +1,7 @@ From 8d762c31787e5ecd987b964dd26579c2f8de67c6 Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Tue, 20 May 2025 10:31:48 +0800 Subject: [PATCH 04/13] =?UTF-8?q?[8.0.0][Fix]=E8=A7=A3=E5=86=B3=E5=9C=B0?= =?UTF-8?q?=E5=9B=BE=E4=B8=8D=E6=B8=B2=E6=9F=93=E5=89=8D=E8=BD=A6=E5=BC=95?= =?UTF-8?q?=E5=AF=BC=E7=BA=BF=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../passenger/ui/homepage/HomeView.kt | 115 ++++-------------- .../passenger/ui/homepage/HomeViewModel.kt | 32 ++--- .../src/main/res/layout/taxi_p_home.xml | 36 ++---- 3 files changed, 44 insertions(+), 139 deletions(-) diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/homepage/HomeView.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/homepage/HomeView.kt index f2b49ae340..8493f3a364 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/homepage/HomeView.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/homepage/HomeView.kt @@ -12,24 +12,20 @@ import androidx.constraintlayout.widget.Guideline import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.findViewTreeViewModelStoreOwner import com.mogo.eagle.core.data.map.MogoLatLng -import com.mogo.eagle.core.function.view.DecisionLayout -import com.mogo.eagle.core.function.view.PredictionLayout import com.mogo.eagle.core.utilcode.kotlin.onClick import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.och.bridge.autopilot.location.OchLocationManager -import com.mogo.och.common.module.utils.RxUtils import com.mogo.och.unmanned.passenger.ui.bar.LeftBarView import com.mogo.och.unmanned.taxi.passenger.R import kotlinx.android.synthetic.main.taxi_p_home.view.acbtn_show_all -import kotlinx.android.synthetic.main.taxi_p_home.view.acbtn_show_hdmap_create -import kotlinx.android.synthetic.main.taxi_p_home.view.acbtn_show_hdmap_destory +import kotlinx.android.synthetic.main.taxi_p_home.view.acbtn_show_hdmap import kotlinx.android.synthetic.main.taxi_p_home.view.decContainer import kotlinx.android.synthetic.main.taxi_p_home.view.hdMapView +import kotlinx.android.synthetic.main.taxi_p_home.view.preContainer import kotlinx.android.synthetic.main.taxi_p_home.view.lbv_go2_center import kotlinx.android.synthetic.main.taxi_p_home.view.leftEndGuideline import kotlinx.android.synthetic.main.taxi_p_home.view.midContainer import kotlinx.android.synthetic.main.taxi_p_home.view.midStartGuideline -import kotlinx.android.synthetic.main.taxi_p_home.view.preContainer class HomeView @JvmOverloads constructor( context: Context, @@ -47,9 +43,6 @@ class HomeView @JvmOverloads constructor( private var viewModel: HomeViewModel?=null - private var predictionLayout: PredictionLayout? = null - private var decisionLayout: DecisionLayout? = null - private fun initView() { @@ -61,21 +54,18 @@ class HomeView @JvmOverloads constructor( private fun initlistener() { lbv_go2_center.setOrderIdCallback(object : LeftBarView.LeftBarCallback{ override fun setGo2CenterClick() { - //切换到地图中间 + //切换到地图中间 hdMapView.getUI()?.let { val wgs02Location = OchLocationManager.getWgs02Location() it.moveToCenter(MogoLatLng(wgs02Location.latitude, wgs02Location.longitude)) } - //overMapView.displayCustomOverView() + //overMapView.displayCustomOverView() } }) - acbtn_show_hdmap_create.onClick { - showHdMap(false) - } - acbtn_show_hdmap_destory.onClick { - showHdMap(true) + acbtn_show_hdmap.onClick { + showHdMap() } acbtn_show_all.onClick { showAmapAndHdMap() @@ -86,82 +76,51 @@ class HomeView @JvmOverloads constructor( /** * 展示两屏幕 */ - fun showHdMap(destoryMap: Boolean){ - CallerLogger.d(TAG,"展示高德 不展示高精") - if(destoryMap){ - leftEndGuideline.setGuidelinePercent(0.666f) - lbv_go2_center.visibility = VISIBLE - midContainer.visibility = GONE - destoryMaps() - }else{ - if(predictionLayout==null||decisionLayout==null){ - createMaps() - leftEndGuideline.setGuidelinePercent(0.666f) - lbv_go2_center.visibility = VISIBLE - midContainer.visibility = GONE - }else { - leftEndGuideline.setGuidelinePercent(0.666f) - lbv_go2_center.visibility = VISIBLE - midContainer.visibility = GONE - } - } - + fun showHdMap(){ + updateViewState(true,false,false) } /** * 展示3屏 */ fun showAmapAndHdMap(){ - // 展示预测地图和高精地图 - CallerLogger.d(TAG,"展示高德地图和高精地图") - if(predictionLayout==null||decisionLayout==null){ - createMaps() - midStartGuideline.setGuidelinePercent(0.333f) - leftEndGuideline.setGuidelinePercent(0.333f) - lbv_go2_center.visibility = GONE - midContainer.visibility = VISIBLE - }else { - midStartGuideline.setGuidelinePercent(0.333f) - leftEndGuideline.setGuidelinePercent(0.333f) - lbv_go2_center.visibility = GONE - midContainer.visibility = VISIBLE - } + updateViewState(true,true,false) } fun onCreate(savedInstanceState: Bundle?) { hdMapView.onCreate(savedInstanceState) - predictionLayout?.onCreate(savedInstanceState) - decisionLayout?.onCreate(savedInstanceState) + preContainer.onCreate(savedInstanceState) + decContainer.onCreate(savedInstanceState) } fun onSaveInstanceState(outState: Bundle) { hdMapView.onSaveInstanceState(outState) - predictionLayout?.onSaveInstanceState(outState) - decisionLayout?.onSaveInstanceState(outState) + preContainer.onSaveInstanceState(outState) + decContainer.onSaveInstanceState(outState) } fun onResume() { hdMapView.onResume() - predictionLayout?.onResume() - decisionLayout?.onResume() + preContainer.onResume() + decContainer.onResume() } fun onLowMemory() { hdMapView.onLowMemory() - predictionLayout?.onLowMemory() - decisionLayout?.onLowMemory() + preContainer.onLowMemory() + decContainer.onLowMemory() } fun onPause() { hdMapView.onPause() - predictionLayout?.onPause() - decisionLayout?.onPause() + preContainer.onPause() + decContainer.onPause() } fun onDestroy() { hdMapView.onDestroy() - predictionLayout?.onDestroy() - decisionLayout?.onDestroy() + preContainer.onDestroy() + decContainer.onDestroy() } override fun onAttachedToWindow() { @@ -290,40 +249,12 @@ class HomeView @JvmOverloads constructor( } } - override fun showTwoScreen(destoryMap:Boolean) { - showHdMap(destoryMap) + override fun showTwoScreen() { + showHdMap() } override fun showThreeScreen() { showAmapAndHdMap() } - private fun createMaps(){ - if(predictionLayout == null){ - predictionLayout = PredictionLayout(context) - predictionLayout?.id = R.id.prediction_layout_id - preContainer.addView(predictionLayout) - predictionLayout?.onCreate(null) - predictionLayout?.onResume() - } - if(decisionLayout == null){ - decisionLayout = DecisionLayout(context) - decisionLayout?.id = R.id.decision_layout_id - decContainer.addView(decisionLayout) - decisionLayout?.onCreate(null) - decisionLayout?.onResume() - } - } - - private fun destoryMaps() { - predictionLayout?.onDestroy() - decisionLayout?.onDestroy() - RxUtils.createSubscribe(50) { - preContainer.removeView(predictionLayout) - decContainer.removeView(decisionLayout) - predictionLayout = null - decisionLayout = null - } - } - } \ No newline at end of file diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/homepage/HomeViewModel.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/homepage/HomeViewModel.kt index e0bd69becc..355b465fd2 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/homepage/HomeViewModel.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/homepage/HomeViewModel.kt @@ -35,7 +35,7 @@ class HomeViewModel : ViewModel(), BridgeListener, OrderListener { } interface HomeCallback { - fun showTwoScreen(destoryMap:Boolean) + fun showTwoScreen() fun showThreeScreen() } @@ -56,31 +56,19 @@ class HomeViewModel : ViewModel(), BridgeListener, OrderListener { fun checkScreenChange(){ CallerLogger.d(TAG,"havePredictionInfos:${havePredictionInfos}--haveTrajectoryInfos:${haveTrajectoryInfos}--order:${order}") - - if(order==null){ - // 进入双屏 需要销毁创建4张地图 + if(order!=null&&havePredictionInfos&&havePredictionInfos){ + FunctionBuildConfig.isDrawDecIdentifyData = true + FunctionBuildConfig.isDrawPreIdentifyData = true + // 展示三联屏 + BizLoopManager.runInMainThread{ + this.viewCallback?.showThreeScreen() + } + }else{ FunctionBuildConfig.isDrawDecIdentifyData = false FunctionBuildConfig.isDrawPreIdentifyData = false // 展示二联屏幕 BizLoopManager.runInMainThread{ - this.viewCallback?.showTwoScreen(true) - } - }else{ - if(havePredictionInfos&&haveTrajectoryInfos){ - // 进入三屏幕 - FunctionBuildConfig.isDrawDecIdentifyData = true - FunctionBuildConfig.isDrawPreIdentifyData = true - // 展示三联屏 - BizLoopManager.runInMainThread{ - this.viewCallback?.showThreeScreen() - } - }else{ - // 进入双屏 需要隐藏 - FunctionBuildConfig.isDrawDecIdentifyData = false - FunctionBuildConfig.isDrawPreIdentifyData = false - BizLoopManager.runInMainThread{ - this.viewCallback?.showTwoScreen(false) - } + this.viewCallback?.showTwoScreen() } } } diff --git a/OCH/taxi/unmanned-passenger/src/main/res/layout/taxi_p_home.xml b/OCH/taxi/unmanned-passenger/src/main/res/layout/taxi_p_home.xml index 8995cc8f02..a16b67fb3b 100644 --- a/OCH/taxi/unmanned-passenger/src/main/res/layout/taxi_p_home.xml +++ b/OCH/taxi/unmanned-passenger/src/main/res/layout/taxi_p_home.xml @@ -34,25 +34,25 @@ app:layout_constraintStart_toEndOf="@+id/midStartGuideline" app:layout_constraintEnd_toStartOf="@id/rightStartGuideline"> - - + android:layout_height="@dimen/dp_676" /> - - + android:layout_height="@dimen/dp_676" + /> + @@ -148,33 +148,19 @@ - - - - + \ No newline at end of file From 89641b48df1185a20d07145ec486e7992d85b0ad Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Tue, 20 May 2025 10:34:18 +0800 Subject: [PATCH 05/13] =?UTF-8?q?[8.0.0][Opt]=E4=BC=98=E5=8C=96=E5=86=B3?= =?UTF-8?q?=E7=AD=96=E3=80=81=E9=A2=84=E6=B5=8B=E5=9C=B0=E5=9B=BE=E6=B8=B2?= =?UTF-8?q?=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../function/business/identify/Identify.kt | 8 +++ .../business/identify/IdentifyFactory.kt | 54 +++++++++--------- .../identify/IdentifyOriginDataDrawer.kt | 55 +++++++++++++++++++ .../identify/IdentifyPredictionDataDrawer.kt | 6 +- .../identify/MapIdentifySubscriber.kt | 25 ++++++--- .../routeoverlay/PredictionOverlayDrawer.java | 30 +--------- .../PredictionOverlayDrawer2.java | 7 +-- .../core/function/view/DecisionLayout.kt | 43 ++++++++++++++- .../IMoGoAutopilotIdentifyListener.kt | 1 + .../CallerAutopilotIdentifyListenerManager.kt | 7 +++ .../java/com/mogo/map}/utils/LocationUtils.kt | 2 +- .../java/com/mogo/map/utils/ObjectUtils.java | 18 +++--- 12 files changed, 173 insertions(+), 83 deletions(-) rename {core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function => libraries/mogo-map/src/main/java/com/mogo/map}/utils/LocationUtils.kt (97%) diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/Identify.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/Identify.kt index e687c5bceb..42218ab436 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/Identify.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/Identify.kt @@ -16,6 +16,10 @@ interface Identify { } + fun renderAdasRegResults(resultList: List?, mapObjList: List) { + + } + fun renderAiCloudResult(resultList: List, mapInstance:String) { } @@ -40,6 +44,10 @@ interface Identify { } + fun clearOldMarkers(mapObjList:List) { + + } + fun clearAiMarker(mapInstance:String) { } 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 53ace30ffa..cadc8af2b1 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 @@ -33,8 +33,9 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener, IMoGoAutopilotCarConf // 预测 object PreDriverIdentify { - internal val preDataDrawer = IdentifyPredictionDataDrawer() -// internal val preDataDrawer2 = IdentifyPredictionDataDrawer() + internal val preDataDrawer = IdentifyOriginDataDrawer() + + // internal val preDataDrawer2 = IdentifyPredictionDataDrawer() // internal val preDataDrawer3 = IdentifyPredictionDataDrawer() internal val preDataDrawer2 = IdentifyOriginDataDrawer() internal val preDataDrawer3 = IdentifyOriginDataDrawer() @@ -47,16 +48,19 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener, IMoGoAutopilotCarConf private var identify: Identify = DriverIdentify.originDataDrawer private var aiCloudIdentify: Identify? = null + // 预测 private var preIdentify: Identify = PreDriverIdentify.preDataDrawer - private var preIdentify2: Identify = PreDriverIdentify.preDataDrawer2 - private var preIdentify3: Identify = PreDriverIdentify.preDataDrawer3 + + // private var preIdentify2: Identify = PreDriverIdentify.preDataDrawer2 +// private var preIdentify3: Identify = PreDriverIdentify.preDataDrawer3 // 决策 private var desIdentify: Identify = DesDriverIdentify.desDataDrawer private var startTime: Long = 0L - private var preStartTime: Long = 0L - private var desStartTime: Long = 0L + + // private var preStartTime: Long = 0L +// private var desStartTime: Long = 0L private var dockerVersion: String? = null fun initType() { @@ -96,33 +100,24 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener, IMoGoAutopilotCarConf if (internal >= 1000) { lostFrame(internal.toString()) identify.clearOldMarker() - } - if (FunctionBuildConfig.isDrawPreIdentifyData && TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - preStartTime) >= 1000) { preIdentify.clearOldMarker() } - if (FunctionBuildConfig.isDrawDecIdentifyData && TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - desStartTime) >= 1000) { - desIdentify.clearOldMarker() - preIdentify2.clearOldMarker() - preIdentify3.clearOldMarker() - } sendEmptyMessageDelayed(MSG_CHECK, 1000L) } MSG_DATA_TRACK -> { if (msg.obj is List<*>) { val objectList = msg.obj as List? - identify.renderAdasRecognizedResult(objectList) + val mapInstanceList = ArrayList() + mapInstanceList.add(MogoMap.DEFAULT) +// if (FunctionBuildConfig.isDrawDecIdentifyData) { +// mapInstanceList.add(MogoMap.SMALL_DES_MAP) +// } + if (FunctionBuildConfig.isDrawPreIdentifyData) { + mapInstanceList.add(MogoMap.SMALL_PRED_MAP) + } + identify.renderAdasRegResults(objectList, mapInstanceList) startTime = System.nanoTime() - - if (FunctionBuildConfig.isDrawDecIdentifyData) { - desIdentify.renderAdasRegResult(objectList, MogoMap.SMALL_DES_MAP) - desStartTime = System.nanoTime() - } - if (FunctionBuildConfig.isDrawPreIdentifyData) { - preIdentify2.renderAdasRegResult(objectList, MogoMap.SMALL_PRED_MAP2) - preIdentify3.renderAdasRegResult(objectList, MogoMap.SMALL_PRED_MAP3) - preStartTime = System.nanoTime() - } } } @@ -138,7 +133,7 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener, IMoGoAutopilotCarConf MSG_DATA_PRE_TRACK -> { if (msg.obj is List<*>) { val objectList = msg.obj as List - preIdentify.renderPredictionResult(objectList, MogoMap.SMALL_PRED_MAP) +// preIdentify.renderPredictionResult(objectList, MogoMap.SMALL_PRED_MAP) // preIdentify2.renderPredictionResult(objectList, MogoMap.SMALL_PRED_MAP2) // preIdentify3.renderPredictionResult(objectList, MogoMap.SMALL_PRED_MAP3) } @@ -163,7 +158,10 @@ 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 -> { @@ -172,8 +170,8 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener, IMoGoAutopilotCarConf MSG_DATA_PRE_CLEAR -> { preIdentify.clearPredictionMarker(MogoMap.SMALL_PRED_MAP) - preIdentify2.clearPredictionMarker(MogoMap.SMALL_PRED_MAP2) - preIdentify3.clearPredictionMarker(MogoMap.SMALL_PRED_MAP3) +// preIdentify2.clearPredictionMarker(MogoMap.SMALL_PRED_MAP2) +// preIdentify3.clearPredictionMarker(MogoMap.SMALL_PRED_MAP3) } } } diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyOriginDataDrawer.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyOriginDataDrawer.kt index c384b08074..b0a1ff6db4 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyOriginDataDrawer.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyOriginDataDrawer.kt @@ -126,6 +126,49 @@ class IdentifyOriginDataDrawer : Identify { } } + override fun renderAdasRegResults(resultList: List?, mapObjList: List) { + if (resultList.isNullOrEmpty()) { + clearOldMarker() + return + } + if (!MogoStatusManager.getInstance().isVrMode) { + clearOldMarker() + return + } + + //清除缓存 + for (data in resultList) { + if (trafficDataUuidList.size > 0 && trafficDataUuidList.contains(data.uuid.toString())) { + if (TrackerSourceFilterHelper.filterData(data)) { + continue + } + trafficDataUuidList.remove(data.uuid.toString()) + } + } + + //清除缓存,删除marker + val it: MutableIterator<*> = trafficDataUuidList.iterator() + while (it.hasNext()) { + val key = it.next() as String + it.remove() + mMarkersCaches.remove(key) + mapObjList.forEach { + MogoIdentifyManager.getInstance() + .removeMarker(key, it) + } + TrackerSourceFilterHelper.removeBottomMarker(key) + } + + val filterList = filterTrafficData(resultList) + if (filterList.size > 0) { + // 绘制新数据 + mapObjList.forEach { + MogoIdentifyManager.getInstance() + .updateBatchMarkerPosition(filterList, it) + } + } + } + /** * 数据过滤器 * @@ -169,4 +212,16 @@ class IdentifyOriginDataDrawer : Identify { WarningHelper.clear() } + override fun clearOldMarkers(mapObjList: List) { + for (uuid in trafficDataUuidList) { + mapObjList.forEach { + MogoIdentifyManager.getInstance() + .removeMarker(uuid, it) + } + TrackerSourceFilterHelper.removeBottomMarker(uuid) + } + trafficDataUuidList.clear() + mMarkersCaches.clear() + WarningHelper.clear() + } } \ 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/IdentifyPredictionDataDrawer.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyPredictionDataDrawer.kt index f9a26cb2d3..5617415efa 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyPredictionDataDrawer.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyPredictionDataDrawer.kt @@ -48,8 +48,8 @@ class IdentifyPredictionDataDrawer : Identify { } //清除缓存 for (data in predictionObjectList) { - if (trafficDataUuidList.size > 0 && trafficDataUuidList.contains("" + data.mNid)) { - trafficDataUuidList.remove("" + data.mNid) + if (trafficDataUuidList.size > 0 && trafficDataUuidList.contains("${data.mNid-800000}")) { + trafficDataUuidList.remove("${data.mNid-800000}") } } @@ -81,7 +81,7 @@ class IdentifyPredictionDataDrawer : Identify { mFilterTrafficData.clear() trafficDataUuidList.clear() for (data in trafficData) { - val uuid = "" + data.mNid + val uuid = "${data.mNid-800000}" mMarkersCaches[uuid] = data trafficDataUuidList.add(uuid) mFilterTrafficData[uuid] = data diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/MapIdentifySubscriber.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/MapIdentifySubscriber.kt index bf023ed016..0932283945 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/MapIdentifySubscriber.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/MapIdentifySubscriber.kt @@ -1,5 +1,6 @@ package com.mogo.eagle.core.function.business.identify +import android.util.Log import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.map.MogoLocation import com.mogo.eagle.core.data.traffic.TrafficData @@ -9,11 +10,12 @@ import com.mogo.eagle.core.function.api.datacenter.obu.IMoGoObuStatusListener import com.mogo.eagle.core.function.business.routeoverlay.PredictionOverlayDrawer import com.mogo.eagle.core.function.business.routeoverlay.PredictionOverlayDrawer2 import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84 import com.mogo.eagle.core.function.call.obu.CallerObuWarningListenerManager -import com.mogo.eagle.core.function.utils.LocationUtils import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.map.MogoMap import com.mogo.map.identify.MogoIdentifyManager +import com.mogo.map.utils.LocationUtils import mogo.telematics.pad.MessagePad import mogo.telematics.pad.MessagePad.TrackedObject import mogo.yycp.api.proto.SocketDownData @@ -69,12 +71,15 @@ class MapIdentifySubscriber private constructor() : IMoGoSubscriber, private var carPoiList2: List? = null private var location1: MogoLocation? = null private var location2: MogoLocation? = null + private var probability1: Float = 0f + private var probability2: Float = 0f + override fun onPredictionObstacleTrajectory(predictionObjects: Prediction2025.mPredictionObjects) { if (FunctionBuildConfig.isDrawPreIdentifyData) { try { ThreadUtils.getSinglePool().execute { - // 渲染它车 - IdentifyFactory.renderPredictionResult(predictionObjects.objsAppList) +// // 渲染它车 +// IdentifyFactory.renderPredictionResult(predictionObjects.objsAppList) // 渲染自车 predictionObjects.objsAppList.forEach { preObj -> if (preObj.mNid == 800000L) { @@ -83,18 +88,22 @@ class MapIdentifySubscriber private constructor() : IMoGoSubscriber, carPoiList1 = preObj.predictionTrajectoryList[0].trajectoryPointsList carPoiList2 = preObj.predictionTrajectoryList[1].trajectoryPointsList val largeType: Int - location1 = LocationUtils.generateLocation(carPoiList1!![0].x, carPoiList1!![0].y, carPoiList1!![1].x, carPoiList1!![1].y) - location2 = LocationUtils.generateLocation(carPoiList2!![0].x, carPoiList2!![0].y, carPoiList2!![1].x, carPoiList2!![1].y) + val heading = getChassisLocationWGS84().heading + location1 = LocationUtils.generateLocation(carPoiList1!![0].x, carPoiList1!![0].y, heading) + location2 = LocationUtils.generateLocation(carPoiList2!![0].x, carPoiList2!![0].y, heading) if (location1 == null || location2 == null) return@forEach - if (preObj.predictionTrajectoryList[0].predictionProbability >= preObj.predictionTrajectoryList[1].predictionProbability) { + probability1 = preObj.predictionTrajectoryList[0].predictionProbability + probability2 = preObj.predictionTrajectoryList[1].predictionProbability + CallerAutopilotIdentifyListenerManager.invokeProbabilityChanged(probability1, probability2) + if (probability1 >= probability2) { MogoIdentifyManager.getInstance().updateGps(location1!!, MogoMap.SMALL_PRED_MAP) largeType = 2 } else { MogoIdentifyManager.getInstance().updateGps(location2!!, MogoMap.SMALL_PRED_MAP) largeType = 3 } - PredictionOverlayDrawer.getInstance().drawPredictionList(carPoiList1, location1!!.heading, false, 2, largeType) - PredictionOverlayDrawer2.getInstance().drawPredictionList(carPoiList2, location2!!.heading, false, 3, largeType) + PredictionOverlayDrawer.getInstance().drawPredictionList(carPoiList1, heading, false, 2, largeType) + PredictionOverlayDrawer2.getInstance().drawPredictionList(carPoiList2, heading, false, 3, largeType) MogoIdentifyManager.getInstance().updateGps(location1!!, MogoMap.SMALL_PRED_MAP2) MogoIdentifyManager.getInstance().updateGps(location2!!, MogoMap.SMALL_PRED_MAP3) } diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/PredictionOverlayDrawer.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/PredictionOverlayDrawer.java index 4682adb9a5..294242ad11 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/PredictionOverlayDrawer.java +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/PredictionOverlayDrawer.java @@ -234,7 +234,7 @@ public class PredictionOverlayDrawer { Polyline.Options.Builder builder; if (mPolylineOptions == null) { - builder = new Polyline.Options.Builder("router_overlay", Level.GUIDE_ROUTE_LINE) + builder = new Polyline.Options.Builder("prediction_overlay" + preViewType, Level.GUIDE_ROUTE_LINE) .setUseGps(true) .setWidth(20) .setIsGradient(true); @@ -280,9 +280,6 @@ public class PredictionOverlayDrawer { } else if (preViewType == 3) { overlayManager.showOrUpdateLine(options, SMALL_PRED_MAP3); } - if (preViewType == largeType) { - overlayManager.showOrUpdateLine(options, SMALL_PRED_MAP); - } } } else { isExcept = true; @@ -311,11 +308,10 @@ public class PredictionOverlayDrawer { } private volatile RenderTask mPreRenderTask; - private volatile RenderTask mPreRenderTask2; public void drawPredictionList(List dataList, double bearing, boolean hasGreenWave, int preType, int largeType) { IMogoMap iMogoMap = MogoMap.Companion.getMapInstance().getMogoMap(DEFAULT); - double[] arr = null; + double[] arr; if (mogoOverlayManager != null && iMogoMap != null) { if (mPreRenderTask == null) { mPreRenderTask = new RenderTask(); @@ -335,28 +331,6 @@ public class PredictionOverlayDrawer { } } - public void drawPredictionList2(List dataList, double bearing, boolean hasGreenWave, int preType, int largeType) { - IMogoMap iMogoMap = MogoMap.Companion.getMapInstance().getMogoMap(DEFAULT); - double[] arr = null; - if (mogoOverlayManager != null) { - if (mPreRenderTask2 == null) { - mPreRenderTask2 = new RenderTask(); - } - List latLngList = new ArrayList<>(); - for (geometry.Geometry.Point point : dataList) { - arr = iMogoMap.switchData(point.getX(), point.getY(), false); - if (arr == null || arr.length < 2) continue; - latLngList.add(new MogoLatLng(arr[0], arr[1])); - } - if (latLngList.isEmpty()) return; - mPreRenderTask2.setPreData(latLngList, bearing, hasGreenWave, preType, largeType); - if (mRenderHandler != null) { - mRenderHandler.removeCallbacks(mPreRenderTask2); - mRenderHandler.post(mPreRenderTask2); - } - } - } - public void setVisible(boolean isVisible) { if (mogoOverlayManager != null) { if (isVisible) { diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/PredictionOverlayDrawer2.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/PredictionOverlayDrawer2.java index c882c7e808..f273e10057 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/PredictionOverlayDrawer2.java +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/PredictionOverlayDrawer2.java @@ -51,7 +51,7 @@ public class PredictionOverlayDrawer2 { mogoOverlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager(); if (mogoOverlayManager != null) { // 线条粗细,渐变,渐变色值 - HandlerThread renderTask = new HandlerThread("prediction_render") { + HandlerThread renderTask = new HandlerThread("prediction_render2") { @Override protected void onLooperPrepared() { super.onLooperPrepared(); @@ -232,7 +232,7 @@ public class PredictionOverlayDrawer2 { Polyline.Options.Builder builder; if (mPolylineOptions == null) { - builder = new Polyline.Options.Builder("router_overlay", Level.GUIDE_ROUTE_LINE) + builder = new Polyline.Options.Builder("prediction_overlay" + preViewType, Level.GUIDE_ROUTE_LINE) .setUseGps(true) .setWidth(20) .setIsGradient(true); @@ -278,9 +278,6 @@ public class PredictionOverlayDrawer2 { } else if (preViewType == 3) { overlayManager.showOrUpdateLine(options, SMALL_PRED_MAP3); } - if (preViewType == largeType) { - overlayManager.showOrUpdateLine(options, SMALL_PRED_MAP); - } } } else { isExcept = true; 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 20b2c5b6c0..d241c16476 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 @@ -1,26 +1,41 @@ package com.mogo.eagle.core.function.view +import android.annotation.SuppressLint import android.content.Context import android.os.Bundle 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.call.autopilot.CallerAutopilotIdentifyListenerManager import com.mogo.eagle.core.function.map.R +import com.mogo.eagle.core.utilcode.util.ThreadUtils import kotlinx.android.synthetic.main.layout_decision_container.view.decMapView import kotlinx.android.synthetic.main.layout_decision_container.view.preDetailView2 import kotlinx.android.synthetic.main.layout_decision_container.view.preDetailView3 +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 class DecisionLayout @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null -) : ConstraintLayout(context, attrs) { +) : ConstraintLayout(context, attrs), IMoGoAutopilotIdentifyListener { + + companion object { + private const val TAG = "DecisionLayout" + } + + @Volatile + private var lastTime = 0L + init { LayoutInflater.from(context).inflate(R.layout.layout_decision_container, this, true) initView() } private fun initView() { - + CallerAutopilotIdentifyListenerManager.addListener(TAG, this) } fun onCreate(savedInstanceState: Bundle?) { @@ -41,6 +56,30 @@ class DecisionLayout @JvmOverloads constructor( preDetailView3.onResume() } + @SuppressLint("SetTextI18n") + override fun onPredictionProbabilityChanged(pro1: Float, pro2: Float) { + if (System.currentTimeMillis() - lastTime >= 1000) { + ThreadUtils.runOnUiThread { + val prob1: Int + val prob2: Int + val prob3: Int + if (pro1 + pro2 < 50) { + prob1= (pro1*100).toInt() + prob3= (pro2*100).toInt() + prob2 = 100 - prob1 - prob3 + } else { + prob1 = 15 * (pro1 / (pro1 + pro2)).toInt() + prob3 = 15 * (pro2 / (pro1 + pro2)).toInt() + prob2 = 100 - prob1 - prob3 + } + tvPre1.text = "${prob1}%" + tvPre3.text = "${prob3}%" + tvPre2.text = "${prob2}%" + } + lastTime = System.currentTimeMillis() + } + } + fun onLowMemory() { decMapView.onLowMemory() preDetailView2.onLowMemory() diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotIdentifyListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotIdentifyListener.kt index 5caedcb4d9..444b62c551 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotIdentifyListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotIdentifyListener.kt @@ -60,4 +60,5 @@ interface IMoGoAutopilotIdentifyListener { */ fun onAutopilotV2nCongestionEvent(header: MessagePad.Header, rsi: MogoV2X.RSI_PB) {} + fun onPredictionProbabilityChanged(pro1: Float, pro2: Float) {} } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotIdentifyListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotIdentifyListenerManager.kt index 20b0ac70d9..c87b8e9974 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotIdentifyListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotIdentifyListenerManager.kt @@ -66,4 +66,11 @@ object CallerAutopilotIdentifyListenerManager : CallerBase pointList = preData.getPredictionTrajectoryList().get(0).getTrajectoryPointsList(); if (pointList.size() >= 2) { - return (float) DrivingDirectionUtils.getLineAngle(pointList.get(0).getX(), pointList.get(0).getY(), pointList.get(1).getX(), pointList.get(1).getY()); + return LocationUtils.INSTANCE.generateLocation(pointList.get(0).getX(), pointList.get(0).getY(), pointList.get(1).getX(), pointList.get(1).getY()); } else { - return 0; + return null; } } From 8de8ea1d40ceed785f761b4e15fd761a9f5b939e Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Tue, 20 May 2025 16:11:33 +0800 Subject: [PATCH 06/13] =?UTF-8?q?[8.0.0]=E8=B0=83=E8=AF=95=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF-=E7=89=88=E6=9C=AC=E4=BF=A1=E6=81=AF=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=8A=A8=E6=80=81=E9=85=8D=E7=BD=AE=E9=B9=B0=E7=9C=BC?= =?UTF-8?q?=E6=98=BE=E7=A4=BAMAP=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../function/hmi/bone/tab/CarInfoTabView.kt | 20 ++++++++-- .../hmi/ui/setting/DebugSettingView.kt | 21 +++++++++- .../function/hmi/ui/widget/VersionNameView.kt | 17 +++++++- .../main/res/layout/view_debug_setting.xml | 39 +++++++++++++++++++ .../mogo/eagle/core/data/app/AppConfigInfo.kt | 3 ++ .../api/setting/IMapShowNameListener.kt | 14 +++++++ .../call/setting/CallerMapShowNameManager.kt | 21 ++++++++++ 7 files changed, 129 insertions(+), 6 deletions(-) create mode 100644 core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/setting/IMapShowNameListener.kt create mode 100644 core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/setting/CallerMapShowNameManager.kt diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/CarInfoTabView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/CarInfoTabView.kt index f6d0297c58..d039924888 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/CarInfoTabView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/CarInfoTabView.kt @@ -15,6 +15,7 @@ import com.mogo.eagle.core.function.api.datacenter.IDataCenterBizListener import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener import com.mogo.eagle.core.function.api.devatools.IOTAListener import com.mogo.eagle.core.function.api.hmi.autopilot.IMoGoCheckAutoPilotBtnListener +import com.mogo.eagle.core.function.api.setting.IMapShowNameListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager @@ -25,6 +26,7 @@ import com.mogo.eagle.core.function.call.hmi.CallerHmiListenerManager import com.mogo.eagle.core.function.call.hmi.CallerHmiManager import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager import com.mogo.eagle.core.function.call.och.CallerOchCustomViewManager +import com.mogo.eagle.core.function.call.setting.CallerMapShowNameManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.ui.tools.OfflineMapDialog import com.mogo.eagle.core.function.hmi.ui.utils.HmiActionLog @@ -68,7 +70,8 @@ class CarInfoTabView @JvmOverloads constructor( attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoCheckAutoPilotBtnListener, - IMoGoAutopilotStatusListener, IMoGoDevaToolsListener, IDataCenterBizListener, IOTAListener { + IMoGoAutopilotStatusListener, IMoGoDevaToolsListener, IDataCenterBizListener, IOTAListener, + IMapShowNameListener { companion object { private const val TAG = "CarInfoTabView" @@ -91,6 +94,7 @@ class CarInfoTabView @JvmOverloads constructor( CallerAutoPilotStatusListenerManager.addListener(TAG, this) CallerDevaToolsListenerManager.addListener(TAG, this) CallerDataCenterBizListener.addListener(TAG, this) + CallerMapShowNameManager.addListener(TAG, this) } override fun onDetachedFromWindow() { @@ -99,6 +103,7 @@ class CarInfoTabView @JvmOverloads constructor( CallerAutoPilotStatusListenerManager.removeListener(TAG) CallerDevaToolsListenerManager.removeListener(TAG) CallerDataCenterBizListener.removeListener(TAG) + CallerMapShowNameManager.removeListener(TAG) } private fun initView() { @@ -248,8 +253,12 @@ class CarInfoTabView @JvmOverloads constructor( private fun showCurrentAdVersion() { UiThreadHandler.post { - CallerAutoPilotStatusListenerManager.getDockerVersion()?.let { - tvADVersionName.text = it + if(AppConfigInfo.mapShowName.isNotEmpty()){ + tvADVersionName.text = AppConfigInfo.mapShowName + }else{ + CallerAutoPilotStatusListenerManager.getDockerVersion()?.let { + tvADVersionName.text = it + } } } } @@ -356,4 +365,9 @@ class CarInfoTabView @JvmOverloads constructor( } } + override fun changeMapShowName(showName: String) { + super.changeMapShowName(showName) + showCurrentAdVersion() + } + } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index 24319ddce9..abcca5fe3c 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -96,6 +96,7 @@ import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager import com.mogo.eagle.core.function.call.obu.CallerObuApiManager import com.mogo.eagle.core.function.call.obu.CallerObuConnectListenerManager import com.mogo.eagle.core.function.call.obu.CallerObuInfoListenerManager +import com.mogo.eagle.core.function.call.setting.CallerMapShowNameManager import com.mogo.eagle.core.function.call.setting.CallerMoGoUiSettingManager import com.mogo.eagle.core.function.call.setting.CallerSopSettingManager import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager @@ -337,6 +338,8 @@ import kotlin.collections.set import kotlin.math.abs import kotlin.system.exitProcess import com.mogo.eagle.core.function.hmi.ui.tools.ShowDevicesManagerStateDialog +import kotlinx.android.synthetic.main.view_debug_setting.view.btnEnsureMap +import kotlinx.android.synthetic.main.view_debug_setting.view.etMapShowName import kotlinx.android.synthetic.main.view_debug_setting.view.tbTileFileLog @@ -597,6 +600,18 @@ internal class DebugSettingView @JvmOverloads constructor( appVersionInfoLayout.visibility = View.GONE } } + //动态配置鹰眼显示MAP版本 + if(AppConfigInfo.mapShowName.isEmpty()){ + AppConfigInfo.mapShowName = CallerAutoPilotStatusListenerManager.getDockerVersion()+"" + } + etMapShowName.setText(AppConfigInfo.mapShowName) + etMapShowName.text?.let { etMapShowName.setSelection(it.length) } + btnEnsureMap.setOnClickListener { + AppConfigInfo.mapShowName = etMapShowName.text.toString() + tvIpcVersionInfo.text = "MAP:${AppConfigInfo.mapShowName}" + tvIpcVersionInfoKey.text = "MAP:${AppConfigInfo.mapShowName}" + CallerMapShowNameManager.invokeMapShowName(AppConfigInfo.mapShowName) + } /** * 状态中心 @@ -2108,7 +2123,11 @@ internal class DebugSettingView @JvmOverloads constructor( } else { tvIpcProtocolVersionInfo.text = "工控机协议版本:${AppConfigInfo.protocolVersionNumber}" } - val dockerVersion = CallerAutoPilotStatusListenerManager.getDockerVersion() + val dockerVersion = if(AppConfigInfo.mapShowName.isNotEmpty() && AppConfigInfo.mapShowName!=CallerAutoPilotStatusListenerManager.getDockerVersion()){ + AppConfigInfo.mapShowName + }else{ + CallerAutoPilotStatusListenerManager.getDockerVersion() + } tvIpcVersionInfo.text = "MAP:$dockerVersion" tvIpcVersionInfoKey.text = "MAP:$dockerVersion" tvMoGoMapVersion.text = "HD-Map版本:${DebugConfig.getMapVersion()}" diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/VersionNameView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/VersionNameView.kt index 922c5c7fa1..36882a73d0 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/VersionNameView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/VersionNameView.kt @@ -3,11 +3,15 @@ package com.mogo.eagle.core.function.hmi.ui.widget import android.annotation.SuppressLint import android.content.Context import android.util.AttributeSet +import android.util.Log import android.view.LayoutInflater import android.widget.LinearLayout +import com.mogo.eagle.core.data.app.AppConfigInfo import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener +import com.mogo.eagle.core.function.api.setting.IMapShowNameListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager +import com.mogo.eagle.core.function.call.setting.CallerMapShowNameManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.kotlin.* import com.mogo.eagle.core.utilcode.util.AppUtils @@ -23,7 +27,7 @@ class VersionNameView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 -) : LinearLayout(context, attrs, defStyleAttr),IMoGoAutopilotStatusListener { +) : LinearLayout(context, attrs, defStyleAttr),IMoGoAutopilotStatusListener, IMapShowNameListener { companion object { const val TAG = "VersionNameView" @@ -64,7 +68,9 @@ class VersionNameView @JvmOverloads constructor( @SuppressLint("SetTextI18n") private fun showCurrentMapVersion() { val old = tvMapVersionName?.text - val version = dockerVersion + val version = AppConfigInfo.mapShowName.ifEmpty { + dockerVersion + } if (!version.isNullOrEmpty() && old != version) { scope.launch { tvMapVersionName?.also { @@ -78,11 +84,13 @@ class VersionNameView @JvmOverloads constructor( override fun onAttachedToWindow() { super.onAttachedToWindow() CallerAutoPilotStatusListenerManager.addListener(TAG, this) + CallerMapShowNameManager.addListener(TAG,this) } override fun onDetachedFromWindow() { super.onDetachedFromWindow() CallerAutoPilotStatusListenerManager.removeListener(TAG) + CallerMapShowNameManager.removeListener(TAG) } override fun onAutopilotDockerInfo(dockerVersion: String) { @@ -93,4 +101,9 @@ class VersionNameView @JvmOverloads constructor( CallerDevaToolsManager.dockerVersion(dockerVersion) } + override fun changeMapShowName(showName: String) { + super.changeMapShowName(showName) + showCurrentMapVersion() + } + } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml index 06b854a1a6..6c391cab89 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml @@ -543,6 +543,45 @@ android:layout_height="1dp" android:background="#F0F0F0" /> + + + + +