修复红绿灯的展示逻辑
This commit is contained in:
@@ -135,7 +135,7 @@ enum class WarningTypeEnum(
|
||||
0x2B091,
|
||||
"绿波通行 %s km/h",
|
||||
"路口红灯,禁止通行",
|
||||
"保持车速 %s km/h,可直接通过路口",
|
||||
"保持车速 %s 公里每小时,可直接通过路口",
|
||||
R.drawable.icon_warning_v2x_traffic_lights_green
|
||||
),
|
||||
TYPE_USECASE_ID_COC(
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.mogo.module.obu.mogo
|
||||
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
import com.alibaba.android.arouter.launcher.ARouter
|
||||
import com.mogo.module.common.drawer.TrafficMarkerDrawer
|
||||
import com.mogo.module.common.enums.WarningTypeEnum
|
||||
@@ -146,7 +145,7 @@ class MogoPrivateObuManager private constructor() {
|
||||
ObuConstants.STATUS.ADD -> {
|
||||
//显示警告红边
|
||||
mMogoServiceApis!!.v2XListenerManager.warningChangedForListenerWithDirection(
|
||||
getOtherObjDirection(if (info.ext_info != null) info.ext_info.pos_classification else 7 ),
|
||||
getOtherObjDirection(if (info.ext_info != null) info.ext_info.pos_classification else 7),
|
||||
"ACTION_V2X_FRONT_WARNING"
|
||||
)
|
||||
//显示弹框,语音提示
|
||||
@@ -225,7 +224,7 @@ class MogoPrivateObuManager private constructor() {
|
||||
ObuConstants.STATUS.ADD -> {
|
||||
//显示警告红边
|
||||
mMogoServiceApis!!.v2XListenerManager.warningChangedForListenerWithDirection(
|
||||
getOtherObjDirection(if (!info.threat_exts.isNullOrEmpty()) info.threat_exts[0].pos_classification else 7),
|
||||
getOtherObjDirection(if (!info.threat_exts.isNullOrEmpty()) info.threat_exts[0].pos_classification else 7),
|
||||
"ACTION_V2X_FRONT_WARNING"
|
||||
)
|
||||
val ttsContent = WarningTypeEnum.getWarningTts(appId)
|
||||
@@ -255,19 +254,25 @@ class MogoPrivateObuManager private constructor() {
|
||||
// CVX_IVP_THREAT_IND 红绿灯
|
||||
override fun onCvxIvpThreatIndInfo(info: CvxIvpThreatIndInfo?) {
|
||||
Logger.d(MogoObuConst.TAG_MOGO_OBU, "CvxIvpThreatIndInfo ------> $info")
|
||||
info?.let {
|
||||
handlerTrafficLight(info.status, info.ext_info.lights, info.threat_info.app_id)
|
||||
if (info != null && info.ext_info != null && info.ext_info.lights.isNotEmpty()) {
|
||||
handlerTrafficLight(
|
||||
info.threat_info.app_id,
|
||||
info.status,
|
||||
info.ext_info.lights,
|
||||
info.ext_info.indicator
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// CVX_MAP_SPAT_INFO_IND 地图红绿灯信息
|
||||
override fun onCvxMapSpatInfoIndInfo(info: CvxMapSpatInfoIndInfo?) {
|
||||
Logger.d(MogoObuConst.TAG_MOGO_OBU, "onCvxMapSpatInfoIndInfo ------> $info")
|
||||
info?.let {
|
||||
if (info != null && info.ivp_threat_ext != null && info.ivp_threat_ext.lights.isNotEmpty()) {
|
||||
handlerTrafficLight(
|
||||
info.ivp_threat_info.app_id,
|
||||
info.status,
|
||||
info.ivp_threat_ext.lights,
|
||||
info.ivp_threat_info.app_id
|
||||
info.ivp_threat_ext.indicator
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -287,7 +292,8 @@ class MogoPrivateObuManager private constructor() {
|
||||
var ttsContent = ""
|
||||
var alertContent = ""
|
||||
ttsContent = WarningTypeEnum.getWarningTts(ObuConstants.USE_CASE_ID.VRUCW)
|
||||
alertContent = WarningTypeEnum.getWarningContent(ObuConstants.USE_CASE_ID.VRUCW)
|
||||
alertContent =
|
||||
WarningTypeEnum.getWarningContent(ObuConstants.USE_CASE_ID.VRUCW)
|
||||
if (info.ptc_type == 1) { //摩托车
|
||||
ttsContent = String.format(ttsContent, "摩托车")
|
||||
alertContent = String.format(alertContent, "摩托车")
|
||||
@@ -297,10 +303,10 @@ class MogoPrivateObuManager private constructor() {
|
||||
}
|
||||
|
||||
mIMoGoWaringProvider!!.showWarningV2X(
|
||||
ObuConstants.USE_CASE_ID.VRUCW,
|
||||
alertContent,
|
||||
ttsContent,
|
||||
ObuConstants.USE_CASE_ID.VRUCW.toString()
|
||||
ObuConstants.USE_CASE_ID.VRUCW,
|
||||
alertContent,
|
||||
ttsContent,
|
||||
ObuConstants.USE_CASE_ID.VRUCW.toString()
|
||||
)
|
||||
}
|
||||
// 删除
|
||||
@@ -391,8 +397,8 @@ class MogoPrivateObuManager private constructor() {
|
||||
* 获取道路其他 的方位
|
||||
*/
|
||||
private fun getOtherObjDirection(posClassification: Int): Int {
|
||||
return when(posClassification) {
|
||||
0x01 -> 0 //事件中
|
||||
return when (posClassification) {
|
||||
0x01 -> 0 //事件中
|
||||
0x02 -> 3 //左侧
|
||||
0x03 -> 4 //右侧
|
||||
0x04 -> 1 //前方
|
||||
@@ -410,14 +416,11 @@ class MogoPrivateObuManager private constructor() {
|
||||
/**
|
||||
* 处理红绿灯
|
||||
*/
|
||||
private fun handlerTrafficLight(status: Int, lights: List<Light>, appId: Int) {
|
||||
var alertContent = ""
|
||||
var ttsContent = ""
|
||||
|
||||
private fun handlerTrafficLight(appId: Int, status: Int, lights: List<Light>, indicator: Int) {
|
||||
when (status) {
|
||||
// 添加
|
||||
ObuConstants.STATUS.ADD -> {
|
||||
changeTrafficLightStatus(lights, ttsContent, appId, alertContent)
|
||||
changeTrafficLightStatus(appId, lights, indicator)
|
||||
}
|
||||
// 删除
|
||||
ObuConstants.STATUS.DELETE -> {
|
||||
@@ -426,7 +429,7 @@ class MogoPrivateObuManager private constructor() {
|
||||
mIMoGoWaringProvider?.disableWarningV2X(appId.toString())
|
||||
}
|
||||
else -> {
|
||||
changeTrafficLightStatus(lights, ttsContent, appId, alertContent)
|
||||
changeTrafficLightStatus(appId, lights, indicator)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -435,15 +438,15 @@ class MogoPrivateObuManager private constructor() {
|
||||
* 修改红绿灯
|
||||
*/
|
||||
private fun changeTrafficLightStatus(
|
||||
lights: List<Light>,
|
||||
ttsContent: String,
|
||||
appId: Int,
|
||||
alertContent: String
|
||||
lights: List<Light>,
|
||||
indicator: Int
|
||||
) {
|
||||
var ttsContent1 = ttsContent
|
||||
var alertContent1 = alertContent
|
||||
lights.forEach {
|
||||
when (it.phase) {
|
||||
var ttsContent = ""
|
||||
var alertContent = ""
|
||||
if (lights.size >= indicator) {
|
||||
val currentLight = lights[indicator]
|
||||
when (currentLight.phase) {
|
||||
// 灯光不可用
|
||||
0x0 -> {
|
||||
mIMoGoWaringProvider?.showWarningTrafficLight(0)
|
||||
@@ -456,43 +459,47 @@ class MogoPrivateObuManager private constructor() {
|
||||
"ACTION_V2X_FRONT_WARNING"
|
||||
)
|
||||
mIMoGoWaringProvider?.showWarningTrafficLight(1)
|
||||
mIMoGoWaringProvider?.changeCountdownRed(it.count_down.toInt())
|
||||
ttsContent1 = WarningTypeEnum.getWarningTts(appId)
|
||||
alertContent1 = WarningTypeEnum.getWarningContent(appId)
|
||||
mIMoGoWaringProvider?.changeCountdownRed(currentLight.count_down.toInt())
|
||||
ttsContent = WarningTypeEnum.getWarningTts(appId)
|
||||
alertContent = WarningTypeEnum.getWarningContent(appId)
|
||||
mIMoGoWaringProvider!!.showWarningV2X(
|
||||
appId,
|
||||
alertContent1,
|
||||
ttsContent1,
|
||||
alertContent,
|
||||
ttsContent,
|
||||
appId.toString()
|
||||
)
|
||||
}
|
||||
// 绿灯
|
||||
0x2 -> {
|
||||
mIMoGoWaringProvider?.showWarningTrafficLight(3)
|
||||
mIMoGoWaringProvider?.changeCountdownGreen(it.count_down.toInt())
|
||||
mIMoGoWaringProvider?.changeCountdownGreen(currentLight.count_down.toInt())
|
||||
// 拼接建议速度
|
||||
val adviceSpeed =
|
||||
"${it.glosa_suggested_speed_min.toInt()} + ${it.glosa_suggested_speed_max.toInt()}"
|
||||
"${currentLight.glosa_suggested_speed_min.toInt()} - ${currentLight.glosa_suggested_speed_max.toInt()}"
|
||||
|
||||
ttsContent1 =
|
||||
String.format(WarningTypeEnum.getWarningTts(0x2B091), adviceSpeed)
|
||||
alertContent1 =
|
||||
val adviceSpeedTts =
|
||||
"${currentLight.glosa_suggested_speed_min.toInt()}到${currentLight.glosa_suggested_speed_max.toInt()}"
|
||||
|
||||
ttsContent =
|
||||
String.format(WarningTypeEnum.getWarningTts(0x2B091), adviceSpeedTts)
|
||||
alertContent =
|
||||
String.format(WarningTypeEnum.getWarningTts(0x2B091), adviceSpeed)
|
||||
|
||||
mIMoGoWaringProvider!!.showWarningV2X(
|
||||
0x2B091,
|
||||
alertContent1,
|
||||
ttsContent1,
|
||||
alertContent,
|
||||
ttsContent,
|
||||
appId.toString()
|
||||
)
|
||||
}
|
||||
// 黄灯
|
||||
0x3 -> {
|
||||
mIMoGoWaringProvider?.showWarningTrafficLight(2)
|
||||
mIMoGoWaringProvider?.changeCountdownYellow(it.count_down.toInt())
|
||||
mIMoGoWaringProvider?.changeCountdownYellow(currentLight.count_down.toInt())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@ package com.mogo.module.obu.mogo.receiver
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.util.Log
|
||||
import com.mogo.module.obu.mogo.MogoObuConst
|
||||
import com.mogo.module.obu.mogo.MogoPrivateObuManager
|
||||
import com.mogo.utils.logger.Logger
|
||||
@@ -35,11 +34,11 @@ class ObuRsuTestTriggerReceiver : BroadcastReceiver() {
|
||||
val obuType = intent.getIntExtra(MogoObuConst.BROADCAST_OBU_TYPE_EXTRA_KEY, 0)
|
||||
val obuStatus = intent.getIntExtra(MogoObuConst.BROADCAST_OBU_STATES_EXTRA_KEY, 0)
|
||||
val obuLevel = intent.getIntExtra(MogoObuConst.BROADCAST_OBU_LEVEL_EXTRA_KEY, 3)
|
||||
val phase = intent.getIntExtra(MogoObuConst.BROADCAST_LIGHT_LEVEL_EXTRA_KEY, 0)
|
||||
val indicator = intent.getIntExtra(MogoObuConst.BROADCAST_LIGHT_LEVEL_EXTRA_KEY, 0)
|
||||
val pctType = intent.getIntExtra(MogoObuConst.BROADCAST_PTC_INFO_EXTRA_KEY, 0)
|
||||
|
||||
Logger.d(
|
||||
TAG, "obuStatus:$obuStatus phase:$phase obuType:$obuType obuLevel:$obuLevel"
|
||||
TAG, "obuStatus:$obuStatus phase:$indicator obuType:$obuType obuLevel:$obuLevel"
|
||||
)
|
||||
|
||||
when (obuType) {
|
||||
@@ -50,14 +49,19 @@ class ObuRsuTestTriggerReceiver : BroadcastReceiver() {
|
||||
|
||||
cvxIvpThreatIndInfo.threat_info = ivpThreat
|
||||
|
||||
val lightList = listOf<Light>(Light(1, phase, 1000, 100, 100, 1, 100, 1000))
|
||||
val ivpThreatExt = IvpThreatExt(1, 1000, 1000, 0, 2, lightList)
|
||||
val lightList = listOf(
|
||||
Light(1, 0x0, 1000, 100, 6000, 3000, 100, 1000),
|
||||
Light(1, 0x1, 1000, 100, 6000, 3000, 100, 1000),
|
||||
Light(1, 0x2, 1000, 100, 6000, 3000, 100, 1000),
|
||||
Light(1, 0x3, 1000, 100, 6000, 3000, 100, 1000)
|
||||
)
|
||||
val ivpThreatExt = IvpThreatExt(1, 1000, 1000, 0, indicator, lightList)
|
||||
cvxIvpThreatIndInfo.ext_info = ivpThreatExt
|
||||
cvxIvpThreatIndInfo.status = obuStatus
|
||||
cvxIvpThreatIndInfo.link_id = "1"
|
||||
|
||||
MogoPrivateObuManager.INSTANCE.getMogoObuListener()
|
||||
.onCvxIvpThreatIndInfo(cvxIvpThreatIndInfo)
|
||||
.onCvxIvpThreatIndInfo(cvxIvpThreatIndInfo)
|
||||
}
|
||||
|
||||
ObuConstants.USE_CASE_ID.SLW -> { //限速预警
|
||||
@@ -67,12 +71,13 @@ class ObuRsuTestTriggerReceiver : BroadcastReceiver() {
|
||||
cvxSlwThreatIndInfo.ext_info = slwThreatExt
|
||||
cvxSlwThreatIndInfo.status = obuStatus
|
||||
|
||||
MogoPrivateObuManager.INSTANCE.getMogoObuListener().onCvxSlwThreatIndInfo(cvxSlwThreatIndInfo)
|
||||
MogoPrivateObuManager.INSTANCE.getMogoObuListener()
|
||||
.onCvxSlwThreatIndInfo(cvxSlwThreatIndInfo)
|
||||
}
|
||||
|
||||
//弱势交通参与者碰撞预警,行人/摩托车碰撞预警
|
||||
ObuConstants.USE_CASE_ID.VRUCW -> {
|
||||
val cvxPtcIndInfo = CvxPtcInfoIndInfo(1,1,1)
|
||||
val cvxPtcIndInfo = CvxPtcInfoIndInfo(1, 1, 1)
|
||||
val position = Position(1, 399739429, 1164115207, 20)
|
||||
val movingObjectInfo = MovingObjectInfo(1, position, 1800, 6000)
|
||||
cvxPtcIndInfo.basic_info = movingObjectInfo
|
||||
@@ -80,23 +85,22 @@ class ObuRsuTestTriggerReceiver : BroadcastReceiver() {
|
||||
cvxPtcIndInfo.ptc_type = pctType
|
||||
cvxPtcIndInfo.status = obuStatus
|
||||
|
||||
MogoPrivateObuManager.INSTANCE.getMogoObuListener().onCvxPtcInfoIndInfo(cvxPtcIndInfo)
|
||||
MogoPrivateObuManager.INSTANCE.getMogoObuListener()
|
||||
.onCvxPtcInfoIndInfo(cvxPtcIndInfo)
|
||||
}
|
||||
|
||||
//道路危险情况, 车内标牌, 前方拥堵提醒
|
||||
ObuConstants.USE_CASE_ID.HLW, ObuConstants.USE_CASE_ID.IVS,ObuConstants.USE_CASE_ID.TJW -> {
|
||||
val cvxRtiThreatIndInfo = CvxRtiThreatIndInfo(1,1, 1L)
|
||||
val dateTime = DateTime(1,1,1,1,1,1,1,1)
|
||||
val rtiThread = RtiThreat(1, obuType, dateTime,100000, obuLevel, 100)
|
||||
ObuConstants.USE_CASE_ID.HLW, ObuConstants.USE_CASE_ID.IVS, ObuConstants.USE_CASE_ID.TJW -> {
|
||||
val cvxRtiThreatIndInfo = CvxRtiThreatIndInfo(1, 1, 1L)
|
||||
val dateTime = DateTime(1, 1, 1, 1, 1, 1, 1, 1)
|
||||
val rtiThread = RtiThreat(1, obuType, dateTime, 100000, obuLevel, 100)
|
||||
|
||||
cvxRtiThreatIndInfo.threat_info = rtiThread
|
||||
cvxRtiThreatIndInfo.status = obuStatus
|
||||
|
||||
MogoPrivateObuManager.INSTANCE.getMogoObuListener().onCvxRtiThreatIndInfo(cvxRtiThreatIndInfo)
|
||||
MogoPrivateObuManager.INSTANCE.getMogoObuListener()
|
||||
.onCvxRtiThreatIndInfo(cvxRtiThreatIndInfo)
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user