diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/vip/VipCarManager.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/vip/VipCarManager.kt index 8851612621..a29c2c1f3c 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/vip/VipCarManager.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/vip/VipCarManager.kt @@ -6,6 +6,7 @@ import com.mogo.cloud.commons.utils.CoordinateUtils import com.mogo.eagle.core.data.map.MogoLatLng import com.mogo.eagle.core.data.trafficlight.TrafficLightResult import com.mogo.eagle.core.data.trafficlight.currentRoadTrafficLight +import com.mogo.eagle.core.data.trafficlight.isRed import com.mogo.eagle.core.data.trafficlight.turnRedAtOnce import com.mogo.eagle.core.data.v2x.VipMessage import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener @@ -19,6 +20,7 @@ import com.mogo.module.common.MogoApisHandler import com.mogo.module.common.enums.EventTypeEnum import com.mogo.service.cloud.socket.IMogoOnMessageListener import com.mogo.utils.logger.Logger +import kotlin.math.abs class VipCarManager : IMogoOnMessageListener, IMoGoTrafficLightListener, IMogoCarLocationChangedListener2 { @@ -33,7 +35,7 @@ class VipCarManager : IMogoOnMessageListener, IMoGoTrafficLightListe } private var mContext: Context? = null - private var mLocation:Location? = null + private var mLocation: Location? = null private var turnLightFirst = false private var turnLightEnd = true private var result: TrafficLightResult? = null @@ -82,7 +84,11 @@ class VipCarManager : IMogoOnMessageListener, IMoGoTrafficLightListe } override fun onTrafficLightStatus(trafficLightResult: TrafficLightResult) { - if (!turnLightFirst) { + if (trafficLightResult.currentRoadTrafficLight() == null) { + return + } + + if (!turnLightFirst && trafficLightResult.currentRoadTrafficLight()!!.isRed()) { // 首次判断,变灯 turnLightFirst = true turnLight() @@ -92,7 +98,7 @@ class VipCarManager : IMogoOnMessageListener, IMoGoTrafficLightListe this.result = trafficLightResult //如果上次结果和本次灯态结果变化比较大,则已变灯,控制HMI展示弹窗 - if (lastResult!!.remain - currentResult!!.remain > 3) { + if (abs(lastResult!!.remain - currentResult!!.remain) > 3) { CallerHmiManager.showWarningV2X(EventTypeEnum.TYPE_VIP_IDENTIFICATION.poiType.toInt(), EventTypeEnum.TYPE_VIP_IDENTIFICATION.content, EventTypeEnum.TYPE_VIP_IDENTIFICATION.tts, @@ -100,6 +106,7 @@ class VipCarManager : IMogoOnMessageListener, IMoGoTrafficLightListe object : IMoGoWarningStatusListener { override fun onShow() {} override fun onDismiss() { + turnLightFirst = false } }) }