From 07f11215c939c42766ab2bf94921fd4eae305b44 Mon Sep 17 00:00:00 2001 From: renwj Date: Tue, 13 Dec 2022 19:46:09 +0800 Subject: [PATCH] =?UTF-8?q?[2.13.0]=E4=BF=AE=E6=AD=A3=E8=A7=86=E8=A7=92?= =?UTF-8?q?=E5=8F=98=E6=8D=A2=E7=9B=B8=E5=85=B3bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../call/map/CallerVisualAngleManager.kt | 71 +++++++++++++------ 1 file changed, 51 insertions(+), 20 deletions(-) diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerVisualAngleManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerVisualAngleManager.kt index cdac534c19..704685e473 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerVisualAngleManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerVisualAngleManager.kt @@ -17,7 +17,6 @@ import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager.Scene.* import com.mogo.eagle.core.utilcode.kotlin.lifeCycleOwner import com.mogo.eagle.core.utilcode.kotlin.safeCancel import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils -import com.mogo.eagle.core.utilcode.mogo.logger.* import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA import com.mogo.map.uicontroller.VisualAngleMode import kotlinx.coroutines.* @@ -84,6 +83,7 @@ object CallerVisualAngleManager { val beginLoc = beginLocation.get() val endLoc = CallerMapLocationListenerManager.getCurrentLocation() if (beginLoc != null && endLoc != null && abs(beginLoc.bearing - endLoc.bearing) >= 170) { + Log.d("RWJ", "-- onRoadIdInfo XX--: prev: ${this.roadId} -> curr: $roadId") hasCrossRoad = false changeVisualAngle(CrossRoad(false)) } @@ -94,7 +94,7 @@ object CallerVisualAngleManager { override fun onStopLineInfo(info: StopLine) { - Log.d("RWJ", "-- onStopLineInfo --: $info") + Log.d("RWJ", "-- onStopLineInfo --: ${info.distanceOfCarToStopLine}") if (!hasCrossRoad && info.distanceOfCarToStopLine <= 30.0) { hasCrossRoad = true beginLocation.set(CallerMapLocationListenerManager.getCurrentLocation()) @@ -156,6 +156,10 @@ object CallerVisualAngleManager { override val displayThreshold: Long get() = -1 + + override fun toString(): String { + return "Turning(open: ${open}, priority=$priority, displayThreshold: $displayThreshold, priority=$priority)" + } } /** @@ -169,6 +173,10 @@ object CallerVisualAngleManager { override val displayThreshold: Long get() = SECONDS.toMillis(8) + + override fun toString(): String { + return "TooClose(priority=$priority, displayThreshold: $displayThreshold, priority=$priority)" + } } /** @@ -182,6 +190,10 @@ object CallerVisualAngleManager { override val displayThreshold: Long get() = SECONDS.toMillis(8) + + override fun toString(): String { + return "RoadEvent(priority=${priority}, displayThreshold: ${displayThreshold}, priority=${priority})" + } } @@ -193,6 +205,10 @@ object CallerVisualAngleManager { override val priority: Int = 4 override val displayThreshold: Long get() = -1 + + override fun toString(): String { + return "CrossRoad(open: ${open}, priority=${priority}, displayThreshold: ${displayThreshold}, priority=${priority})" + } } } @@ -222,72 +238,88 @@ object CallerVisualAngleManager { } val triggerTime = SystemClock.elapsedRealtime() scope.launch { - Logger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 1 ---") + Log.d("${M_DEVA}${TAG}", "--- 1 ---") val displayed = getDisplayed() if (displayed == null) { - Logger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 2 ---") + Log.d("${M_DEVA}${TAG}", "--- 2 ---") val top = getTop() //堆顶 if (top != null) { if (top.target.priority >= scene.priority) { - Logger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 3 ---") + Log.d("${M_DEVA}${TAG}", "--- 3 ---") top.triggerTime = triggerTime doChangeAngle(top) synchronized(heap){ heap += Record(scene, triggerTime = -1) } } else { - Logger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 4 ---") + Log.d("${M_DEVA}${TAG}", "--- 4 ---") doChangeAngle(Record(scene, triggerTime = triggerTime)) } } else { - Logger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 4 ---") + Log.d("${M_DEVA}${TAG}", "--- 5 ---") doChangeAngle(Record(scene, triggerTime = triggerTime)) } } else { val prev = displayed.target + Log.d("${M_DEVA}${TAG}", "--- 6 --- old: $prev -> cur: $scene") val prevTriggerTime = displayed.triggerTime + if (scene !is Default && prev.priority >= scene.priority && (prev is RoadEvent || prev is TooClose)) { + + val displayDuration = triggerTime - prevTriggerTime + Log.d("${M_DEVA}${TAG}", "--- 7 ---:duration: $displayDuration") + if (displayDuration < prev.displayThreshold) { + Log.d("${M_DEVA}${TAG}", "--- 8 --- old: $prev -> cur: $scene") + return@launch + } + } + if (prev.priority > scene.priority) { + Log.d("${M_DEVA}${TAG}", "--- 9 --- old: $prev -> cur: $scene") + if (prev.displayThreshold < 0) { + return@launch + } + } if (scene is Turning) { val isOpen = scene.open if (!isOpen) { + Log.d("${M_DEVA}${TAG}", "--- 10 --- old: $prev -> cur: $scene") changeVisualAngle(Default()) + heap -= displayed return@launch } } if (scene is CrossRoad) { val isOpen = scene.open if (!isOpen) { + Log.d("${M_DEVA}${TAG}", "--- 11 --- old: $prev -> cur: $scene") changeVisualAngle(Default()) + heap -= displayed return@launch } } - if (scene !is Default && prev.priority >= scene.priority && (prev is RoadEvent || prev is TooClose)) { - val displayDuration = triggerTime - prevTriggerTime - if (displayDuration < prev.displayThreshold) { - return@launch - } - } + if (scene is Default) { - Logger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 6 ---") + Log.d("${M_DEVA}${TAG}", "--- 12 ---") defaultDelayJob?.safeCancel() launch { val delay = scene.unit.toMillis(scene.delay) - Logger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 7 ---") + Log.d("${M_DEVA}${TAG}", "--- 13 ---") delay(delay) - Logger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 8 ---") + Log.d("${M_DEVA}${TAG}", "--- 14 ---") doChangeAngle(Record(scene, triggerTime = triggerTime)) heap -= displayed }.also { itx -> itx.invokeOnCompletion { if (it is CancellationException) { - Logger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 9 ---") + Log.d("${M_DEVA}${TAG}", "--- 15 ---") } } defaultDelayJob = itx } } else { - Logger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 10 ---") + Log.d("${M_DEVA}${TAG}", "--- 16 ---") defaultDelayJob?.safeCancel() if (displayed.target.priority < scene.priority) { + Log.d("${M_DEVA}${TAG}", "--- 17 ---") doChangeAngle(Record(scene, triggerTime = triggerTime)) } } @@ -299,14 +331,13 @@ object CallerVisualAngleManager { private fun doChangeAngle(record: Record) { val angle = record.target.angle CallerMapUIServiceManager.getMapUIController()?.also { - Logger.d("${M_DEVA}${TAG}", "触发场景:${record.target} --- 13 ---") + Log.d("${M_DEVA}${TAG}", "--- doChangeAngle ---: ${record.target}") if (record.target !is Default) { record.isDisplay = true synchronized(heap) { heap += record } } - Logger.d("${M_DEVA}${TAG}", "触发场景:${record.target} --- 15 ---> angle: $angle") it.changeMapVisualAngle(angle, null) } }