From 5c14cd6531ab53c4236f20ab4fedd8ebb2c88a57 Mon Sep 17 00:00:00 2001 From: renwj Date: Fri, 21 Oct 2022 10:49:28 +0800 Subject: [PATCH 01/13] =?UTF-8?q?[Plugin]=E5=BC=95=E5=85=A5LancetX?= =?UTF-8?q?=E8=BD=BB=E9=87=8F=E7=BA=A7AOP=E6=8F=92=E4=BB=B6=EF=BC=8C?= =?UTF-8?q?=E6=96=B9=E4=BE=BF=E6=93=8D=E4=BD=9C=E5=AD=97=E8=8A=82=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 20 +++++++++++++++----- build.gradle | 1 + config.gradle | 6 +++++- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index ad4227bc40..ef1273067b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -41,11 +41,20 @@ if (!isAndroidTestBuild()) { enable true enableInDebug true logLevel "DEBUG" - //白名单中的类不进行替换 -// white_list = [ -// 'leakcanary.*', -// 'com.loc.*' -// ] + } +} + +if (!isAndroidTestBuild()) { + apply plugin: 'LancetX' + LancetX { + enable true + enableInDebug true + + weaveGroup { + crash_fix { + enable true + } + } } } @@ -249,6 +258,7 @@ dependencies { debugImplementation rootProject.ext.dependencies.debugleakcanary releaseImplementation rootProject.ext.dependencies.releaseleakcanary implementation rootProject.ext.dependencies.android_start_up + implementation rootProject.ext.dependencies.lancetx_runtime // // 暂不使用Shizuku-API // implementation rootProject.ext.dependencies.shizuku_provider diff --git a/build.gradle b/build.gradle index 2f4bb19cd6..0eb109a8a4 100644 --- a/build.gradle +++ b/build.gradle @@ -38,6 +38,7 @@ buildscript { classpath 'com.mogo.cloud:systrace:1.0.1' classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.18' classpath 'com.mogo.sticky:service:1.0.8' + classpath 'io.github.knight-zxw:lancet-plugin:0.0.1' // classpath ("com.tencent.matrix:matrix-gradle-plugin:0.6.6") { changing = true } } diff --git a/config.gradle b/config.gradle index 67ef959049..c06741f482 100644 --- a/config.gradle +++ b/config.gradle @@ -237,7 +237,11 @@ ext { koomxhook : "com.kuaishou.koom:xhook-static:2.2.0", //========================= Koom ====================== - recyclerviewadapterhelper : "io.github.cymchad:BaseRecyclerViewAdapterHelper:3.0.4" + recyclerviewadapterhelper : "io.github.cymchad:BaseRecyclerViewAdapterHelper:3.0.4", + + + //========================= LancetX =================== + lancetx_runtime : "io.github.knight-zxw:lancet-runtime:0.0.1" ] android = [ launcherApplicationId : "com.mogo.launcher", From abbe06e8c409a16a8c2afb9420eccc93bb79551a Mon Sep 17 00:00:00 2001 From: renwj Date: Fri, 21 Oct 2022 10:50:37 +0800 Subject: [PATCH 02/13] =?UTF-8?q?[CrashFix]=E4=BF=AE=E6=AD=A3LeakCanary?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E7=94=B1=E4=BA=8E=E5=A4=9A=E6=AC=A1?= =?UTF-8?q?close=E5=AF=BC=E8=87=B4=E7=9A=84=E5=B4=A9=E6=BA=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [CrashFix]修正LeakCanary数据库由于多次close导致的崩溃 --- app/build.gradle | 14 ++++- .../launcher/lancet/LeakCanaryCrashFix.kt | 51 +++++++++++++++++++ 2 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/com/mogo/launcher/lancet/LeakCanaryCrashFix.kt diff --git a/app/build.gradle b/app/build.gradle index ef1273067b..93100ecfc5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,6 +7,7 @@ apply plugin: 'kotlin-android-extensions' apply plugin: 'android-aspectjx' apply plugin: 'bugly' +def isReleaseBuild = isReleaseBuild() //apply ByteX宿主 if (!isAndroidTestBuild()) { apply plugin: 'bytex' @@ -51,8 +52,8 @@ if (!isAndroidTestBuild()) { enableInDebug true weaveGroup { - crash_fix { - enable true + leak_canary_crash_fix { + enable !isReleaseBuild } } } @@ -383,3 +384,12 @@ boolean isAndroidTestBuild() { } return false } + +boolean isReleaseBuild() { + for (String s : gradle.startParameter.taskNames) { + if (s.contains("Release") | s.contains("release")) { + return true + } + } + return false +} diff --git a/app/src/main/java/com/mogo/launcher/lancet/LeakCanaryCrashFix.kt b/app/src/main/java/com/mogo/launcher/lancet/LeakCanaryCrashFix.kt new file mode 100644 index 0000000000..738fa78a8e --- /dev/null +++ b/app/src/main/java/com/mogo/launcher/lancet/LeakCanaryCrashFix.kt @@ -0,0 +1,51 @@ +package com.mogo.launcher.lancet + +import android.database.sqlite.* +import androidx.annotation.* +import com.knightboost.lancet.api.* +import com.knightboost.lancet.api.annotations.* +import com.knightboost.lancet.api.annotations.Weaver + +/** + * 此类主要用来修正三方库引起的崩溃 + */ +@Keep +@Weaver +@Group("leak_canary_crash_fix") +class LeakCanaryCrashFix { + + @Insert + @TargetClass("leakcanary.internal.activity.db.ScopedLeaksDb\$DbOpener") + @TargetMethod(methodName = "getReadableDatabase") + fun proxyGetReadableSQLiteDb(): SQLiteDatabase? { + try { + return Origin.call() as SQLiteDatabase? + } catch (t: Throwable) { + t.printStackTrace() + } + return null + } + + @Insert + @TargetClass("leakcanary.internal.activity.db.ScopedLeaksDb\$DbOpener") + @TargetMethod(methodName = "getWritableDatabase") + fun proxyGetWritableSQLiteDb(): SQLiteDatabase? { + try { + return Origin.call() as SQLiteDatabase? + } catch (t: Throwable) { + t.printStackTrace() + } + return null + } + + @Insert + @TargetClass("leakcanary.internal.activity.db.ScopedLeaksDb\$DbOpener") + @TargetMethod(methodName = "close") + fun proxyClose() { + try { + Origin.callVoid() + } catch (t: Throwable) { + t.printStackTrace() + } + } +} \ No newline at end of file From 6a206ba7fed02450f0116cfc23364c9a16c8cf2a Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Fri, 21 Oct 2022 14:58:01 +0800 Subject: [PATCH 03/13] =?UTF-8?q?[Fix]=E8=A7=A3=E5=86=B3docker2.3.0?= =?UTF-8?q?=E4=B9=98=E5=AE=A2=E5=B1=8F=E4=B8=8D=E6=B8=B2=E6=9F=93=E6=84=9F?= =?UTF-8?q?=E7=9F=A5=E5=AE=9A=E4=BD=8D=E7=AD=89=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt index dec5498cd8..8647411a2f 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt @@ -197,6 +197,8 @@ class MoGoAutopilotProvider : .build() AdasManager.getInstance() .create(options, MoGoAdasMsgConnectStatusListenerImpl()) + // 监听ADAS-SDK获取到的工控机数据 + AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl()) // 接收司机屏发过来的感知、定位等数据 listenDeviceData() } From 6a61836da3433a8cbd7d72fcad18aff5ffc24419 Mon Sep 17 00:00:00 2001 From: renwj Date: Fri, 21 Oct 2022 15:04:42 +0800 Subject: [PATCH 04/13] =?UTF-8?q?[=E7=BA=BF=E7=A8=8B=E4=BC=98=E5=8C=96]?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=8D=87=E7=BA=A7->=E8=A7=A3=E5=86=B3Thread#?= =?UTF-8?q?getContextClassLoader=E8=BF=94=E5=9B=9E=E5=8F=AF=E7=A9=BA?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 0c3001c60b..3650b1b24e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -175,4 +175,4 @@ ADAS_DATA_LIB_CHILD_VERSION=.0 # 线程优化版本 -THREAD_OPT_VERSION=3.0.1 +THREAD_OPT_VERSION=3.0.2 From 32a2fdc91a02da3b3e4c488fa5c170097eff806e Mon Sep 17 00:00:00 2001 From: renwj Date: Fri, 21 Oct 2022 15:17:04 +0800 Subject: [PATCH 05/13] =?UTF-8?q?[=E7=BA=BF=E7=A8=8B=E4=BC=98=E5=8C=96]?= =?UTF-8?q?=E7=BA=BF=E7=A8=8B=E4=BC=98=E5=8C=96release=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E4=B8=8D=E5=8F=AF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 93100ecfc5..3a14cfac1c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -39,8 +39,8 @@ if (!isAndroidTestBuild()) { if (!isAndroidTestBuild()) { apply plugin: 'bytex.threadOpt' thread_opt { - enable true - enableInDebug true + enable !isReleaseBuild + enableInDebug !isReleaseBuild logLevel "DEBUG" } } From 94747dc1eced5c765e6903710c524b2d0ae8e501 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Fri, 21 Oct 2022 17:15:04 +0800 Subject: [PATCH 06/13] =?UTF-8?q?[2.11.0]=20bus=20=E5=8F=B8=E6=9C=BA?= =?UTF-8?q?=E7=AB=AF=E5=9C=A8=E4=B8=AD=E6=96=AD=E4=BB=BB=E5=8A=A1=E5=90=8E?= =?UTF-8?q?=E6=B8=85=E9=99=A4marker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/mogo/och/bus/model/BusOrderModel.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java index 68c4e097c5..613fbc0e8f 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java @@ -456,6 +456,8 @@ public class BusOrderModel { CallerLogger.INSTANCE.d(M_BUS + TAG, "abortTask success: " + o); clearNativeTag(); if (o.code == 0){ // 重置成功 + clearNativeTag(); + clearBusStationDatas(); queryBusRoutes(); startOrStopQueryPassengerWriteOff(false); } @@ -838,6 +840,7 @@ public class BusOrderModel { CallerLogger.INSTANCE.d(M_BUS + TAG, "endTask success: " + o); if (o.code == 0){ clearNativeTag(); + clearBusStationDatas(); queryBusRoutes();// 重新获取任务 startOrStopQueryPassengerWriteOff(false); ttsTips(mContext.getString(R.string.bus_end_task_tip)); From 8b510d23d0111b1fe5a0b0708a866a4bcc9a6b1a Mon Sep 17 00:00:00 2001 From: renwj Date: Wed, 16 Mar 2022 17:49:56 +0800 Subject: [PATCH 07/13] =?UTF-8?q?[CrashFix]=E7=94=B1=E4=BA=8E=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E9=85=8D=E7=BD=AE=E6=9B=B4=E6=94=B9=E5=AF=BC=E8=87=B4?= =?UTF-8?q?Timer=E5=88=9B=E5=BB=BA=E8=BF=87=E5=A4=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../function/hmi/ui/widget/SpeedPanelView.kt | 57 +++++++++++-------- 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SpeedPanelView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SpeedPanelView.kt index 72374b2774..2fb16418d3 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SpeedPanelView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SpeedPanelView.kt @@ -1,17 +1,17 @@ package com.mogo.eagle.core.function.hmi.ui.widget import android.content.Context -import android.graphics.Color +import android.graphics.* import android.location.Location -import android.util.AttributeSet +import android.util.* import android.view.Gravity import android.widget.FrameLayout import com.alibaba.android.arouter.launcher.ARouter import com.mogo.eagle.core.data.constants.MogoServicePaths import com.mogo.eagle.core.function.call.hmi.CallerHmiManager import com.mogo.eagle.core.function.hmi.R -import com.mogo.eagle.core.utilcode.util.UiThreadHandler -import com.mogo.map.MogoMapUIController +import com.mogo.eagle.core.utilcode.util.* +import com.mogo.map.* import com.mogo.map.navi.IMogoCarLocationChangedListener2 import com.mogo.service.IMogoServiceApis import java.util.* @@ -38,6 +38,11 @@ class SpeedPanelView @JvmOverloads constructor( var mSpeedLimmit = 60; + + private val timer by lazy { + Timer() + } + init { initEvent(context) @@ -61,29 +66,31 @@ class SpeedPanelView @JvmOverloads constructor( } } - private val timerTask = object : TimerTask() { - override fun run() { - if (mLatLng != null) { - mSpeedLimmit = MogoMapUIController.getInstance() - .getLimitSpeed(mLatLng!!.longitude, mLatLng!!.latitude, mLatLng!!.bearing) - UiThreadHandler.post { - val speed = (mLatLng!!.speed * 3.6f).toInt() - mSpeedChartView.setArcColor(Color.parseColor(if (speed > mSpeedLimmit) "#DB3137" else "#3E77F6")) - mSpeedChartView.setValues(speed) - setBackgroundResource(if (speed > mSpeedLimmit) R.drawable.yi_biao_pan_bg_speeding else R.drawable.yi_biao_pan_bg_nor) + private var timerTask : TimerTask? = null + + override fun onAttachedToWindow() { + super.onAttachedToWindow() // 注册位置回调 + mMogoServiceApis.registerCenterApi.registerCarLocationChangedListener(TAG, this) + // 开启定时查询速度 + timerTask?.cancel() + val task = object : TimerTask() { + override fun run() { + Log.d("TTT", "---- timer run ----") + if (mLatLng != null) { + + mSpeedLimmit = MogoMapUIController.getInstance() + .getLimitSpeed(mLatLng!!.longitude, mLatLng!!.latitude, mLatLng!!.bearing) + UiThreadHandler.post { + val speed = (mLatLng!!.speed * 3.6f).toInt() + mSpeedChartView.setArcColor(Color.parseColor(if (speed > mSpeedLimmit) "#DB3137" else "#3E77F6")) + mSpeedChartView.setValues(speed) + setBackgroundResource(if (speed > mSpeedLimmit) R.drawable.yi_biao_pan_bg_speeding else R.drawable.yi_biao_pan_bg_nor) + } } } } - } - - override fun onAttachedToWindow() { - super.onAttachedToWindow() - // 注册位置回调 - mMogoServiceApis.registerCenterApi - .registerCarLocationChangedListener(TAG, this) - - // 开启定时查询速度 - Timer().schedule(timerTask, Date(), 100) + this.timerTask = task + timer.schedule(task, Date(), 100) } override fun onDetachedFromWindow() { @@ -92,7 +99,7 @@ class SpeedPanelView @JvmOverloads constructor( mMogoServiceApis.registerCenterApi .unregisterMogoLocationListener(TAG) try { - timerTask.cancel() + timerTask?.cancel() } catch (e: Exception) { e.printStackTrace() } From d14b2d3cb6b1c628ff5003e7ad04c42b049177f3 Mon Sep 17 00:00:00 2001 From: renwj Date: Fri, 21 Oct 2022 17:53:55 +0800 Subject: [PATCH 08/13] =?UTF-8?q?[Route]=E4=BC=98=E5=8C=96=E5=BC=95?= =?UTF-8?q?=E5=AF=BC=E7=BA=BF=E7=BB=98=E5=88=B6=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit xx --- .../function/hmi/ui/widget/SpeedPanelView.kt | 1 - .../routeoverlay/MogoRouteOverlayManager.java | 17 +++-------------- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SpeedPanelView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SpeedPanelView.kt index 2fb16418d3..f0f2cbce26 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SpeedPanelView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SpeedPanelView.kt @@ -75,7 +75,6 @@ class SpeedPanelView @JvmOverloads constructor( timerTask?.cancel() val task = object : TimerTask() { override fun run() { - Log.d("TTT", "---- timer run ----") if (mLatLng != null) { mSpeedLimmit = MogoMapUIController.getInstance() diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java index 9a1e99a46e..8d3ff00563 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java @@ -1,11 +1,7 @@ package com.mogo.module.service.routeoverlay; -import android.os.SystemClock; import android.util.Log; - import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo; import com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.data.map.MogoLocation; @@ -16,16 +12,11 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager; import com.mogo.eagle.core.function.call.map.CallerMapLocationListenerManager; import com.mogo.eagle.core.utilcode.mogo.logger.Logger; - import org.jetbrains.annotations.NotNull; - import java.util.LinkedList; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantLock; - import mogo.telematics.pad.MessagePad; import mogo_msg.MogoReportMsg; import system_master.SystemStatusInfo; @@ -75,11 +66,13 @@ public class MogoRouteOverlayManager implements return; } if (isArriveAtStation.get() && autopilotMode.get() != 1) { + Logger.d(TAG, "--- onLocationChanged 1 -- [isDemo1: " + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData + ",isDemo2:" +FunctionBuildConfig.isDemoMode + ",isGps:" + isGps + ",mode:" + autopilotMode.get() + ",lon:" + location.getLongitude() + ",lat:" + location.getLatitude() + ",angle:" + location.getBearing() + "]"); RouteOverlayDrawer.getInstance().clearMogoRouteOverlay(); return; } boolean force = FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData; if (!force && autopilotMode.get() != 1) { + Logger.d(TAG, "--- onLocationChanged 2 -- [isDemo1: " + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData + ",isDemo2:" +FunctionBuildConfig.isDemoMode + ",isGps:" + isGps + ",mode:" + autopilotMode.get() + ",lon:" + location.getLongitude() + ",lat:" + location.getLatitude() + ",angle:" + location.getBearing() + "]"); RouteOverlayDrawer.getInstance().clearMogoRouteOverlay(); return; } @@ -87,11 +80,11 @@ public class MogoRouteOverlayManager implements if (!queue.isEmpty()) { List items = queue.pollLast(); if (items != null && !items.isEmpty()) { + Logger.d(TAG, "--- onLocationChanged -- [isDemo1: " + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData + ",isDemo2:" +FunctionBuildConfig.isDemoMode + ",isGps:" + isGps + ",mode:" + autopilotMode.get() + ",lon:" + location.getLongitude() + ",lat:" + location.getLatitude() + ",angle:" + location.getBearing() + "]"); RouteOverlayDrawer.getInstance().drawTrajectoryList(items, location.getBearing()); } } } - } @Override @@ -100,10 +93,6 @@ public class MogoRouteOverlayManager implements @Override public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autoPilotStatusInfo) { - if (FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData) { - isArriveAtStation.set(false); - return; - } int mode = autoPilotStatusInfo.getPilotmode(); if (mode == 1) { isArriveAtStation.set(false); From de5eabd2c195098fdeff959ae4503ec20d8defae Mon Sep 17 00:00:00 2001 From: renwj Date: Fri, 21 Oct 2022 19:45:19 +0800 Subject: [PATCH 09/13] =?UTF-8?q?[V2X][Road]=E6=B7=BB=E5=8A=A0=E6=89=80?= =?UTF-8?q?=E6=9C=89marker=E6=B8=85=E7=A9=BA=E7=9B=91=E5=90=AC=E5=9B=9E?= =?UTF-8?q?=E8=B0=83=EF=BC=9B=E8=A7=A3=E5=86=B3=E7=9B=B8=E5=85=B3bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scenario/impl/V2XScenarioManager.java | 1 - .../scenario/scene/airoad/AiRoadMarker.kt | 43 +++++++++++++------ .../core/function/api/v2x/OnClearAllMarker.kt | 8 ++++ .../call/v2x/CallMarkersClearManager.kt | 34 +++++++++++++++ .../java/com/mogo/map/MogoMarkerManager.java | 4 ++ 5 files changed, 76 insertions(+), 14 deletions(-) create mode 100644 core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/v2x/OnClearAllMarker.kt create mode 100644 core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/v2x/CallMarkersClearManager.kt diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/impl/V2XScenarioManager.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/impl/V2XScenarioManager.java index 800293f761..f1b6a9b176 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/impl/V2XScenarioManager.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/impl/V2XScenarioManager.java @@ -63,7 +63,6 @@ public class V2XScenarioManager implements IV2XScenarioManager { Intent intent = new Intent(V2XConst.BROADCAST_SCENE_ACTION); intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2XMessageEntity); LocalBroadcastManager.getInstance(Utils.getApp()).sendBroadcast(intent); - AiRoadMarker.INSTANCE.clear(); // 如果没有拿到之前的,根据类型分发 switch (v2XMessageEntity.getType()) { case V2XMessageEntity.V2XTypeEnum.ALERT_ROAD_WARNING: diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt index 56be98086e..4db46c81eb 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt @@ -13,8 +13,10 @@ import androidx.lifecycle.Lifecycle.Event.ON_DESTROY import com.mogo.eagle.core.data.map.* import com.mogo.eagle.core.data.map.MapRoadInfo.StopLine import com.mogo.eagle.core.function.api.map.listener.* +import com.mogo.eagle.core.function.api.v2x.* import com.mogo.eagle.core.function.call.map.* import com.mogo.eagle.core.function.call.map.CallerMapRoadListenerManager.OnRoadListener +import com.mogo.eagle.core.function.call.v2x.* import com.mogo.eagle.core.function.v2x.events.scenario.scene.road.* import com.mogo.eagle.core.utilcode.kotlin.* import com.mogo.eagle.core.utilcode.mogo.logger.* @@ -62,6 +64,23 @@ object AiRoadMarker { } } + private val onClearAllMarker = object : OnClearAllMarker { + + override fun onClearAllMarkers() { + val marker = this@AiRoadMarker.marker.get() + if (marker != null) { + unMarker(marker) + } + } + + override fun onClearAllMarkers(tag: String) { + val marker = this@AiRoadMarker.marker.get() + if (marker != null) { + unMarker(marker) + } + } + } + private val markers = ConcurrentSet() private val options by lazy { @@ -174,11 +193,13 @@ object AiRoadMarker { private fun onCreate() { CallerMapRoadListenerManager.registerRoadListener(TAG, onRoadListener) + CallMarkersClearManager.addAllMarkersClearListener(TAG, onClearAllMarker) CallerMapLocationListenerManager.addListener(TAG, onLocationListener, true) } private fun onDestroy() { CallerMapRoadListenerManager.unRegisterRoadListener(TAG) + CallMarkersClearManager.removeAllMarkersClearListener(TAG) CallerMapLocationListenerManager.removeListener(TAG, true) pool.shutdownNow() removeLine() @@ -201,7 +222,15 @@ object AiRoadMarker { } fun marker(marker: Marker, drawMarker: Boolean) { + handler.removeCallbacks(checkExpiredTask) val location = carLocation.get() ?: return + if (markers.contains(marker)) { + Logger.d(TAG, "--- enqueue --- cache hit ---") + return + } + synchronized(markers) { + markers += marker + } this.marker.set(marker) //施工中心点前方的自车行驶方向上300米距离 val l1 = MogoMap.getInstance().mogoMap.getCenterLineRangeInfo(marker.poi_lon, marker.poi_lat, location.third.toFloat(), 300f) @@ -295,19 +324,7 @@ object AiRoadMarker { markers -= marker removeLine() V2XAiRoadEventMarker.removeMarkers(null) - } - - fun clear() { - hideLine() - V2XAiRoadEventMarker.removeMarkers(null) - } - - fun restore() { - showLine() - val marker = marker.get() - if (marker != null) { - marker(marker, false) - } + handler.removeCallbacks(checkExpiredTask) } private fun hideLine() { diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/v2x/OnClearAllMarker.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/v2x/OnClearAllMarker.kt new file mode 100644 index 0000000000..9f6c62456c --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/v2x/OnClearAllMarker.kt @@ -0,0 +1,8 @@ +package com.mogo.eagle.core.function.api.v2x + +interface OnClearAllMarker { + + fun onClearAllMarkers() + + fun onClearAllMarkers(tag: String) +} \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/v2x/CallMarkersClearManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/v2x/CallMarkersClearManager.kt new file mode 100644 index 0000000000..a5bd0e35c2 --- /dev/null +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/v2x/CallMarkersClearManager.kt @@ -0,0 +1,34 @@ +package com.mogo.eagle.core.function.call.v2x + +import com.mogo.eagle.core.function.api.v2x.* +import java.util.concurrent.* + +object CallMarkersClearManager { + + private val listeners by lazy { ConcurrentHashMap>() } + + fun addAllMarkersClearListener(tag: String, listener: OnClearAllMarker) { + var ll = listeners[tag] + if (ll == null) { + ll = ArrayList() + } + ll.add(listener) + listeners[tag] = ll + } + + fun removeAllMarkersClearListener(tag: String) { + listeners.remove(tag) + } + + fun invokeClearAllMarkers() { + listeners.values.flatten().forEach { + it.onClearAllMarkers() + } + } + + fun invokeClearAllMarkersOfTag(tag: String) { + listeners.values.flatten().forEach { + it.onClearAllMarkers(tag) + } + } +} \ No newline at end of file diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMarkerManager.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMarkerManager.java index f2919f49d1..184dabddf4 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMarkerManager.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMarkerManager.java @@ -3,6 +3,7 @@ package com.mogo.map; import android.content.Context; import com.mogo.eagle.core.data.map.MogoLatLng; +import com.mogo.eagle.core.function.call.v2x.CallMarkersClearManager; import com.mogo.map.marker.IMogoMarker; import com.mogo.map.marker.IMogoMarkerManager; import com.mogo.map.marker.MogoMarkerOptions; @@ -100,11 +101,13 @@ public class MogoMarkerManager implements IMogoMarkerManager { @Override public void removeMarkers( String tag ) { + CallMarkersClearManager.INSTANCE.invokeClearAllMarkersOfTag(tag); MogoMarkersHandler.getInstance().remove( tag ); } @Override public void removeMarkers() { + CallMarkersClearManager.INSTANCE.invokeClearAllMarkers(); MogoMarkersHandler.getInstance().removeAll(); } @@ -115,6 +118,7 @@ public class MogoMarkerManager implements IMogoMarkerManager { @Override public void inVisibleAllMarkers() { + CallMarkersClearManager.INSTANCE.invokeClearAllMarkers(); MogoMarkersHandler.getInstance().inVisibleAll(); } From f98195788b97c9ea7a4a82db7dadcab824e7e3c7 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Mon, 24 Oct 2022 11:15:57 +0800 Subject: [PATCH 10/13] merge --- .../java/com/mogo/och/bus/model/BusOrderModel.java | 4 ---- .../main/java/com/mogo/och/taxi/model/TaxiModel.java | 6 +----- .../function/autopilot/telematic/TeleMsgHandler.kt | 5 ----- .../mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt | 10 +--------- .../core/function/hmi/ui/setting/DebugSettingView.kt | 1 - .../core/function/hmi/ui/widget/SystemVersionView.kt | 1 - .../service/routeoverlay/MogoRouteOverlayManager.java | 5 ++--- 7 files changed, 4 insertions(+), 28 deletions(-) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java index 613fbc0e8f..049ca1c820 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java @@ -28,7 +28,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -import com.mogo.eagle.core.utilcode.mogo.logger.Logger; import com.mogo.eagle.core.utilcode.util.NetworkUtils; import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; @@ -680,7 +679,6 @@ public class BusOrderModel { * 关闭美化模式 */ public void closeBeautificationMode() { - Logger.d("Route", "BusOrderModel -> closeBeautificationMode ==> isDemoMode:" + FunctionBuildConfig.isDemoMode); if (FunctionBuildConfig.isDemoMode) {//收车结束美化 FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false; //是否强制绘制引导线 CallerAutoPilotManager.INSTANCE.setIgnoreConditionDraw(false);// 同步给乘客屏 @@ -747,7 +745,6 @@ public class BusOrderModel { +" isLeaving()="+currentStation.isLeaving()); // 美化是否开始 - Logger.d("Route", "BusOrderModel -> updateBusStatus ==> isDemoMode:" + FunctionBuildConfig.isDemoMode); if (FunctionBuildConfig.isDemoMode && (backgroundCurrentStationIndex >= 0 && backgroundCurrentStationIndex <= stationList.size()-1)){//行驶过程中设置美化 if (stationList.get(backgroundCurrentStationIndex).isLeaving()){ @@ -781,7 +778,6 @@ public class BusOrderModel { } private void startBeautificationMode() { - Logger.d("Route", "BusOrderModel -> startBeautificationMode ==> ignore = true"); FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true; CallerAutoPilotManager.INSTANCE.setIgnoreConditionDraw(true); CallerAutoPilotManager.INSTANCE.setIPCDemoMode(true); diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index 9c1fc34c0c..14f7a00753 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -28,7 +28,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -import com.mogo.eagle.core.utilcode.mogo.logger.Logger; import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr; import com.mogo.eagle.core.utilcode.util.NetworkUtils; import com.mogo.eagle.core.utilcode.util.ToastUtils; @@ -319,7 +318,7 @@ public class TaxiModel { //1.1.2. 当本地有currentOrder: //orderId不一致时:通过currentOrder.orderId查询订单状态,并通知ui更新 //orderId一致且orderStatus不一致时:则更新currentOrder,并通知ui更新 - Logger.d(TAG,"AutopilotControl-mCurrentOCHOrder = "+mCurrentOCHOrder.orderStatus + CallerLogger.INSTANCE.d(M_TAXI + TAG,"AutopilotControl-mCurrentOCHOrder = "+mCurrentOCHOrder.orderStatus + ", orderStatus = " +data.data.servicing.get(0).orderStatus); if (!mCurrentOCHOrder.orderNo.equals(data.data.servicing.get(0).orderNo)) { queryCurOrderStatus(); @@ -792,7 +791,6 @@ public class TaxiModel { GsonUtil.jsonFromObject(data)); if (mCurrentOCHOrder.orderStatus == TaxiOrderStatusEnum.OnTheWayToEnd.getCode()){ - Logger.d("Route", "TaxiModel -> updateNativeCurrentOrder ==> isDemoMode:" + FunctionBuildConfig.isDemoMode); if (FunctionBuildConfig.isDemoMode) { // 当美化模式(演示模式)开启时: 订单对应自动驾驶开启后,置true FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true; @@ -839,7 +837,6 @@ public class TaxiModel { TaxiTrajectoryManager.getInstance().syncTrajectoryInfo(); SharedPrefsMgr.getInstance(mContext).remove(TaxiConst.SP_KEY_OCH_TAXI_ORDER); isRestartAutopilot = false; - Logger.d("Route", "TaxiModel -> clearCurrentOCHOrder ==> isDemoMode:" + FunctionBuildConfig.isDemoMode); if (FunctionBuildConfig.isDemoMode) { // 当美化模式(演示模式)开启时: 取消或订单已完成时,置false FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false; @@ -1144,7 +1141,6 @@ public class TaxiModel { TaxiAnalyticsManager.getInstance().triggerStartAutopilotEvent(isRestartAutopilot, true, mCurrentOCHOrder.startSiteAddr, mCurrentOCHOrder.endSiteAddr, mCurrentOCHOrder.orderNo); - Logger.d("Route", "TaxiModel -> onAutopilotStatusResponse ==> isDemoMode:" + FunctionBuildConfig.isDemoMode); if (FunctionBuildConfig.isDemoMode) { // 当美化模式(演示模式)开启时: 订单对应自动驾驶开启后,置true FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true; diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/telematic/TeleMsgHandler.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/telematic/TeleMsgHandler.kt index 30ffb68fd9..e5afd93c6b 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/telematic/TeleMsgHandler.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/telematic/TeleMsgHandler.kt @@ -1,6 +1,5 @@ package com.mogo.eagle.core.function.autopilot.telematic -import android.util.Log import androidx.lifecycle.ProcessLifecycleOwner import androidx.lifecycle.lifecycleScope import com.google.protobuf.TextFormat @@ -118,10 +117,6 @@ class TeleMsgHandler : IMsgHandler { "1" -> true else -> false } - Logger.d( - "Route", - "TeleMsgHandler -> handleMsgFromServer ==> isDemoMode:" + FunctionBuildConfig.isDemoMode + ",isIgnore:" + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData - ) timestamp = currTime invokeNettyConnResult("乘客屏收到的美化模式isIgnore为:${FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData}") } else { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt index b4ad81e21b..7dc0a07cd8 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt @@ -9,7 +9,6 @@ import android.os.Build.VERSION_CODES import android.os.Bundle import android.text.TextUtils import android.transition.* -import android.util.Log import android.view.Gravity import android.view.View import android.view.WindowManager @@ -793,7 +792,7 @@ class MoGoHmiFragment : MvpFragment(), AIAssist.getInstance(ctx).speakTTSVoice(text, voiceCallback) } catch (t: Throwable) { it.resumeWith(Result.success(Unit)) - Logger.e(TAG, t.message) + CallerLogger.d("$M_HMI$TAG", t.message) } } @@ -1385,7 +1384,6 @@ class MoGoHmiFragment : MvpFragment(), * 工控机监控节点上报 */ override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) { - Log.d("EmArrow-1013", "onAutopilotGuardian : $guardianInfo , takeOver : $takeOver") ThreadUtils.runOnUiThread { guardianInfo?.let { if (reportList.size > 49) { @@ -1411,10 +1409,6 @@ class MoGoHmiFragment : MvpFragment(), EXIT_AUTOPILOT_FOR_LOCATION, EXIT_AUTOPILOT_FOR_CHASSIS, EXIT_AUTOPILOT_FOR_DISTANCE -> { - Log.d( - "EmArrow-1013", - "it code : ${it.code} , state : ${getAutoPilotStatusInfo().state}" - ) showWarningV2X( EventTypeEnum.TAKE_OVER_EVENT.poiType, EventTypeEnum.TAKE_OVER_EVENT.content, @@ -1422,13 +1416,11 @@ class MoGoHmiFragment : MvpFragment(), EventTypeEnum.TAKE_OVER_EVENT.poiType, object : IMoGoWarningStatusListener { override fun onShow() { - Log.d("EmArrow-1013", "onShow") takeOver = true clTakeOverView.visibility = View.VISIBLE } override fun onDismiss() { - Log.d("EmArrow-1013", "onDismiss") takeOver = false clTakeOverView.visibility = View.GONE } 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 ac985fbe5f..9b8c6d67f0 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 @@ -623,7 +623,6 @@ class DebugSettingView @JvmOverloads constructor( // 强制绘制引导线 tbIsDrawAutopilotTrajectoryData.setOnCheckedChangeListener { _, isChecked -> - Logger.d("Route", "DebugSettingView -> initView2 ==> isDemoMode:" + FunctionBuildConfig.isDemoMode + ",isIgnore: $isChecked") FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = isChecked } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt index 4dec896fc6..bfbbb46acb 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt @@ -16,7 +16,6 @@ import com.mogo.eagle.core.function.call.bindingcar.CallerBindingCarListenerMana import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -import com.mogo.eagle.core.utilcode.mogo.logger.Logger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI import com.mogo.eagle.core.utilcode.util.AppUtils import com.mogo.eagle.core.utilcode.util.ThreadUtils diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java index 8d3ff00563..5506928df5 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java @@ -1,7 +1,7 @@ package com.mogo.module.service.routeoverlay; -import android.util.Log; import androidx.annotation.NonNull; + import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo; import com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.data.map.MogoLocation; @@ -17,6 +17,7 @@ import java.util.LinkedList; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; + import mogo.telematics.pad.MessagePad; import mogo_msg.MogoReportMsg; import system_master.SystemStatusInfo; @@ -53,7 +54,6 @@ public class MogoRouteOverlayManager implements @Override public void onAutopilotTrajectory(@NonNull List items) { - Logger.d(TAG, "--- onAutopilotTrajectory ---:" + items.size()); synchronized (queue) { queue.clear(); queue.offer(items); @@ -105,7 +105,6 @@ public class MogoRouteOverlayManager implements if (arrivalNotification == null) { return; } - Log.d(TAG, "onArriveAt data : " + arrivalNotification); if (!isArriveAtStation.get()) { isArriveAtStation.set(true); } From e05f9e4b249aabb6c3c371b52750395a0c4a1427 Mon Sep 17 00:00:00 2001 From: renwj Date: Mon, 24 Oct 2022 14:07:36 +0800 Subject: [PATCH 11/13] =?UTF-8?q?[V2X][Road]=E4=BC=98=E5=8C=96=E8=B6=85?= =?UTF-8?q?=E6=97=B6=E9=80=BB=E8=BE=91=EF=BC=8C=E5=B9=B6=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scenario/scene/airoad/AiRoadMarker.kt | 23 ++++++++----------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt index 4db46c81eb..9a5b5f9b23 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt @@ -67,15 +67,19 @@ object AiRoadMarker { private val onClearAllMarker = object : OnClearAllMarker { override fun onClearAllMarkers() { + Logger.d(TAG, "--- onClearAllMarkers ----") val marker = this@AiRoadMarker.marker.get() if (marker != null) { + Logger.d(TAG, "--- onClearAllMarkers ----2") unMarker(marker) } } override fun onClearAllMarkers(tag: String) { + Logger.d(TAG, "--- onClearAllMarkers ----: tag: $tag") val marker = this@AiRoadMarker.marker.get() if (marker != null) { + Logger.d(TAG, "--- onClearAllMarkers ----: tag: -- 1: $tag") unMarker(marker) } } @@ -327,20 +331,6 @@ object AiRoadMarker { handler.removeCallbacks(checkExpiredTask) } - private fun hideLine() { - val old = line.get() - if (old != null && !old.isDestroyed) { - old.isVisible = false - } - } - - private fun showLine() { - val old = line.get() - if (old != null && !old.isDestroyed) { - old.isVisible = true - } - } - private fun isOutOfRange(markerLon: Double, markerLat: Double, carLon: Double, carLat: Double, carAngle: Double): Boolean { return !isFrontOfCar(markerLon, markerLat, carLon, carLat, carAngle) } @@ -352,13 +342,18 @@ object AiRoadMarker { fun receive(marker: Marker) { val cur = this.marker.get() + Logger.d(TAG, "receive --- 1 ---") if (cur == marker) { + Logger.d(TAG, "receive --- 2 ---") val poi = this.marker.get() val car = this.carLocation.get() if (poi != null && car != null) { val distance = DrivingDirectionUtils.distance(car.first, car.second, marker.poi_lon, marker.poi_lat) + Logger.d(TAG, "receive --- 3 ---:car:[${car.first}, ${car.second}] -> poi:[${marker.poi_lon}, ${marker.poi_lat}] --> distance:$distance") if (distance < 300) { checkExpired() + } else { + handler.removeCallbacks(checkExpiredTask) } } } From b7403fed96d2dc538ec35b2f6e0bcc6c02bde652 Mon Sep 17 00:00:00 2001 From: renwj Date: Mon, 24 Oct 2022 14:07:36 +0800 Subject: [PATCH 12/13] =?UTF-8?q?[V2X][Road]=E4=BC=98=E5=8C=96=E8=B6=85?= =?UTF-8?q?=E6=97=B6=E9=80=BB=E8=BE=91=EF=BC=8C=E5=B9=B6=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [V2X][Road]优化计算距离逻辑 --- .../scenario/scene/airoad/AiRoadMarker.kt | 39 ++++++++----------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt index 4db46c81eb..118ce408ad 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt @@ -67,15 +67,19 @@ object AiRoadMarker { private val onClearAllMarker = object : OnClearAllMarker { override fun onClearAllMarkers() { + Logger.d(TAG, "--- onClearAllMarkers ----") val marker = this@AiRoadMarker.marker.get() if (marker != null) { + Logger.d(TAG, "--- onClearAllMarkers ----2") unMarker(marker) } } override fun onClearAllMarkers(tag: String) { + Logger.d(TAG, "--- onClearAllMarkers ----: tag: $tag") val marker = this@AiRoadMarker.marker.get() if (marker != null) { + Logger.d(TAG, "--- onClearAllMarkers ----: tag: -- 1: $tag") unMarker(marker) } } @@ -179,12 +183,12 @@ object AiRoadMarker { try { val loc = arrayOf(location.longitude, location.latitude) carLocation.set(Triple(loc[0], loc[1], location.bearing.toDouble())) - val marker = marker.get() ?: return - val isOutOfRange = isOutOfRange(marker.poi_lon, marker.poi_lat, carLocation.get().first, carLocation.get().second, carLocation.get().third) - if (isOutOfRange) { - Logger.d(TAG, "--- onLocationChanged: isOutOfRange --- ") - unMarker(marker) - } +// val marker = marker.get() ?: return +// val isOutOfRange = isOutOfRange(marker.poi_lon, marker.poi_lat, carLocation.get().first, carLocation.get().second, carLocation.get().third) +// if (isOutOfRange) { +// Logger.d(TAG, "--- onLocationChanged: isOutOfRange --- ") +// unMarker(marker) +// } } catch (t: Throwable) { Logger.e(TAG, "error: ${t.message}") } @@ -327,20 +331,6 @@ object AiRoadMarker { handler.removeCallbacks(checkExpiredTask) } - private fun hideLine() { - val old = line.get() - if (old != null && !old.isDestroyed) { - old.isVisible = false - } - } - - private fun showLine() { - val old = line.get() - if (old != null && !old.isDestroyed) { - old.isVisible = true - } - } - private fun isOutOfRange(markerLon: Double, markerLat: Double, carLon: Double, carLat: Double, carAngle: Double): Boolean { return !isFrontOfCar(markerLon, markerLat, carLon, carLat, carAngle) } @@ -352,13 +342,18 @@ object AiRoadMarker { fun receive(marker: Marker) { val cur = this.marker.get() + Logger.d(TAG, "receive --- 1 ---") if (cur == marker) { + Logger.d(TAG, "receive --- 2 ---") val poi = this.marker.get() val car = this.carLocation.get() if (poi != null && car != null) { - val distance = DrivingDirectionUtils.distance(car.first, car.second, marker.poi_lon, marker.poi_lat) - if (distance < 300) { + val distance = DrivingDirectionUtils.distance(car.first, car.second, marker.poi_lon, marker.poi_lat) * 10000 + Logger.d(TAG, "receive --- 3 ---:car:[${car.first}, ${car.second}] -> poi:[${marker.poi_lon}, ${marker.poi_lat}] --> distance:$distance") + if (distance < 200) { checkExpired() + } else { + handler.removeCallbacks(checkExpiredTask) } } } From 7a10b36a7df10a91754fda0e3abaf5ce0f476621 Mon Sep 17 00:00:00 2001 From: renwj Date: Tue, 25 Oct 2022 14:30:44 +0800 Subject: [PATCH 13/13] =?UTF-8?q?[V2X][Road]=E5=BB=B6=E9=95=BF=E8=BF=87?= =?UTF-8?q?=E6=9C=9F=E6=97=B6=E9=97=B4=E8=87=B3=E4=B8=80=E5=88=86=E9=92=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt index 118ce408ad..408be0d51f 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt @@ -361,7 +361,7 @@ object AiRoadMarker { private fun checkExpired() { handler.removeCallbacks(checkExpiredTask) - handler.postDelayed(checkExpiredTask, 5000) + handler.postDelayed(checkExpiredTask, 60_000) } data class Marker(