Merge remote-tracking branch 'origin/feature/feature_mogo_obu' into feature/feature_mogo_obu

This commit is contained in:
董宏宇
2021-08-20 17:07:23 +08:00
8 changed files with 67 additions and 34 deletions

View File

@@ -155,6 +155,11 @@ public class V2XMessageEntity<T> implements Serializable {
int ALERT_THE_FRONT_CRASH_WARNING_LEFT = 3;
// 右前方碰撞预警
int ALERT_THE_FRONT_CRASH_WARNING_RIGHT = 4;
// 左后方碰撞预警
int ALERT_THE_FRONT_CRASH_WARNING_BOTTOM_LEFT = 5;
// 右后方碰撞预警
int ALERT_THE_FRONT_CRASH_WARNING_BOTTOM_RIGHT = 6;
// 推送VR消息展示
int ALERT_PUSH_VR_SHOW = 2_000;
// 自车求助

View File

@@ -1,6 +1,7 @@
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
@@ -145,7 +146,7 @@ class MogoPrivateObuManager private constructor() {
ObuConstants.STATUS.ADD -> {
//显示警告红边
mMogoServiceApis!!.v2XListenerManager.warningChangedForListenerWithDirection(
getMessageDirection(5),
getOtherObjDirection(if (info.ext_info != null) info.ext_info.pos_classification else 7 ),
"ACTION_V2X_FRONT_WARNING"
)
//显示弹框,语音提示
@@ -224,7 +225,7 @@ class MogoPrivateObuManager private constructor() {
ObuConstants.STATUS.ADD -> {
//显示警告红边
mMogoServiceApis!!.v2XListenerManager.warningChangedForListenerWithDirection(
getMessageDirection(5),
getOtherObjDirection(if (!info.threat_exts.isNullOrEmpty()) info.threat_exts[0].pos_classification else 7),
"ACTION_V2X_FRONT_WARNING"
)
val ttsContent = WarningTypeEnum.getWarningTts(appId)
@@ -282,10 +283,30 @@ class MogoPrivateObuManager private constructor() {
TrafficDataConvertUtils.cvxPtcInfoIndInfo2TrafficData(info)?.let {
TrafficMarkerDrawer.updateITrafficInfo(it)
}
var ttsContent = ""
var alertContent = ""
ttsContent = WarningTypeEnum.getWarningTts(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, "摩托车")
} else if (info.ptc_type == 2) { //行人
ttsContent = String.format(ttsContent, "行人")
alertContent = String.format(alertContent, "行人")
}
mIMoGoWaringProvider!!.showWarningV2X(
ObuConstants.USE_CASE_ID.VRUCW,
alertContent,
ttsContent,
ObuConstants.USE_CASE_ID.VRUCW.toString()
)
}
// 删除
ObuConstants.STATUS.DELETE -> {
TrafficMarkerDrawer.removeCvxRvInfoIndInfo(info.id)
mIMoGoWaringProvider?.disableWarningV2X(ObuConstants.USE_CASE_ID.VRUCW.toString())
}
// 更新
else -> {
@@ -349,23 +370,38 @@ class MogoPrivateObuManager private constructor() {
}
/**
* 获取消息的方位
* 获取消息的方位 车辆相关
*/
private fun getMessageDirection(targetClassification: Int): Int {
return when (targetClassification) {
ObuConstants.TARGET_CLASSIFICATION.TC_ONCOMING_IN_LANE, ObuConstants.TARGET_CLASSIFICATION.TC_AHEAD_IN_LANE -> 1 //正前方
ObuConstants.TARGET_CLASSIFICATION.TC_AHEAD_RIGHT, ObuConstants.TARGET_CLASSIFICATION.TC_AHEAD_FAR_RIGHT, ObuConstants.TARGET_CLASSIFICATION.TC_ONCOMING_FAR_RIGHT,
ObuConstants.TARGET_CLASSIFICATION.TC_BEHIND_IN_LANE -> 2 //正后方
ObuConstants.TARGET_CLASSIFICATION.TC_AHEAD_FAR_LEFT, ObuConstants.TARGET_CLASSIFICATION.TC_AHEAD_LEFT, ObuConstants.TARGET_CLASSIFICATION.TC_ONCOMING_FAR_LEFT,
ObuConstants.TARGET_CLASSIFICATION.TC_ONCOMING_LEFT, ObuConstants.TARGET_CLASSIFICATION.TC_INTERSECTION_LEFT -> 3 //左前方
ObuConstants.TARGET_CLASSIFICATION.TC_INTERSECTION_RIGHT, ObuConstants.TARGET_CLASSIFICATION.TC_ONCOMING_RIGHT -> 4 //右前方
ObuConstants.TARGET_CLASSIFICATION.TC_BEHIND_LEFT, ObuConstants.TARGET_CLASSIFICATION.TC_BEHIND_FAR_LEFT -> 2 //左后方 弹框目前后方分为左后,右后,正后方
ObuConstants.TARGET_CLASSIFICATION.TC_BEHIND_RIGHT, ObuConstants.TARGET_CLASSIFICATION.TC_BEHIND_FAR_RIGHT -> 2 //右后方
ObuConstants.TARGET_CLASSIFICATION.TC_AHEAD_RIGHT, ObuConstants.TARGET_CLASSIFICATION.TC_AHEAD_FAR_RIGHT, ObuConstants.TARGET_CLASSIFICATION.TC_ONCOMING_FAR_RIGHT,
ObuConstants.TARGET_CLASSIFICATION.TC_BEHIND_IN_LANE -> 2 //正后方
ObuConstants.TARGET_CLASSIFICATION.TC_BEHIND_LEFT, ObuConstants.TARGET_CLASSIFICATION.TC_BEHIND_FAR_LEFT -> 5 //左后方 弹框目前后方分为左后,右后,正后方
ObuConstants.TARGET_CLASSIFICATION.TC_BEHIND_RIGHT, ObuConstants.TARGET_CLASSIFICATION.TC_BEHIND_FAR_RIGHT -> 6 //右后方
ObuConstants.TARGET_CLASSIFICATION.TC_UNCLASSIFIED -> 0 //未知
else -> 7
}
}
/**
* 获取道路其他 的方位
*/
private fun getOtherObjDirection(posClassification: Int): Int {
return when(posClassification) {
0x01 -> 0 //事件中
0x02 -> 3 //左侧
0x03 -> 4 //右侧
0x04 -> 1 //前方
0x05 -> 2 //后方
else -> 7
}
}
fun release() {
MogoObuManager.getInstance().unregisterListener()
@@ -416,7 +452,7 @@ class MogoPrivateObuManager private constructor() {
0x1 -> {
//显示警告红边
mMogoServiceApis!!.v2XListenerManager.warningChangedForListenerWithDirection(
getMessageDirection(5),
1,
"ACTION_V2X_FRONT_WARNING"
)
mIMoGoWaringProvider?.showWarningTrafficLight(1)
@@ -482,9 +518,9 @@ class MogoPrivateObuManager private constructor() {
WarningTypeEnum.TYPE_USECASE_ID_LCW.useCaseId -> {
alertContent = WarningTypeEnum.getWarningContent(appId)
ttsContent = WarningTypeEnum.getWarningTts(appId)
if (direction == 2) {
if (direction == 5) {
ttsContent = String.format(ttsContent, "")
} else if (direction == 4) else {
} else if (direction == 6) else {
ttsContent = String.format(ttsContent, "")
}
}
@@ -494,13 +530,13 @@ class MogoPrivateObuManager private constructor() {
alertContent = WarningTypeEnum.getWarningContent(appId)
ttsContent = WarningTypeEnum.getWarningTts(appId)
when (direction) {
1 -> { //左前
3 -> { //左前
ttsContent = String.format(ttsContent, "")
}
3 -> { //右前
4 -> { //右前
ttsContent = String.format(ttsContent, "")
}
5 -> { //正前
1 -> { //正前
ttsContent = alertContent
}
}
@@ -511,13 +547,13 @@ class MogoPrivateObuManager private constructor() {
alertContent = WarningTypeEnum.getWarningContent(appId)
ttsContent = WarningTypeEnum.getWarningTts(appId)
when (direction) {
1 -> { //左前
3 -> { //左前
ttsContent = String.format(ttsContent, "")
}
3 -> { //右前
4 -> { //右前
ttsContent = String.format(ttsContent, "")
}
5 -> { //正前
1 -> { //正前
ttsContent = alertContent
}
}
@@ -526,9 +562,9 @@ class MogoPrivateObuManager private constructor() {
//盲区预警
WarningTypeEnum.TYPE_USECASE_ID_BSW.useCaseId -> {
ttsContent = WarningTypeEnum.getWarningTts(appId)
if (direction == 2) {
if (direction == 5) { //左后
ttsContent = String.format(ttsContent, "")
} else if (direction == 4) else {
} else if (direction == 6) else { //右后
ttsContent = String.format(ttsContent, "")
}
alertContent = WarningTypeEnum.getWarningContent(appId)

View File

@@ -73,9 +73,8 @@ class ObuRsuTestTriggerReceiver : BroadcastReceiver() {
//弱势交通参与者碰撞预警,行人/摩托车碰撞预警
ObuConstants.USE_CASE_ID.VRUCW -> {
val cvxPtcIndInfo = CvxPtcInfoIndInfo(1,1,1)
val position = Position(0, 399739429, 1164115207, 20)
val movingObjectInfo = MovingObjectInfo(0, position, 1800, 6000)
val position = Position(1, 399739429, 1164115207, 20)
val movingObjectInfo = MovingObjectInfo(1, position, 1800, 6000)
cvxPtcIndInfo.basic_info = movingObjectInfo
cvxPtcIndInfo.id = "111"
cvxPtcIndInfo.ptc_type = pctType
@@ -96,6 +95,8 @@ class ObuRsuTestTriggerReceiver : BroadcastReceiver() {
MogoPrivateObuManager.INSTANCE.getMogoObuListener().onCvxRtiThreatIndInfo(cvxRtiThreatIndInfo)
}
}
}

View File

@@ -114,11 +114,9 @@ public class V2XObuEventScenario extends AbsV2XScenario<V2XObuEventEntity> imple
}
} else if (v2XMessageEntity.getContent().getType() == ObuConstant.TYPE_CROSS_COLLISION_WARNING && !isCrossWarning) {
AIAssist.getInstance(V2XServiceManager.getContext()).speakTTSVoice(URGENCY_CROING_WARN_TEXT);
Log.d("liyz", "jiao cha lu kou---->");
isCrossWarning = true;
} else if (v2XMessageEntity.getContent().getType() == ObuConstant.TYPE_URGENCY_COLLISION_WARNING && !isUrgenchyWarning) {
AIAssist.getInstance(V2XServiceManager.getContext()).speakTTSVoice(URGENCY_COLLISION_WARN_TEXT_ONE);
Log.d("liyz", " jin ji zhi dong---->");
isUrgenchyWarning = true;
}

View File

@@ -66,7 +66,6 @@ public class V2XObuEventWindow extends FrameLayout implements IV2XWindow<V2XObuE
@Override
public void show(V2XObuEventEntity entity) {
Logger.d(MODULE_NAME, "ObuEventWindow show " + entity);
Logger.d("liyz", "ObuEventWindow show " + entity);
switch (entity.getType()) {
case ObuConstant
.TYPE_OPTIMAL_SPEED_ADVISORY: