[2.13.0]顶视角添加及视角切换逻辑优化
This commit is contained in:
@@ -9,6 +9,7 @@ import android.os.Build.VERSION_CODES
|
||||
import android.os.Bundle
|
||||
import android.text.TextUtils
|
||||
import android.transition.*
|
||||
import android.util.*
|
||||
import android.view.Gravity
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
@@ -60,8 +61,8 @@ import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager
|
||||
import com.mogo.eagle.core.function.call.check.CallerCheckManager
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapDataCollectorManager
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
|
||||
import com.mogo.eagle.core.function.call.map.*
|
||||
import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager.Scene.Turning
|
||||
import com.mogo.eagle.core.function.call.monitor.CallerMonitorManager
|
||||
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
|
||||
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
|
||||
@@ -98,6 +99,7 @@ import com.mogo.eagle.core.utilcode.reminder.api.*
|
||||
import com.mogo.eagle.core.utilcode.reminder.api.IReminder.IStateChangeListener
|
||||
import com.mogo.eagle.core.utilcode.reminder.api.impl.*
|
||||
import com.mogo.eagle.core.utilcode.util.*
|
||||
import com.mogo.eagle.core.utilcode.util.TimeUtils
|
||||
import com.mogo.eagle.core.utilcode.util.TimeUtils.millis2String
|
||||
import com.mogo.map.MogoMap
|
||||
import com.zhidao.support.adas.high.common.MogoReport.Code.Error.EMAP.*
|
||||
@@ -1372,12 +1374,26 @@ class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
|
||||
private var isRightLight: Boolean = false
|
||||
private var isDisappare: Boolean = false
|
||||
|
||||
@Volatile
|
||||
private var isVisualAngleChanged = false
|
||||
|
||||
/**
|
||||
* 显示转向灯效果 if (HmiBuildConfig.isShowBadCaseView) {
|
||||
*/
|
||||
override fun showTurnLight(light: Int) {
|
||||
if (HmiBuildConfig.isShowTurnLightView) {
|
||||
ThreadUtils.runOnUiThread {
|
||||
if (light == 1 || light == 2) {
|
||||
if (!isVisualAngleChanged) {
|
||||
isVisualAngleChanged = true
|
||||
CallerVisualAngleManager.changeVisualAngle(Turning(true))
|
||||
}
|
||||
} else {
|
||||
if (isVisualAngleChanged) {
|
||||
isVisualAngleChanged = false
|
||||
CallerVisualAngleManager.changeVisualAngle(Turning(false))
|
||||
}
|
||||
}
|
||||
if (light == 1) {
|
||||
if (!isLeftLight) {
|
||||
isLeftLight = true
|
||||
|
||||
@@ -15,7 +15,7 @@ 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.CallerLogger
|
||||
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.*
|
||||
@@ -199,30 +199,30 @@ object CallerVisualAngleManager {
|
||||
}
|
||||
val triggerTime = SystemClock.elapsedRealtime()
|
||||
scope.launch {
|
||||
CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 1 ---")
|
||||
Logger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 1 ---")
|
||||
val displayed = getDisplayed()
|
||||
if (displayed == null) {
|
||||
CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 2 ---")
|
||||
Logger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 2 ---")
|
||||
val top = getTop() //堆顶
|
||||
if (top != null) {
|
||||
if (top.target.priority >= scene.priority) {
|
||||
CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 3 ---")
|
||||
Logger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 3 ---")
|
||||
top.triggerTime = triggerTime
|
||||
doChangeAngle(top)
|
||||
synchronized(heap){
|
||||
heap += Record(scene, triggerTime = -1)
|
||||
}
|
||||
} else {
|
||||
CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 4 ---")
|
||||
Logger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 4 ---")
|
||||
doChangeAngle(Record(scene, triggerTime = triggerTime))
|
||||
}
|
||||
} else {
|
||||
CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 4 ---")
|
||||
Logger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 4 ---")
|
||||
doChangeAngle(Record(scene, triggerTime = triggerTime))
|
||||
}
|
||||
} else {
|
||||
if (scene.javaClass == displayed.target.javaClass) {
|
||||
CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 5 ---")
|
||||
Logger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 5 ---")
|
||||
defaultDelayJob?.safeCancel()
|
||||
return@launch
|
||||
}
|
||||
@@ -242,32 +242,32 @@ object CallerVisualAngleManager {
|
||||
return@launch
|
||||
}
|
||||
}
|
||||
if (prev.priority >= scene.priority && (prev is RoadEvent || prev is TooClose)) {
|
||||
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) {
|
||||
CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 6 ---")
|
||||
Logger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 6 ---")
|
||||
defaultDelayJob?.safeCancel()
|
||||
launch {
|
||||
val delay = scene.unit.toMillis(scene.delay)
|
||||
CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 7 ---")
|
||||
Logger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 7 ---")
|
||||
delay(delay)
|
||||
CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 8 ---")
|
||||
Logger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 8 ---")
|
||||
doChangeAngle(Record(scene, triggerTime = triggerTime))
|
||||
heap -= displayed
|
||||
}.also { itx ->
|
||||
itx.invokeOnCompletion {
|
||||
if (it is CancellationException) {
|
||||
CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 9 ---")
|
||||
Logger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 9 ---")
|
||||
}
|
||||
}
|
||||
defaultDelayJob = itx
|
||||
}
|
||||
} else {
|
||||
CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 10 ---")
|
||||
Logger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 10 ---")
|
||||
defaultDelayJob?.safeCancel()
|
||||
if (displayed.target.priority < scene.priority) {
|
||||
doChangeAngle(Record(scene, triggerTime = triggerTime))
|
||||
@@ -281,14 +281,14 @@ object CallerVisualAngleManager {
|
||||
private fun doChangeAngle(record: Record) {
|
||||
val angle = record.target.angle
|
||||
CallerMapUIServiceManager.getMapUIController()?.also {
|
||||
CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${record.target} --- 13 ---")
|
||||
Logger.d("${M_DEVA}${TAG}", "触发场景:${record.target} --- 13 ---")
|
||||
if (record.target !is Default) {
|
||||
record.isDisplay = true
|
||||
synchronized(heap) {
|
||||
heap += record
|
||||
}
|
||||
}
|
||||
CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${record.target} --- 15 ---> angle: $angle")
|
||||
Logger.d("${M_DEVA}${TAG}", "触发场景:${record.target} --- 15 ---> angle: $angle")
|
||||
it.changeMapVisualAngle(angle, null)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user