Merge remote-tracking branch 'origin/dev_MogoAP_eagle-1030_211020_8.0.14' into dev_MogoAP_eagle-1030_211020_8.0.14

This commit is contained in:
donghongyu
2021-11-27 17:08:23 +08:00
12 changed files with 58 additions and 30 deletions

View File

@@ -181,7 +181,7 @@ public class SmallMapDirectionView
@Override
public void onLocationChanged(@Nullable MogoLocation location) {
// Logger.d(TAG, "onCarLocationChanged2 :" + location.getLatitude()+":"+location.getLongitude());
Logger.d(TAG, "onCarLocationChanged2 :" + location.getLatitude()+":"+location.getLongitude());
LatLng currentLatLng = new LatLng(location.getLatitude(), location.getLongitude());
//更新车辆位置
if (mCarMarker != null) {
@@ -217,10 +217,10 @@ public class SmallMapDirectionView
clearPolyline();
mCoordinatesLatLng.clear();
}
cameraPosition = new CameraPosition.Builder().target(mCarMarker.getPosition()).tilt(0).build();
cameraPosition = new CameraPosition.Builder().target(mCarMarker.getPosition()).tilt(0).bearing(location.getBearing()).build();
} else {
//设置希望展示的地图缩放级别
cameraPosition = new CameraPosition.Builder().target(mCarMarker.getPosition()).tilt(0).zoom(zoomLevel).build();
cameraPosition = new CameraPosition.Builder().target(mCarMarker.getPosition()).tilt(0).bearing(location.getBearing()).zoom(zoomLevel).build();
// mAMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentLatLng, zoomLevel));
}
mAMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

View File

