From 77d08e2132a684e0ccf7f962ce374e380d071334 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Mon, 9 Aug 2021 19:42:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86OBU=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/mogo-module-common/build.gradle | 2 + .../module/common/enum/WarningTypeEnum.kt | 240 ++++++++++++++++- .../mogo/module/common/utils/WarningUtils.kt | 156 ----------- .../mogo/module/hmi/ui/MoGoWarningFragment.kt | 11 +- .../module/obu/mogo/MogoPrivateObuManager.kt | 242 +++++++++--------- 5 files changed, 373 insertions(+), 278 deletions(-) delete mode 100644 modules/mogo-module-common/src/main/java/com/mogo/module/common/utils/WarningUtils.kt diff --git a/modules/mogo-module-common/build.gradle b/modules/mogo-module-common/build.gradle index 0064153088..1ca6db6bb2 100644 --- a/modules/mogo-module-common/build.gradle +++ b/modules/mogo-module-common/build.gradle @@ -51,6 +51,8 @@ dependencies { implementation rootProject.ext.dependencies.coroutinesandroid implementation rootProject.ext.dependencies.coroutinescore + implementation rootProject.ext.dependencies.mogoobu + api "com.mogo.libs:hook:1.0" if (Boolean.valueOf(RELEASE)) { api rootProject.ext.dependencies.mogomap diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/enum/WarningTypeEnum.kt b/modules/mogo-module-common/src/main/java/com/mogo/module/common/enum/WarningTypeEnum.kt index 643e3c9fe4..eca26a883b 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/enum/WarningTypeEnum.kt +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/enum/WarningTypeEnum.kt @@ -1,5 +1,8 @@ package com.mogo.module.common.enum +import com.mogo.module.common.R +import com.zhidao.support.obu.constants.ObuConstants + /** * author : donghongyu * e-mail : 1358506549@qq.com @@ -7,9 +10,242 @@ package com.mogo.module.common.enum * desc : 车机启动状态 * version: 1.0 */ -interface WarningTypeEnum { +enum class WarningTypeEnum( + var useCaseId: Int, + var desc: String, + var warningContent: String, + var warningTts: String, + var warningIconId: Int +) { + + + TYPE_USECASE_ID_EBW( + ObuConstants.USE_CASE_ID.EBW, + "紧急制动预警", + "前车急刹车", + "前车急刹车", + R.drawable.icon_warning_v2x_emergency_brake + ), + TYPE_USECASE_ID_FCW( + ObuConstants.USE_CASE_ID.FCW, + "前向碰撞预警", + "前车碰撞预警", + "前车碰撞预警", + R.drawable.icon_warning_v2x_collision_warning + ), + TYPE_USECASE_ID_ICW( + ObuConstants.USE_CASE_ID.ICW, + "交叉路口碰撞预警", + "交叉路口碰撞预警", + "注意交叉路口车辆", + R.drawable.icon_warning_v2x_collision_warning + ), + TYPE_USECASE_ID_CLW( + ObuConstants.USE_CASE_ID.CLW, + "车辆失控预警", + "前车失控预警", + "前车失控预警", + R.drawable.icon_warning_v2x_vehicle_control + ), + TYPE_USECASE_ID_DNPW( + ObuConstants.USE_CASE_ID.DNPW, + "逆向超车预警", + "逆向超车预警", + "注意逆向车道车辆", + R.drawable.icon_warning_v2x_blind_area_collision + ), + TYPE_USECASE_ID_AVW( + ObuConstants.USE_CASE_ID.AVW, + "异常车辆提醒", + "前车异常", + "前车异常", + R.drawable.icon_warning_v2x_abnormal_vehicle + ), + TYPE_USECASE_ID_BSW( + ObuConstants.USE_CASE_ID.BSW, + "盲区预警", + "盲区碰撞预警", + "", + R.drawable.icon_warning_v2x_blind_area_collision + ), + TYPE_USECASE_ID_LCW( + ObuConstants.USE_CASE_ID.LCW, + "变道预警", + "盲区碰撞预警", + "注意%s后车辆", + R.drawable.icon_warning_v2x_blind_area_collision + ),//注意左后车辆/注意右后车辆 + TYPE_USECASE_ID_EVW( + ObuConstants.USE_CASE_ID.EVW, + "紧急车辆提醒", + "请避让特种车辆", + "后方存在特殊车辆,请安排避让", + R.drawable.icon_warning_v2x_special_vehicle_access + ), + TYPE_USECASE_ID_VRUCW( + ObuConstants.USE_CASE_ID.VRUCW, + "弱势交通参与者碰撞预警", + "%s碰撞预警", + "%s碰撞预警", + R.drawable.icon_warning_v2x_pedestrian_crossing + ),//行人/摩托车碰撞预警 + TYPE_USECASE_ID_SLW( + ObuConstants.USE_CASE_ID.SLW, + "限速预警", + "已超速", + "已超速", + R.drawable.icon_warning_v2x_over_speed + ), + TYPE_USECASE_ID_LTA( + ObuConstants.USE_CASE_ID.LTA, + "左转辅助", + "左转碰撞预警", + "注意左前车辆", + R.drawable.icon_warning_v2x_collision_warning + ), + TYPE_USECASE_ID_HLW( + ObuConstants.USE_CASE_ID.HLW, + "道路危险情况预警", + "道路危险情况预警", + "前方路况危险", + R.drawable.icon_warning_v2x_road_dangerous + ),//(如果能给出具体的类别,则播报具体危险类别) + TYPE_USECASE_ID_IVS( + ObuConstants.USE_CASE_ID.IVS, + "车内标牌", + "前方施工", + "前方施工", + R.drawable.icon_warning_v2x_road_construction + ), + TYPE_USECASE_ID_TJW( + ObuConstants.USE_CASE_ID.TJW, + "前方拥堵提醒", + "前方道路拥堵", + "前方%d米道路拥堵,请减速慢行", + R.drawable.icon_warning_v2x_congestion + ), + TYPE_USECASE_ID_IVP( + ObuConstants.USE_CASE_ID.IVP, + "闯红灯预警", + "路口红灯,禁止通行", + "路口红灯,禁止通行", + R.drawable.icon_warning_v2x_traffic_lights_red + ), + TYPE_USECASE_ID_COC( + ObuConstants.USE_CASE_ID.COC, + "预留", + "路况预警", + "路况预警", + R.drawable.icon_warning_v2x_abnormal_vehicle + ), + TYPE_ERROR( + ObuConstants.USE_CASE_ID.ERROR, + "未知/错误/异常", + "", + "", + R.drawable.icon_warning_v2x_abnormal_vehicle + ); + companion object { + fun getWarningType(useCaseId: Int): WarningTypeEnum { + return when (useCaseId) { + ObuConstants.USE_CASE_ID.EBW -> TYPE_USECASE_ID_EBW + ObuConstants.USE_CASE_ID.FCW -> TYPE_USECASE_ID_FCW + ObuConstants.USE_CASE_ID.ICW -> TYPE_USECASE_ID_ICW + ObuConstants.USE_CASE_ID.CLW -> TYPE_USECASE_ID_CLW + ObuConstants.USE_CASE_ID.DNPW -> TYPE_USECASE_ID_DNPW + ObuConstants.USE_CASE_ID.AVW -> TYPE_USECASE_ID_AVW + ObuConstants.USE_CASE_ID.BSW -> TYPE_USECASE_ID_BSW + ObuConstants.USE_CASE_ID.LCW -> TYPE_USECASE_ID_LCW + ObuConstants.USE_CASE_ID.EVW -> TYPE_USECASE_ID_EVW + ObuConstants.USE_CASE_ID.VRUCW -> TYPE_USECASE_ID_VRUCW + ObuConstants.USE_CASE_ID.SLW -> TYPE_USECASE_ID_SLW + ObuConstants.USE_CASE_ID.LTA -> TYPE_USECASE_ID_LTA + ObuConstants.USE_CASE_ID.HLW -> TYPE_USECASE_ID_HLW + ObuConstants.USE_CASE_ID.IVS -> TYPE_USECASE_ID_IVS + ObuConstants.USE_CASE_ID.TJW -> TYPE_USECASE_ID_TJW + ObuConstants.USE_CASE_ID.IVP -> TYPE_USECASE_ID_IVP + ObuConstants.USE_CASE_ID.COC -> TYPE_USECASE_ID_COC + ObuConstants.USE_CASE_ID.ERROR -> TYPE_ERROR + else -> TYPE_USECASE_ID_AVW + } + } + + + fun getWarningIcon(useCaseId: Int): Int { + return when (useCaseId) { + ObuConstants.USE_CASE_ID.EBW -> TYPE_USECASE_ID_EBW.warningIconId + ObuConstants.USE_CASE_ID.FCW -> TYPE_USECASE_ID_FCW.warningIconId + ObuConstants.USE_CASE_ID.ICW -> TYPE_USECASE_ID_ICW.warningIconId + ObuConstants.USE_CASE_ID.CLW -> TYPE_USECASE_ID_CLW.warningIconId + ObuConstants.USE_CASE_ID.DNPW -> TYPE_USECASE_ID_DNPW.warningIconId + ObuConstants.USE_CASE_ID.AVW -> TYPE_USECASE_ID_AVW.warningIconId + ObuConstants.USE_CASE_ID.BSW -> TYPE_USECASE_ID_BSW.warningIconId + ObuConstants.USE_CASE_ID.LCW -> TYPE_USECASE_ID_LCW.warningIconId + ObuConstants.USE_CASE_ID.EVW -> TYPE_USECASE_ID_EVW.warningIconId + ObuConstants.USE_CASE_ID.VRUCW -> TYPE_USECASE_ID_VRUCW.warningIconId + ObuConstants.USE_CASE_ID.SLW -> TYPE_USECASE_ID_SLW.warningIconId + ObuConstants.USE_CASE_ID.LTA -> TYPE_USECASE_ID_LTA.warningIconId + ObuConstants.USE_CASE_ID.HLW -> TYPE_USECASE_ID_HLW.warningIconId + ObuConstants.USE_CASE_ID.IVS -> TYPE_USECASE_ID_IVS.warningIconId + ObuConstants.USE_CASE_ID.TJW -> TYPE_USECASE_ID_TJW.warningIconId + ObuConstants.USE_CASE_ID.IVP -> TYPE_USECASE_ID_IVP.warningIconId + ObuConstants.USE_CASE_ID.COC -> TYPE_USECASE_ID_COC.warningIconId + ObuConstants.USE_CASE_ID.ERROR -> TYPE_ERROR.warningIconId + else -> TYPE_USECASE_ID_AVW.warningIconId + } + } + + fun getWarningContent(useCaseId: Int): String { + return when (useCaseId) { + ObuConstants.USE_CASE_ID.EBW -> TYPE_USECASE_ID_EBW.warningContent + ObuConstants.USE_CASE_ID.FCW -> TYPE_USECASE_ID_FCW.warningContent + ObuConstants.USE_CASE_ID.ICW -> TYPE_USECASE_ID_ICW.warningContent + ObuConstants.USE_CASE_ID.CLW -> TYPE_USECASE_ID_CLW.warningContent + ObuConstants.USE_CASE_ID.DNPW -> TYPE_USECASE_ID_DNPW.warningContent + ObuConstants.USE_CASE_ID.AVW -> TYPE_USECASE_ID_AVW.warningContent + ObuConstants.USE_CASE_ID.BSW -> TYPE_USECASE_ID_BSW.warningContent + ObuConstants.USE_CASE_ID.LCW -> TYPE_USECASE_ID_LCW.warningContent + ObuConstants.USE_CASE_ID.EVW -> TYPE_USECASE_ID_EVW.warningContent + ObuConstants.USE_CASE_ID.VRUCW -> TYPE_USECASE_ID_VRUCW.warningContent + ObuConstants.USE_CASE_ID.SLW -> TYPE_USECASE_ID_SLW.warningContent + ObuConstants.USE_CASE_ID.LTA -> TYPE_USECASE_ID_LTA.warningContent + ObuConstants.USE_CASE_ID.HLW -> TYPE_USECASE_ID_HLW.warningContent + ObuConstants.USE_CASE_ID.IVS -> TYPE_USECASE_ID_IVS.warningContent + ObuConstants.USE_CASE_ID.TJW -> TYPE_USECASE_ID_TJW.warningContent + ObuConstants.USE_CASE_ID.IVP -> TYPE_USECASE_ID_IVP.warningContent + ObuConstants.USE_CASE_ID.COC -> TYPE_USECASE_ID_COC.warningContent + ObuConstants.USE_CASE_ID.ERROR -> TYPE_ERROR.warningContent + else -> TYPE_USECASE_ID_AVW.warningContent + } + } + + fun getWarningTts(useCaseId: Int): String { + return when (useCaseId) { + ObuConstants.USE_CASE_ID.EBW -> TYPE_USECASE_ID_EBW.warningTts + ObuConstants.USE_CASE_ID.FCW -> TYPE_USECASE_ID_FCW.warningTts + ObuConstants.USE_CASE_ID.ICW -> TYPE_USECASE_ID_ICW.warningTts + ObuConstants.USE_CASE_ID.CLW -> TYPE_USECASE_ID_CLW.warningTts + ObuConstants.USE_CASE_ID.DNPW -> TYPE_USECASE_ID_DNPW.warningTts + ObuConstants.USE_CASE_ID.AVW -> TYPE_USECASE_ID_AVW.warningTts + ObuConstants.USE_CASE_ID.BSW -> TYPE_USECASE_ID_BSW.warningTts + ObuConstants.USE_CASE_ID.LCW -> TYPE_USECASE_ID_LCW.warningTts + ObuConstants.USE_CASE_ID.EVW -> TYPE_USECASE_ID_EVW.warningTts + ObuConstants.USE_CASE_ID.VRUCW -> TYPE_USECASE_ID_VRUCW.warningTts + ObuConstants.USE_CASE_ID.SLW -> TYPE_USECASE_ID_SLW.warningTts + ObuConstants.USE_CASE_ID.LTA -> TYPE_USECASE_ID_LTA.warningTts + ObuConstants.USE_CASE_ID.HLW -> TYPE_USECASE_ID_HLW.warningTts + ObuConstants.USE_CASE_ID.IVS -> TYPE_USECASE_ID_IVS.warningTts + ObuConstants.USE_CASE_ID.TJW -> TYPE_USECASE_ID_TJW.warningTts + ObuConstants.USE_CASE_ID.IVP -> TYPE_USECASE_ID_IVP.warningTts + ObuConstants.USE_CASE_ID.COC -> TYPE_USECASE_ID_COC.warningTts + ObuConstants.USE_CASE_ID.ERROR -> TYPE_ERROR.warningTts + else -> TYPE_USECASE_ID_AVW.warningTts + } + } + + const val WARNING_PRIOR_COLLISION = 20001//前向碰撞 const val WARNING_INTERSECTION_COLLISION = 20002//交叉路口碰撞 const val WARNING_LEFT_AUXILIARY = 20003//左转辅助 @@ -37,6 +273,6 @@ interface WarningTypeEnum { const val WARNING_ACCIDENT_PRONE_ROAD_SECTION = 20025//事故易发路段 const val WARNING_HUMP_BRIDGE = 20026//驼峰桥 const val WARNING_SCHOOL = 20027// 学校 - } + } \ No newline at end of file diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/utils/WarningUtils.kt b/modules/mogo-module-common/src/main/java/com/mogo/module/common/utils/WarningUtils.kt deleted file mode 100644 index 3433f6ed79..0000000000 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/utils/WarningUtils.kt +++ /dev/null @@ -1,156 +0,0 @@ -package com.mogo.module.common.utils - -import com.mogo.module.common.enum.WarningTypeEnum -import com.mogo.module.common.R - -/** - * @author xiaoyuzhoukeyi - * @date 2021/8/6 11:04 上午 - */ -object WarningUtils { - fun getWarningIcon(v2xType: Int): Array { - var warningIconId = R.drawable.icon_warning_v2x_abnormal_vehicle - var warningContent = "注意周边环境" - var warningTts = "注意周边环境" - - when (v2xType) { - WarningTypeEnum.WARNING_PRIOR_COLLISION -> { - warningIconId = R.drawable.icon_warning_v2x_collision_warning - warningContent = "前车碰撞预警" - warningTts = "前车碰撞预警" - }//前向碰撞 - WarningTypeEnum.WARNING_INTERSECTION_COLLISION -> { - warningIconId = R.drawable.icon_warning_v2x_collision_warning - warningContent = "注意交叉路口车辆" - warningTts = "注意交叉路口车辆" - }//交叉路口碰撞 - WarningTypeEnum.WARNING_LEFT_AUXILIARY -> { - warningIconId = R.drawable.icon_warning_v2x_collision_warning - warningContent = "注意左前车辆" - warningTts = "注意左前车辆" - }//左转辅助 - WarningTypeEnum.WARNING_BLIND_AREA_COLLISION -> { - warningIconId = R.drawable.icon_warning_v2x_blind_area_collision - warningContent = "注意后方来车" - warningTts = "注意后方来车" - }//盲区/变道辅助 - WarningTypeEnum.WARNING_REVERSE_OVERTAKING -> { - warningIconId = R.drawable.icon_warning_v2x_blind_area_collision - warningContent = "注意逆向车道车辆" - warningTts = "注意逆向车道车辆" - }//逆向超车 - WarningTypeEnum.WARNING_VEHICLE_BRAKES -> { - warningIconId = R.drawable.icon_warning_v2x_emergency_brake - warningContent = "前车急刹车" - warningTts = "前车急刹车" - }//紧急制动-前车急刹 - WarningTypeEnum.WARNING_ABNORMAL_VEHICLE -> { - warningIconId = R.drawable.icon_warning_v2x_abnormal_vehicle - warningContent = "前车异常" - warningTts = "前车异常" - }//异常车辆提醒 - WarningTypeEnum.WARNING_VEHICLE_CONTROL -> { - warningIconId = R.drawable.icon_warning_v2x_vehicle_control - warningContent = "前车失控预警" - warningTts = "前车失控预警" - }//车辆失控预警 - WarningTypeEnum.WARNING_SPECIAL_VEHICLE_ACCESS -> { - warningIconId = R.drawable.icon_warning_v2x_special_vehicle_access - warningContent = "请避让特种车辆" - warningTts = "后方存在特殊车辆,请安排避让" - }//特种车辆通行 - WarningTypeEnum.WARNING_SPEED_LIMIT -> { - warningIconId = R.drawable.icon_warning_v2x_over_speed - warningContent = "减速慢行" - warningTts = "请减速慢行" - }// 限速预警 - WarningTypeEnum.WARNING_RED_LIGHT -> { - warningIconId = R.drawable.icon_warning_v2x_traffic_lights_red - warningContent = "路口红灯,禁止通行" - warningTts = "路口红灯,禁止通行" - }//闯红灯预警 - WarningTypeEnum.WARNING_VULNERABLE_TRANSPORT_PARTICIPANT -> { - warningIconId = R.drawable.icon_warning_v2x_pedestrian_crossing - warningContent = "行人碰撞预警" - warningTts = "行人碰撞预警" - }//弱势交通参与者碰撞预警 - WarningTypeEnum.WARNING_TRAFFIC_SPEED_GUIDE -> { - warningIconId = R.drawable.icon_warning_v2x_traffic_lights_green - warningContent = "绿波通行" - warningTts = "绿波通行" - }//绿波通行车速引导 - WarningTypeEnum.WARNING_CAR_PLATE -> { - warningIconId = R.drawable.icon_warning_v2x_road_construction - warningContent = "前方施工" - warningTts = "前方施工" - }//车内标牌 - WarningTypeEnum.warning_congestion -> { - warningIconId = R.drawable.icon_warning_v2x_congestion - warningContent = "前方道路拥堵" - warningTts = "前方道路拥堵" - }//前方道路拥堵 - WarningTypeEnum.WARNING_OVER_SPEED -> { - warningIconId = R.drawable.icon_warning_v2x_over_speed - warningContent = "您已超速" - warningTts = "您已超速" - }//超速预警 - WarningTypeEnum.WARNING_ROAD_HAZARDS -> { - warningIconId = R.drawable.icon_warning_v2x_road_dangerous - warningContent = "道路危险情况预警" - warningTts = "道路危险情况预警" - }//道路危险情况预警 - WarningTypeEnum.WARNING_ROUNDABOUT -> { - warningIconId = R.drawable.icon_warning_v2x_roundaboutpng - warningContent = "前方驶入环岛" - warningTts = "前方驶入环岛" - }//环岛 - WarningTypeEnum.WARNING_GIVE_WAY -> { - warningIconId = R.drawable.icon_warning_v2x_over_speed - warningContent = "有车出入,减速慢行" - warningTts = "有车出入,减速慢行" - }//减速让行 - WarningTypeEnum.WARNING_BAN_ASTERN -> { - warningIconId = R.drawable.icon_warning_v2x_ban_astern - warningContent = "当前路段禁止停车" - warningTts = "当前路段禁止停车" - }//禁止停车 - WarningTypeEnum.WARNING_TURN_LEFT_SHARP -> { - warningIconId = R.drawable.icon_warning_v2x_turn_left_sharp - warningContent = "前方左转急弯" - warningTts = "前方路口左转急弯,请减速慢行" - }//左转急弯 - WarningTypeEnum.WARNING_TURN_RIGHT_SHARP -> { - warningIconId = R.drawable.icon_warning_v2x_turn_right_sharp - warningContent = "前方右转急弯" - warningTts = "前方路口右转急弯,请减速慢行" - }//右转急弯 - WarningTypeEnum.WARNING_TRAMCAR -> { - warningIconId = R.drawable.icon_warning_v2x_tramcar - warningContent = "前方有轨电车提醒" - warningTts = "前方有轨电车经过,请注意行驶安全" - }//有轨电车 - WarningTypeEnum.WARNING_TEST_SECTION -> { - warningIconId = R.drawable.icon_warning_v2x_test_section - warningContent = "前方考试路段" - warningTts = "前方考试路段,减速慢行" - }//考试路段 - WarningTypeEnum.WARNING_ACCIDENT_PRONE_ROAD_SECTION -> { - warningIconId = R.drawable.icon_warning_v2x_accident_prone_road_section - warningContent = "当前路段事故多发" - warningTts = "当前路段事故多发,请谨慎行驶" - }//事故易发路段 - WarningTypeEnum.WARNING_HUMP_BRIDGE -> { - warningIconId = R.drawable.icon_warning_v2x_hump_bridge - warningContent = "前方驼峰桥" - warningTts = "即将驶入桥梁,请减速慢行" - }//驼峰桥 - WarningTypeEnum.WARNING_SCHOOL -> { - warningIconId = R.drawable.icon_warning_v2x_school - warningContent = "前方学校,减速慢行" - warningTts = "前方人行横道,请减速慢" - }// 学校 - } - - return arrayOf(warningIconId, warningContent, warningTts) - } -} \ No newline at end of file diff --git a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/ui/MoGoWarningFragment.kt b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/ui/MoGoWarningFragment.kt index a02f4c2f78..e9dc572f86 100644 --- a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/ui/MoGoWarningFragment.kt +++ b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/ui/MoGoWarningFragment.kt @@ -8,12 +8,12 @@ import android.view.WindowManager import android.view.animation.OvershootInterpolator import com.mogo.commons.mvp.MvpFragment import com.mogo.commons.voice.AIAssist +import com.mogo.module.common.enum.WarningTypeEnum import com.mogo.module.hmi.R import com.mogo.module.hmi.notification.WarningFloat import com.mogo.module.hmi.notification.anim.DefaultAnimator import com.mogo.module.hmi.notification.enums.SidePattern import com.mogo.module.hmi.ui.widget.ViewV2XNotification -import com.mogo.module.common.utils.WarningUtils import kotlinx.android.synthetic.main.fragment_warning.* /** @@ -46,15 +46,18 @@ class MoGoWarningFragment : MvpFragment $info") @@ -123,21 +130,29 @@ class MogoPrivateObuManager private constructor() { //显示警告弹框 mMogoServiceApis!!.v2XListenerManager.warningChangedForListenerWithDirection( - getMessage(direction), - "ACTION_V2X_FRONT_WARNING" + getMessageDirection(direction), + "ACTION_V2X_FRONT_WARNING" ) //处理预警类型 val appId = info.threat_info.app_id - Logger.d(MogoObuConst.TAG_MOGO_OBU, "direction = " + direction + "----" + getMessage(direction) + "--appId = " + appId) - handleSdkObu(getEventType(appId), info.threat_info.threat_level, getMessage(direction), info.status) + Logger.d( + MogoObuConst.TAG_MOGO_OBU, + "direction = " + direction + "----" + getMessageDirection(direction) + "--appId = " + appId + ) + handleSdkObu( + appId, + info.threat_info.threat_level, + getMessageDirection(direction), + info.status + ) } //更新周边车辆进行预警颜色变换,车辆实时移动和变色 mObuRecognizedResultDrawer?.updateCvxRvInfoIndInfo( - info.threat_info.threat_level, - info.vehicle_id, - info.basic_info + info.threat_info.threat_level, + info.vehicle_id, + info.basic_info ) } else { Logger.e(MogoObuConst.TAG_MOGO_OBU, "info == null ") @@ -146,7 +161,10 @@ class MogoPrivateObuManager private constructor() { } - private fun getMessage(targetClassification: Int): Int { + /** + * 获取消息的方位 + */ + private fun getMessageDirection(targetClassification: Int): Int { return when (targetClassification) { 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 -> 1 //左前方 @@ -161,42 +179,6 @@ class MogoPrivateObuManager private constructor() { } } - private fun getEventType(appid: Int): Int { - if (appid == ObuConstants.USE_CASE_ID.EBW) { //紧急制动 - return MogoObuConst.TYPE_URGENCY_COLLISION_WARNING - } else if (appid == ObuConstants.USE_CASE_ID.ICW) { //交叉路口碰撞预警 - return MogoObuConst.TYPE_CROSS_COLLISION_WARNING - } else if (appid == ObuConstants.USE_CASE_ID.LTA) { //左转辅助 - return MogoObuConst.TYPE_TURN_LEFT_WARN - } else if (appid == ObuConstants.USE_CASE_ID.BSW || appid == ObuConstants.USE_CASE_ID.LCW) { //盲区预警和变道预警 - return MogoObuConst.TYPE_BLIND_ASSIST_WARN - } else if (appid == ObuConstants.USE_CASE_ID.DNPW) { //逆向超车预警 - return MogoObuConst.TYPE_REVERSE_OVERTAKING_WARN - } else if (appid == ObuConstants.USE_CASE_ID.FCW) { //前向碰撞预警 - return MogoObuConst.TYPE_FRONT_COLLISION_WARNING - } else if (appid == ObuConstants.USE_CASE_ID.AVW) { //异常车辆预警 - return MogoObuConst.TYPE_UNUSUAL_CAR_WARN - } else if (appid == ObuConstants.USE_CASE_ID.CLW) { //车辆失控预警 - return MogoObuConst.TYPE_CAR_OUT_OF_CONTROL_WARN - } else if (appid == ObuConstants.USE_CASE_ID.SLW) { //限速预警 - return MogoObuConst.TYPE_LIMIT_SPEED_WARN - } else if (appid == ObuConstants.USE_CASE_ID.LTA) { //闯红灯预警 --- - return MogoObuConst.TYPE_RUSH_RED_LIGHT - } else if (appid == ObuConstants.USE_CASE_ID.VRUCW) { //行人碰撞预警 --- - return MogoObuConst.TYPE_ROAD_USER_COLLISION_WARNING - } else if (appid == ObuConstants.USE_CASE_ID.LTA) { //绿波车速引导 --- - return MogoObuConst.TYPE_OPTIMAL_SPEED_ADVISORY - } else if (appid == ObuConstants.USE_CASE_ID.HLW) { //道路危险情况预警 - return MogoObuConst.TYPE_UNUSUAL_ROAD_WARN - } else if (appid == ObuConstants.USE_CASE_ID.IVS) { //交通标牌提示 - return MogoObuConst.TYPE_TRAFFIC_SIGN_INFO - } else if (appid == ObuConstants.USE_CASE_ID.TJW) { //前方拥堵提醒 - return MogoObuConst.TYPE_BLOCK_WARN - } else if (appid == ObuConstants.USE_CASE_ID.EVW) { //紧急车辆提示预警 - return MogoObuConst.TYPE_PRESSING_CAR_WARN - } - return 0 - } fun release() { MogoObuManager.getInstance().unregisterListener() @@ -206,88 +188,116 @@ class MogoPrivateObuManager private constructor() { /** * 构造对应展示数据和场景 根据obu的场景,add change delete确定是否展示 * - * @param type TODO + * @param useCaseId TODO 这里需要修改成 使用WarningTypeEnum获取icon、提示内容、tts内容 + * + * @see com.mogo.module.common.enum.WarningTypeEnum */ - private fun handleSdkObu(type: Int, level: Int, directe: Int, status: Int) { - var alertContent: String = "" - var ttsContent: String = "" + private fun handleSdkObu(useCaseId: Int, level: Int, direction: Int, status: Int) { + var alertContent = "" + var ttsContent = "" - if (type == MogoObuConst.TYPE_CROSS_COLLISION_WARNING) { //交叉路口碰撞预警 - alertContent = MogoObuConst.TYPE_CROSS_COLLISION_WARNING_TEXT - ttsContent = MogoObuConst.TYPE_CROSS_COLLISION_WARNING_VOICE_TEXT - } else if (type == MogoObuConst.TYPE_URGENCY_COLLISION_WARNING) { // 前车紧急制动预警 - alertContent = MogoObuConst.TYPE_URGENCY_COLLISION_WARNING_TEXT - ttsContent = MogoObuConst.TYPE_URGENCY_COLLISION_WARNING_VOICE_TEXT - } else if (type == MogoObuConst.TYPE_FRONT_COLLISION_WARNING) { //前车碰撞预警 - alertContent = MogoObuConst.TYPE_FRONT_COLLISION_WARNING_TEXT - ttsContent = MogoObuConst.TYPE_FRONT_COLLISION_WARNING_VOICE_TEXT - } else if (type == MogoObuConst.TYPE_TURN_LEFT_WARN) { //左转辅助 - alertContent = MogoObuConst.TYPE_TURN_LEFT_WARN_TEXT - ttsContent = MogoObuConst.TYPE_TURN_LEFT_WARN_VOICE_TEXT - } else if (type == MogoObuConst.TYPE_BLIND_ASSIST_WARN) { //盲区预警/变道预警 - alertContent = MogoObuConst.TYPE_BLIND_ASSIST_WARN_TEXT - if (directe == 2) { - ttsContent = MogoObuConst.TYPE_BLIND_ASSIST_WARN_VOICE_LEFT_TEXT - } else if (directe == 4) { - ttsContent = MogoObuConst.TYPE_BLIND_ASSIST_WARN_VOICE_RIGHT_TEXT + // TODO 这里排除需要特殊定制的语音及文案外,其余的都可以使用 WarningTypeEnum 提供的 + when (useCaseId) { + // 变道预警,注意左后车辆/注意右后车辆 + WarningTypeEnum.TYPE_USECASE_ID_LCW.useCaseId -> { + ttsContent = WarningTypeEnum.getWarningTts(useCaseId) + if (direction == 2) { + ttsContent = String.format(ttsContent, "左") + } else if (direction == 4) else { + ttsContent = String.format(ttsContent, "右") + } } - } else if (type == MogoObuConst.TYPE_REVERSE_OVERTAKING_WARN) { //逆向超车预警 - alertContent = MogoObuConst.TYPE_REVERSE_OVERTAKING_WARN_TEXT - ttsContent = MogoObuConst.TYPE_REVERSE_OVERTAKING_WARN_VOICE_TEXT - } else if (type == MogoObuConst.TYPE_UNUSUAL_CAR_WARN) { //异常车辆预警 - alertContent = MogoObuConst.TYPE_UNUSUAL_CAR_WARN_TEXT - if (directe == 1) { - ttsContent = MogoObuConst.TYPE_UNUSUAL_CAR_WARN_VOICE_LEFT_TEXT - } else if (directe == 3) { - ttsContent = MogoObuConst.TYPE_UNUSUAL_CAR_WARN_VOICE_RIGHT_TEXT - } else if (directe == 5) { - ttsContent = MogoObuConst.TYPE_UNUSUAL_CAR_WARN_VOICE_TEXT - } - } else if (type == MogoObuConst.TYPE_CAR_OUT_OF_CONTROL_WARN) { //前车失控预警 - alertContent = MogoObuConst.TYPE_CAR_OUT_OF_CONTROL_WARN_TEXT - if (directe == 1) { - ttsContent = MogoObuConst.TYPE_CAR_OUT_OF_CONTROL_WARN_VOICE_LEFT_TEXT - } else if (directe == 3) { - ttsContent = MogoObuConst.TYPE_CAR_OUT_OF_CONTROL_WARN_VOICE_RIGHT_TEXT - } else if (directe == 5) { - ttsContent = MogoObuConst.TYPE_CAR_OUT_OF_CONTROL_WARN_VOICE_TEXT - } - } else if (type == MogoObuConst.TYPE_LIMIT_SPEED_WARN) { //限速预警 - alertContent = MogoObuConst.TYPE_LIMIT_SPEED_WARN_TEXT - ttsContent = MogoObuConst.TYPE_LIMIT_SPEED_WARN_VOICE_TEXT - } else if (type == MogoObuConst.TYPE_UNUSUAL_ROAD_WARN) { //道路危险情况预警 - alertContent = MogoObuConst.TYPE_UNUSUAL_ROAD_WARN_TEXT - ttsContent = MogoObuConst.TYPE_UNUSUAL_ROAD_WARN_VOICE_TEXT - } else if (type == MogoObuConst.TYPE_BLOCK_WARN) { //前方拥堵提醒 TODO - alertContent = MogoObuConst.TYPE_BLOCK_WARN_TEXT - ttsContent = MogoObuConst.TYPE_BLOCK_WARN_VOICE_TEXT - } else if (type == MogoObuConst.TYPE_PRESSING_CAR_WARN) { //紧急车辆预警 - alertContent = MogoObuConst.TYPE_PRESSING_CAR_WARN_TEXT - ttsContent = MogoObuConst.TYPE_PRESSING_CAR_WARN_VOICE_TEXT - } else if (type == MogoObuConst.TYPE_TRAFFIC_SIGN_INFO) { //交通标牌 TODO + // 弱势交通参与者碰撞预警,行人/摩托车碰撞预警 TODO + WarningTypeEnum.TYPE_USECASE_ID_VRUCW.useCaseId -> { - } else if (type == MogoObuConst.TYPE_ROAD_USER_COLLISION_WARNING) { //弱势交通群体 TODO + } + // 前方拥堵提醒,前方XXX米道路拥堵,请减速慢行 TODO + WarningTypeEnum.TYPE_USECASE_ID_TJW.useCaseId -> { - } else if (type == MogoObuConst.TYPE_OPTIMAL_SPEED_ADVISORY) { //绿波车速引导 TODO - alertContent = "" - ttsContent = "" - } else if (type == MogoObuConst.TYPE_RUSH_RED_LIGHT) { //闯红灯预警 TODO - alertContent = MogoObuConst.TYPE_RUSH_RED_LIGHT_TEXT - ttsContent = MogoObuConst.TYPE_RUSH_RED_LIGHT_VOICE_TEXT + } + // 这里处理固定的提示信息 + else -> { + ttsContent = WarningTypeEnum.getWarningTts(useCaseId) + } } //显示弹框,语音提示 - if (status == 1) { + if (status == ObuConstants.STATUS.ADD) { mIMoGoWaringProvider!!.showWarningV2X( - type, - alertContent, - if (level == 3) ttsContent else "", - type.toString() + useCaseId, + alertContent, + if (level == 3) ttsContent else "", + useCaseId.toString() ) - } else if (status == 2) { - mIMoGoWaringProvider!!.disableWarningV2X(type.toString()) + } else if (status == ObuConstants.STATUS.DELETE) { + mIMoGoWaringProvider!!.disableWarningV2X(useCaseId.toString()) } + +// if (type == WarningTypeEnum.TYPE_USECASE_ID_ICW.useCaseId) { //交叉路口碰撞预警 +// alertContent = MogoObuConst.TYPE_CROSS_COLLISION_WARNING_TEXT +// ttsContent = MogoObuConst.TYPE_CROSS_COLLISION_WARNING_VOICE_TEXT +// } else if (type == MogoObuConst.TYPE_URGENCY_COLLISION_WARNING) { // 前车紧急制动预警 +// alertContent = MogoObuConst.TYPE_URGENCY_COLLISION_WARNING_TEXT +// ttsContent = MogoObuConst.TYPE_URGENCY_COLLISION_WARNING_VOICE_TEXT +// } else if (type == MogoObuConst.TYPE_FRONT_COLLISION_WARNING) { //前车碰撞预警 +// alertContent = MogoObuConst.TYPE_FRONT_COLLISION_WARNING_TEXT +// ttsContent = MogoObuConst.TYPE_FRONT_COLLISION_WARNING_VOICE_TEXT +// } else if (type == MogoObuConst.TYPE_TURN_LEFT_WARN) { //左转辅助 +// alertContent = MogoObuConst.TYPE_TURN_LEFT_WARN_TEXT +// ttsContent = MogoObuConst.TYPE_TURN_LEFT_WARN_VOICE_TEXT +// } else if (type == MogoObuConst.TYPE_BLIND_ASSIST_WARN) { //盲区预警/变道预警 +// alertContent = MogoObuConst.TYPE_BLIND_ASSIST_WARN_TEXT +// if (directe == 2) { +// ttsContent = MogoObuConst.TYPE_BLIND_ASSIST_WARN_VOICE_LEFT_TEXT +// } else if (directe == 4) { +// ttsContent = MogoObuConst.TYPE_BLIND_ASSIST_WARN_VOICE_RIGHT_TEXT +// } +// } else if (type == MogoObuConst.TYPE_REVERSE_OVERTAKING_WARN) { //逆向超车预警 +// alertContent = MogoObuConst.TYPE_REVERSE_OVERTAKING_WARN_TEXT +// ttsContent = MogoObuConst.TYPE_REVERSE_OVERTAKING_WARN_VOICE_TEXT +// } else if (type == MogoObuConst.TYPE_UNUSUAL_CAR_WARN) { //异常车辆预警 +// alertContent = MogoObuConst.TYPE_UNUSUAL_CAR_WARN_TEXT +// if (directe == 1) { +// ttsContent = MogoObuConst.TYPE_UNUSUAL_CAR_WARN_VOICE_LEFT_TEXT +// } else if (directe == 3) { +// ttsContent = MogoObuConst.TYPE_UNUSUAL_CAR_WARN_VOICE_RIGHT_TEXT +// } else if (directe == 5) { +// ttsContent = MogoObuConst.TYPE_UNUSUAL_CAR_WARN_VOICE_TEXT +// } +// } else if (type == MogoObuConst.TYPE_CAR_OUT_OF_CONTROL_WARN) { //前车失控预警 +// alertContent = MogoObuConst.TYPE_CAR_OUT_OF_CONTROL_WARN_TEXT +// if (directe == 1) { +// ttsContent = MogoObuConst.TYPE_CAR_OUT_OF_CONTROL_WARN_VOICE_LEFT_TEXT +// } else if (directe == 3) { +// ttsContent = MogoObuConst.TYPE_CAR_OUT_OF_CONTROL_WARN_VOICE_RIGHT_TEXT +// } else if (directe == 5) { +// ttsContent = MogoObuConst.TYPE_CAR_OUT_OF_CONTROL_WARN_VOICE_TEXT +// } +// } else if (type == MogoObuConst.TYPE_LIMIT_SPEED_WARN) { //限速预警 +// alertContent = MogoObuConst.TYPE_LIMIT_SPEED_WARN_TEXT +// ttsContent = MogoObuConst.TYPE_LIMIT_SPEED_WARN_VOICE_TEXT +// } else if (type == MogoObuConst.TYPE_UNUSUAL_ROAD_WARN) { //道路危险情况预警 +// alertContent = MogoObuConst.TYPE_UNUSUAL_ROAD_WARN_TEXT +// ttsContent = MogoObuConst.TYPE_UNUSUAL_ROAD_WARN_VOICE_TEXT +// } else if (type == MogoObuConst.TYPE_BLOCK_WARN) { //前方拥堵提醒 TODO +// alertContent = MogoObuConst.TYPE_BLOCK_WARN_TEXT +// ttsContent = MogoObuConst.TYPE_BLOCK_WARN_VOICE_TEXT +// } else if (type == MogoObuConst.TYPE_PRESSING_CAR_WARN) { //紧急车辆预警 +// alertContent = MogoObuConst.TYPE_PRESSING_CAR_WARN_TEXT +// ttsContent = MogoObuConst.TYPE_PRESSING_CAR_WARN_VOICE_TEXT +// } else if (type == MogoObuConst.TYPE_TRAFFIC_SIGN_INFO) { //交通标牌 TODO +// +// } else if (type == MogoObuConst.TYPE_ROAD_USER_COLLISION_WARNING) { //弱势交通群体 TODO +// +// } else if (type == MogoObuConst.TYPE_OPTIMAL_SPEED_ADVISORY) { //绿波车速引导 TODO +// alertContent = "" +// ttsContent = "" +// } else if (type == MogoObuConst.TYPE_RUSH_RED_LIGHT) { //闯红灯预警 TODO +// alertContent = MogoObuConst.TYPE_RUSH_RED_LIGHT_TEXT +// ttsContent = MogoObuConst.TYPE_RUSH_RED_LIGHT_VOICE_TEXT +// } + } } \ No newline at end of file