From 2fa4e86baae2f9648b2de7d107031a24b24d0305 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Wed, 17 Nov 2021 19:23:08 +0800 Subject: [PATCH] reset traffic light manager to main server --- .../core/MogoTrafficLightManager.kt | 106 +++++++++--------- 1 file changed, 54 insertions(+), 52 deletions(-) diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/MogoTrafficLightManager.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/MogoTrafficLightManager.kt index 9e741570f6..15bf62e16c 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/MogoTrafficLightManager.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/MogoTrafficLightManager.kt @@ -3,6 +3,7 @@ package com.mogo.eagle.core.function.v2x.trafficlight.core import android.content.Context import android.location.Location import android.os.Handler +import android.os.Looper import com.mogo.cloud.commons.utils.CoordinateUtils import com.mogo.eagle.core.data.map.MogoLatLng import com.mogo.eagle.core.data.trafficlight.TrafficLightDetail @@ -14,7 +15,6 @@ import com.mogo.eagle.core.function.v2x.trafficlight.core.TrafficLightThreadHand import com.mogo.eagle.core.function.v2x.trafficlight.core.TrafficLightThreadHandler.Companion.MSG_WHAT_STOP_SEARCH_CROSS_ROAD import com.mogo.eagle.core.function.v2x.trafficlight.core.TrafficLightThreadHandler.Companion.MSG_WHAT_STOP_SEARCH_TRAFFIC_LIGHT import com.mogo.eagle.core.function.v2x.trafficlight.network.TrafficLightNetWorkModel -import com.mogo.eagle.core.utilcode.mogo.thread.WorkThreadHandler import com.mogo.map.navi.IMogoCarLocationChangedListener2 import com.mogo.module.common.MogoApisHandler import com.mogo.utils.logger.Logger @@ -43,58 +43,60 @@ class MogoTrafficLightManager : IMogoCarLocationChangedListener2 { MogoApisHandler.getInstance().apis .registerCenterApi.registerCarLocationChangedListener(TAG, this) mThreadHandler = - TrafficLightThreadHandler(WorkThreadHandler.newInstance("TrafficLight").looper, - { - Logger.d(TAG, "loop search roadID , mLocation : $mLocation") + TrafficLightThreadHandler(Looper.getMainLooper(), { + Logger.d(TAG, "loop search roadID , mLocation : $mLocation") - //查询路口时,如果红绿灯显示,则隐藏掉 - if(TrafficLightHMIManager.INSTANCE.isWarningTrafficLightShow()){ - TrafficLightHMIManager.INSTANCE.hideTrafficLight() - CallTrafficLightListenerManager.resetTrafficLightData() - } + //查询路口时,如果红绿灯显示,则隐藏掉 + if (TrafficLightHMIManager.INSTANCE.isWarningTrafficLightShow()) { + TrafficLightHMIManager.INSTANCE.hideTrafficLight() + CallTrafficLightListenerManager.resetTrafficLightData() + } - mLocation?.let { it -> - val tileId = MogoApisHandler.getInstance().apis - .mapServiceApi.mapUIController.getTileId(it.longitude, it.latitude) - trafficLightNetWorkModel.requestRoadID( - tileId, it.latitude, it.longitude, it.bearing.toDouble(), { - mThreadHandler?.sendEmptyMessage(MSG_WHAT_STOP_SEARCH_CROSS_ROAD) - roadId = it - }, - { - Logger.d(TAG, "request road id error : $it") - }) - } - }, { - //stop loop search road id - trafficLightNetWorkModel.cancelRequestRoadID() - //开始请求红绿灯 - mThreadHandler?.sendEmptyMessage(MSG_WHAT_LOOP_SEARCH_TRAFFIC_LIGHT) - }, { - //start loop traffic light - mLocation?.let { - val road = if (roadId.isNullOrBlank()) "" else roadId!! - trafficLightNetWorkModel.requestTrafficLight( - it.latitude, it.longitude, it.bearing.toDouble(), road, { result -> - trafficLightResult = result - TrafficLightHMIManager.INSTANCE.updateTrafficLight(result) - CallTrafficLightListenerManager.invokeTrafficLightStatus(result) - }, - { errorMsg -> - //如果没有获取到正确的红绿灯数据,则取消读灯,继续读路口,防止出现一直读灯的情况 - Logger.d(TAG, "request Traffic Light error : $errorMsg") - //stop loop traffic light - trafficLightNetWorkModel.cancelRequestTrafficLight() - //未查到红绿灯,加入2秒延时请求路口ID - mThreadHandler?.sendEmptyMessageDelayed(MSG_WHAT_LOOP_SEARCH_CROSS_ROAD, 2_000L) - }) - } - }, { - //stop loop traffic light - trafficLightNetWorkModel.cancelRequestTrafficLight() - //刚经过红绿灯,加入3秒延时请求路口ID - mThreadHandler?.sendEmptyMessageDelayed(MSG_WHAT_LOOP_SEARCH_CROSS_ROAD, 3_000L) - }) + mLocation?.let { it -> + val tileId = MogoApisHandler.getInstance().apis + .mapServiceApi.mapUIController.getTileId(it.longitude, it.latitude) + trafficLightNetWorkModel.requestRoadID( + tileId, it.latitude, it.longitude, it.bearing.toDouble(), { + mThreadHandler?.sendEmptyMessage(MSG_WHAT_STOP_SEARCH_CROSS_ROAD) + roadId = it + }, + { + Logger.d(TAG, "request road id error : $it") + }) + } + }, { + //stop loop search road id + trafficLightNetWorkModel.cancelRequestRoadID() + //开始请求红绿灯 + mThreadHandler?.sendEmptyMessage(MSG_WHAT_LOOP_SEARCH_TRAFFIC_LIGHT) + }, { + //start loop traffic light + mLocation?.let { + val road = if (roadId.isNullOrBlank()) "" else roadId!! + trafficLightNetWorkModel.requestTrafficLight( + it.latitude, it.longitude, it.bearing.toDouble(), road, { result -> + trafficLightResult = result + TrafficLightHMIManager.INSTANCE.updateTrafficLight(result) + CallTrafficLightListenerManager.invokeTrafficLightStatus(result) + }, + { errorMsg -> + //如果没有获取到正确的红绿灯数据,则取消读灯,继续读路口,防止出现一直读灯的情况 + Logger.d(TAG, "request Traffic Light error : $errorMsg") + //stop loop traffic light + trafficLightNetWorkModel.cancelRequestTrafficLight() + //未查到红绿灯,加入2秒延时请求路口ID + mThreadHandler?.sendEmptyMessageDelayed( + MSG_WHAT_LOOP_SEARCH_CROSS_ROAD, + 2_000L + ) + }) + } + }, { + //stop loop traffic light + trafficLightNetWorkModel.cancelRequestTrafficLight() + //刚经过红绿灯,加入3秒延时请求路口ID + mThreadHandler?.sendEmptyMessageDelayed(MSG_WHAT_LOOP_SEARCH_CROSS_ROAD, 3_000L) + }) mThreadHandler?.sendEmptyMessageDelayed(MSG_WHAT_LOOP_SEARCH_CROSS_ROAD, 5_000L) } @@ -130,7 +132,7 @@ class MogoTrafficLightManager : IMogoCarLocationChangedListener2 { trafficLightResult!!.lon, trafficLightResult!!.lat ) < 10) ) { - Logger.d(TAG,"开过路口") + Logger.d(TAG, "开过路口") trafficLightResult = null TrafficLightHMIManager.INSTANCE.hideTrafficLight() CallTrafficLightListenerManager.resetTrafficLightData()