@@ -20,7 +20,10 @@ import kotlin.math.floor
class RedLightWarningManager : IMoGoTrafficLightListener, IMoGoVipSetListener {
private var vip: Boolean = false
private var isFirst = false
// 是否第一次进入道路100m处
private var isFirst = true
// 是否已进入到路口(停止线处)
private var isEnter = false
companion object {
@@ -32,8 +35,8 @@ class RedLightWarningManager : IMoGoTrafficLightListener, IMoGoVipSetListener {
}
override fun onTrafficLightStatus(trafficLightResult: TrafficLightResult) {
Logger.d(TAG, "处理路口交通数据。isFirst为${isFirst}")
if (isFirst) {
Logger.d(TAG, "处理路口交通数据:是否是第一次处理:${isFirst}是否进入路口${isEnter}")
if (isFirst && !isEnter) {
getCurrentRoadTrafficLight(trafficLightResult)?.let {
handleRedLightWarning(it, trafficLightResult.flashYellow)
}
@@ -41,9 +44,12 @@ class RedLightWarningManager : IMoGoTrafficLightListener, IMoGoVipSetListener {
}
}
override fun onEnterCrossRoad() {
Logger.d(TAG, "进入路口")
isFirst = true
override fun onEnterCrossRoad(enter: Boolean) {
Logger.d(TAG, "回调是否进入路口:$enter")
isEnter = enter
if (enter) {
isFirst = true
}
}
override fun onVipSet(status: Boolean) {

View File

@@ -7,7 +7,6 @@ import com.mogo.eagle.core.data.trafficlight.TrafficLightDetail
import com.mogo.eagle.core.function.api.trafficlight.ITrafficLightProvider
import com.mogo.eagle.core.function.v2x.trafficlight.TrafficLightConst.Companion.MODULE_NAME
import com.mogo.eagle.core.function.v2x.trafficlight.core.MogoTrafficLightManager
import com.mogo.utils.logger.Logger
@Route(path = MogoServicePaths.PATH_TRAFFIC_LIGHT)
class TrafficLightProvider : ITrafficLightProvider {
@@ -31,10 +30,18 @@ class TrafficLightProvider : ITrafficLightProvider {
lightId: Int,
crossingNo: String,
heading: Double,
controlTime: Int,
onSuccess: (() -> Unit),
onError: ((String) -> Unit)
) {
return MogoTrafficLightManager.INSTANCE.turnLightToGreen(lightId, crossingNo,heading,onSuccess, onError)
return MogoTrafficLightManager.INSTANCE.turnLightToGreen(
lightId,
crossingNo,
heading,
controlTime,
onSuccess,
onError
)
}
override fun onDestroy() {

View File

@@ -121,12 +121,13 @@ class MogoTrafficLightManager : IMogoCarLocationChangedListener2 {
// 检测是否开过路口,开过路口则停止读灯。并重置 trafficLightResult 值为 null
if (trafficLightResult != null && it.isInRange(loc.latitude, loc.longitude)) {
inRange = true
Logger.d("arrowtest", "进入路口")
CallTrafficLightListenerManager.invokeEnterCrossRoad()
Logger.d(TAG, "进入路口")
CallTrafficLightListenerManager.invokeEnterCrossRoad(true)
return
}
if (inRange) {
Logger.d("arrowtest", "离开路口")
Logger.d(TAG, "离开路口")
CallTrafficLightListenerManager.invokeEnterCrossRoad(false)
inRange = false
trafficLightResult = null
mThreadHandler?.sendEmptyMessage(MSG_WHAT_STOP_SEARCH_TRAFFIC_LIGHT)
@@ -148,10 +149,18 @@ class MogoTrafficLightManager : IMogoCarLocationChangedListener2 {
lightId: Int,
crossingNo: String,
heading: Double,
controlTime: Int,
onSuccess: (() -> Unit),
onError: ((String) -> Unit)
) {
trafficLightNetWorkModel.turnLightToGreen(lightId, crossingNo, heading, onSuccess, onError)
trafficLightNetWorkModel.turnLightToGreen(
lightId,
crossingNo,
heading,
controlTime,
onSuccess,
onError
)
}
override fun onCarLocationChanged(latLng: MogoLatLng?) {

View File

@@ -107,13 +107,14 @@ class TrafficLightNetWorkModel {
lightId: Int,
crossingNo: String,
heading: Double,
controlTime: Int,
onSuccess: (() -> Unit),
onError: ((String) -> Unit)
) {
request<BaseResponse<Any>> {
val map = hashMapOf<String, String>()
start {
val trafficLightRequestData = ChangeLightRequestData(lightId, crossingNo, heading)
val trafficLightRequestData = ChangeLightRequestData(lightId, crossingNo, heading, controlTime)
map["sn"] = MoGoAiCloudClientConfig.getInstance().sn
map["data"] = Gson().toJson(trafficLightRequestData)
}

View File

@@ -7,9 +7,7 @@ import android.os.Looper
import android.os.Message
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.turnRedAtOnce
import com.mogo.eagle.core.data.trafficlight.*
import com.mogo.eagle.core.data.v2x.VipMessage
import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener
import com.mogo.eagle.core.function.api.trafficlight.IMoGoTrafficLightListener
@@ -114,8 +112,9 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
if (!turnLightFirst) {
// 首次判断,变灯
turnLightFirst = true
Logger.d(TAG, "触发变灯")
turnLight()
val controlTime = if (currentResult!!.isGreen()) 45 - currentResult.remain else 45
Logger.d(TAG, "触发变灯 , controlTime : $controlTime")
turnLight(controlTime)
}
lastResult?.let {
//如果上次结果和本次灯态结果变化比较大则已变灯控制HMI展示弹窗
@@ -159,7 +158,7 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
private fun cancelVip() {
vip = false
if(handler.hasMessages(MSG_WHAT_VIP_CANCEL)){
if (handler.hasMessages(MSG_WHAT_VIP_CANCEL)) {
handler.removeMessages(MSG_WHAT_VIP_CANCEL)
}
CallerHmiManager.vipIdentification(false)
@@ -203,12 +202,12 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
})
}
private fun turnLight() {
private fun turnLight(controlTime: Int) {
result?.let {
MogoTrafficLightManager.INSTANCE.turnLightToGreen(
it.lightId,
it.crossId,
mLocation!!.bearing.toDouble(), {
mLocation!!.bearing.toDouble(), controlTime, {
Logger.d(TAG, "变灯请求成功")
}, { errorMsg ->
Logger.e(TAG, "变灯请求失败 msg : $errorMsg")

View File

@@ -4,6 +4,6 @@ class ChangeLightRequestData(
val lightId: Int, //红绿灯ID
val crossingNo: String, //路口ID
val heading: Double, //行车航向角
val action: String? = "" //保留字段,暂时没用
val time: Int //控灯时间
) {
}

View File

@@ -12,7 +12,7 @@ interface IMoGoTrafficLightListener {
/**
* 车辆进入路口回调
*/
fun onEnterCrossRoad(){
fun onEnterCrossRoad(enter:Boolean){
}

View File

@@ -20,6 +20,7 @@ interface ITrafficLightProvider : IMoGoFunctionServerProvider {
lightId: Int,
crossingNo: String,
heading: Double,
controlTime:Int,
onSuccess: (() -> Unit),
onError: ((String) -> Unit)
)

View File

@@ -116,10 +116,10 @@ object CallTrafficLightListenerManager {
}
}
fun invokeEnterCrossRoad(){
fun invokeEnterCrossRoad(enter: Boolean) {
M_TRAFFIC_LIGHT_LISTENER.forEach {
val listener = it.value
listener.onEnterCrossRoad()
listener.onEnterCrossRoad(enter)
}
}