fix bug of vip
This commit is contained in:
@@ -20,6 +20,7 @@ import com.mogo.map.navi.IMogoCarLocationChangedListener2
|
||||
import com.mogo.module.common.MogoApisHandler
|
||||
import com.mogo.module.common.enums.EventTypeEnum
|
||||
import com.mogo.service.cloud.socket.IMogoOnMessageListener
|
||||
import com.mogo.utils.UiThreadHandler
|
||||
import com.mogo.utils.logger.Logger
|
||||
import kotlin.math.abs
|
||||
|
||||
@@ -41,8 +42,14 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
|
||||
private var mLocation: Location? = null
|
||||
private var turnLightFirst = false
|
||||
private var turnLightEnd = true
|
||||
private var result: TrafficLightResult? = null
|
||||
private var vip: Boolean = false
|
||||
|
||||
@Volatile
|
||||
private var enter: Boolean = false
|
||||
|
||||
private var result: TrafficLightResult? = null
|
||||
private var lastResult: TrafficLightStatus? = null
|
||||
|
||||
private val vipNetWorkModel = VipNetWorkModel()
|
||||
private val handler = Handler(Looper.getMainLooper(), this)
|
||||
|
||||
@@ -96,15 +103,21 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
|
||||
if (!vip) {
|
||||
return
|
||||
}
|
||||
if (enter) {
|
||||
Logger.d(TAG, "驶入路口,返回 , then resetConditions")
|
||||
resetConditions()
|
||||
return
|
||||
}
|
||||
if (trafficLightResult.currentRoadTrafficLight() == null) {
|
||||
Logger.d(TAG, "vip 获取到灯态,但没找到对应车道数据 result : $trafficLightResult")
|
||||
Logger.d(TAG, "vip 获取到灯态,但没找到对应车道数据 result : $trafficLightResult , then resetConditions")
|
||||
resetConditions()
|
||||
return
|
||||
}
|
||||
val currentResult = trafficLightResult.currentRoadTrafficLight()
|
||||
val lastResult = result?.currentRoadTrafficLight()
|
||||
lastResult = result?.currentRoadTrafficLight()
|
||||
Logger.d(
|
||||
TAG,
|
||||
"检查是否变灯 last.remain : ${lastResult?.remain} , current.remain : ${currentResult?.remain}"
|
||||
"检查是否变灯 last.remain : ${lastResult?.remain} , color : ${lastResult?.color} , current.remain : ${currentResult?.remain} , color : ${currentResult?.color}, turnLightFirst : $turnLightFirst"
|
||||
)
|
||||
|
||||
this.result = trafficLightResult
|
||||
@@ -118,7 +131,7 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
|
||||
}
|
||||
lastResult?.let {
|
||||
//如果上次结果和本次灯态结果变化比较大,则已变灯,控制HMI展示弹窗
|
||||
if (abs(lastResult.remain - currentResult!!.remain) > 3) {
|
||||
if (abs(it.remain - currentResult!!.remain) > 5) {
|
||||
CallerHmiManager.showWarningV2X(EventTypeEnum.TYPE_VIP_IDENTIFICATION.poiType.toInt(),
|
||||
EventTypeEnum.TYPE_VIP_IDENTIFICATION.content,
|
||||
EventTypeEnum.TYPE_VIP_IDENTIFICATION.tts,
|
||||
@@ -128,10 +141,9 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
|
||||
override fun onDismiss() {
|
||||
Logger.d(
|
||||
TAG,
|
||||
"showWarningV2X vip dismiss , reset turnLightFirst to false "
|
||||
"showWarningV2X vip dismiss , resetConditions"
|
||||
)
|
||||
turnLightFirst = false
|
||||
turnLightEnd = true
|
||||
resetConditions()
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -145,6 +157,13 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
|
||||
// }
|
||||
}
|
||||
|
||||
private fun resetConditions() {
|
||||
turnLightFirst = false
|
||||
turnLightEnd = true
|
||||
result = null
|
||||
lastResult = null
|
||||
}
|
||||
|
||||
private fun setVip(cancelDelayTime: Long) {
|
||||
vip = true
|
||||
handler.sendEmptyMessageDelayed(
|
||||
@@ -154,6 +173,7 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
|
||||
CallerHmiManager.vipIdentification(true)
|
||||
CallVipSetListenerManager.invokeVipSetStatus(true)
|
||||
CallTrafficLightListenerManager.registerTrafficLightListener(TAG, this)
|
||||
CallTrafficLightListenerManager.registerEnterCrossRoadListener(TAG, this)
|
||||
}
|
||||
|
||||
private fun cancelVip() {
|
||||
@@ -164,6 +184,7 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
|
||||
CallerHmiManager.vipIdentification(false)
|
||||
CallVipSetListenerManager.invokeVipSetStatus(false)
|
||||
CallTrafficLightListenerManager.unRegisterTrafficLightListener(TAG)
|
||||
CallTrafficLightListenerManager.unRegisterEnterCrossRoadListener(TAG)
|
||||
}
|
||||
|
||||
private fun canGetThroughCross(
|
||||
@@ -202,6 +223,13 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
|
||||
})
|
||||
}
|
||||
|
||||
override fun onEnterCrossRoad(enter: Boolean) {
|
||||
super.onEnterCrossRoad(enter)
|
||||
UiThreadHandler.post {
|
||||
this.enter = enter
|
||||
}
|
||||
}
|
||||
|
||||
private fun turnLight(controlTime: Int) {
|
||||
result?.let {
|
||||
MogoTrafficLightManager.INSTANCE.turnLightToGreen(
|
||||
|
||||
Reference in New Issue
Block a user