diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/V2XEventManager.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/V2XEventManager.kt index 7564821f33..839b49bbe2 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/V2XEventManager.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/V2XEventManager.kt @@ -11,7 +11,6 @@ import com.mogo.cloud.passport.IMoGoTokenCallback import com.mogo.cloud.passport.MoGoAiCloudClient import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.commons.network.ParamsUtil -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_V2X import com.mogo.eagle.core.data.enums.TrafficTypeEnum import com.mogo.eagle.core.data.map.MogoLatLng import com.mogo.eagle.core.data.map.MogoLocation @@ -19,7 +18,6 @@ import com.mogo.eagle.core.data.traffic.TrafficData import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener import com.mogo.eagle.core.function.api.map.listener.IMoGoMapLocationListener import com.mogo.eagle.core.function.call.hmi.CallerHmiManager -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.function.call.map.CallerMapLocationListenerManager import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager @@ -44,6 +42,9 @@ import com.mogo.eagle.core.function.v2x.events.scenario.impl.V2XScenarioManager import com.mogo.eagle.core.function.v2x.events.utils.* import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceManager import com.mogo.eagle.core.network.utils.GsonUtil +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_V2X +import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.eagle.core.utilcode.util.TimeUtils import com.mogo.eagle.core.utilcode.util.Utils @@ -60,13 +61,13 @@ import com.mogo.service.statusmanager.IMogoStatusChangedListener import com.mogo.service.statusmanager.StatusDescriptor import com.mogo.service.statusmanager.StatusDescriptor.ACC_STATUS import com.mogo.service.statusmanager.StatusDescriptor.SEEK_HELPING -import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr import com.mogo.v2x.V2XManager import com.mogo.v2x.callback.IV2XCallback import com.mogo.v2x.config.V2XConfig import com.mogo.v2x.data.V2XAdvanceWarning import com.mogo.v2x.data.V2XMarkerCardResult import com.mogo.v2x.data.V2XOptimalRoute +import com.mogo.v2x.data.V2XWarningTarget import com.mogo.v2x.event.V2XEvent import com.shuyu.gsyvideoplayer.GSYVideoManager import com.shuyu.gsyvideoplayer.cache.CacheFactory @@ -78,11 +79,10 @@ import com.shuyu.gsyvideoplayer.utils.GSYVideoType import kotlinx.coroutines.* import kotlinx.coroutines.android.asCoroutineDispatcher import tv.danmaku.ijk.media.player.IjkMediaPlayer -import java.lang.Exception -import java.lang.IllegalStateException import java.util.concurrent.TimeUnit import java.util.concurrent.atomic.AtomicBoolean + object V2XEventManager : IMoGoMapLocationListener, IMoGoTokenCallback, IV2XCallback, IMogoMapListener, IMogoStatusChangedListener { @@ -449,10 +449,22 @@ object V2XEventManager : IMoGoMapLocationListener, IMoGoTokenCallback, IV2XCallb is V2XEvent.Road -> { handleRoadMarkerEvent(event.data) } - else -> throw IllegalStateException("invalid event type for $event") + is V2XEvent.Warning -> { + handleWarningTargetEvent(event.data) + } } } + private fun handleWarningTargetEvent(data: V2XWarningTarget) { + val v2xMessageEntity = V2XMessageEntity() + v2xMessageEntity.type = V2XTypeEnum.ALERT_THE_FRONT_WEAKNESS + // 设置数据 + v2xMessageEntity.content = data + val intent = Intent(BROADCAST_SCENE_HANDLER_ACTION) + intent.putExtra(BROADCAST_SCENE_EXTRA_KEY, v2xMessageEntity) + LocalBroadcastManager.getInstance(Utils.getApp()).sendBroadcast(intent) + } + private fun handleRoadMarkerEvent(data: V2XMarkerCardResult) { try { BridgeApi.v2xStatus()?.let { diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XFrontWarningScenario.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XFrontWarningScenario.java index 585e5ee0bc..35a84fcc38 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XFrontWarningScenario.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XFrontWarningScenario.java @@ -6,9 +6,7 @@ import android.graphics.Color; import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.style.ForegroundColorSpan; - import androidx.annotation.Nullable; - import com.mogo.eagle.core.data.enums.WarningDirectionEnum; import com.mogo.eagle.core.data.map.MogoLocation; import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener; @@ -18,8 +16,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.function.v2x.events.scenario.impl.AbsV2XScenario; import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XMarker; import com.mogo.module.common.entity.V2XMessageEntity; -import com.mogo.module.common.entity.V2XWarningEntity; - +import com.mogo.v2x.data.V2XWarningTarget; import java.math.BigDecimal; import java.util.Locale; import java.util.concurrent.TimeUnit; @@ -32,7 +29,7 @@ import java.util.concurrent.TimeUnit; public class V2XFrontWarningScenario extends AbsV2XScenario implements IMoGoMapLocationListener, IMoGoWarningStatusListener { private static final String TAG = "V2XWarningMarker"; private static final V2XWarningMarker sV2XWarningMarker = new V2XWarningMarker(); - private V2XWarningEntity mMarkerEntity; + private V2XWarningTarget mMarkerEntity; private WarningDirectionEnum mDirection; @@ -45,8 +42,8 @@ public class V2XFrontWarningScenario extends AbsV2XScenario implements IMoGoMapL CallerLogger.INSTANCE.d(M_V2X + TAG, "----- init -----:\n" + (v2XMessageEntity == null ? "null" : v2XMessageEntity.toString())); try { setV2XMessageEntity(v2XMessageEntity); - if (v2XMessageEntity != null && v2XMessageEntity.getContent() instanceof V2XWarningEntity) { - mMarkerEntity = (V2XWarningEntity) v2XMessageEntity.getContent(); + if (v2XMessageEntity != null && v2XMessageEntity.getContent() instanceof V2XWarningTarget) { + mMarkerEntity = (V2XWarningTarget) v2XMessageEntity.getContent(); show(); } } catch (Exception e) { @@ -67,19 +64,22 @@ public class V2XFrontWarningScenario extends AbsV2XScenario implements IMoGoMapL } } - private int getV2XTypeForFrontWarning(V2XWarningEntity entity) { + private int getV2XTypeForFrontWarning(V2XWarningTarget entity) { switch (entity.getType()) { case 1: case 11: + entity.setTts("注意行人"); return 0X2B0201; case 2: + entity.setTts("注意自行车"); case 4: + entity.setTts("注意摩托车"); return 0X2B0202; } return 0; } - private CharSequence getAlertContentForFrontWarning(V2XWarningEntity entity) { + private CharSequence getAlertContentForFrontWarning(V2XWarningTarget entity) { double dis = entity.getDistance(); //距离四舍五入保留整数 BigDecimal bg = new BigDecimal(dis);