From c2ab7087cb7b2dba8e1b92aa7e9cdb5eda7d1d40 Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Tue, 14 Sep 2021 11:13:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=90=8C=E4=B8=80=E4=B8=AAap?= =?UTF-8?q?pid=E4=B8=8B=E4=BD=86=E6=96=B9=E5=90=91=E4=B8=8D=E5=90=8C?= =?UTF-8?q?=E7=9A=84=E4=BA=8B=E4=BB=B6=E6=8F=90=E9=86=92tts=E6=92=AD?= =?UTF-8?q?=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/hmi/notification/WarningFloat.kt | 8 +- .../notification/WarningFloatWindowHelper.kt | 8 +- .../notification/WarningNotificationConfig.kt | 2 +- .../mogo/module/hmi/ui/MoGoWarningFragment.kt | 29 ++-- .../module/hmi/ui/widget/V2XWarningView.kt | 1 + .../module/obu/mogo/MogoPrivateObuManager.kt | 139 +++++++----------- .../warning/WarningStatusListener.java | 7 +- 7 files changed, 90 insertions(+), 104 deletions(-) diff --git a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/notification/WarningFloat.kt b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/notification/WarningFloat.kt index ffaf6c50bc..82e34be586 100644 --- a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/notification/WarningFloat.kt +++ b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/notification/WarningFloat.kt @@ -140,8 +140,12 @@ class WarningFloat { * 设置视图状态监听;show,dismiss * @param listener 设置视图状态监听 */ - fun setWarningStatusListener(listener: WarningStatusListener?) = - apply { config.listener = listener } + fun addWarningStatusListener(listener: WarningStatusListener?) = + apply { + if (listener != null) { + config.statusListenerMap.add(listener) + } + } /** * 创建浮窗,包括Activity浮窗和系统浮窗,如若系统浮窗无权限,先进行权限申请 diff --git a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/notification/WarningFloatWindowHelper.kt b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/notification/WarningFloatWindowHelper.kt index b5c6688b18..bb7574d376 100644 --- a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/notification/WarningFloatWindowHelper.kt +++ b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/notification/WarningFloatWindowHelper.kt @@ -119,7 +119,9 @@ internal class WarningFloatWindowHelper( * 入场动画 */ private fun enterAnim(floatingView: View) { - config.listener?.onShow() + config.statusListenerMap.forEach { listener -> + listener.onShow() + } if (frameLayout == null || config.isAnim) return enterAnimator = AnimatorManager(frameLayout!!, params, windowManager, config) .enterAnim()?.apply { @@ -158,7 +160,9 @@ internal class WarningFloatWindowHelper( * 退出动画 */ fun exitAnim() { - config.listener?.onDismiss() + config.statusListenerMap.forEach { listener -> + listener.onDismiss() + } if (frameLayout == null || (config.isAnim && enterAnimator == null)) return enterAnimator?.cancel() val animator: Animator? = diff --git a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/notification/WarningNotificationConfig.kt b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/notification/WarningNotificationConfig.kt index 757ef8293f..d19b42f2ff 100644 --- a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/notification/WarningNotificationConfig.kt +++ b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/notification/WarningNotificationConfig.kt @@ -54,7 +54,7 @@ data class WarningNotificationConfig( var floatAnimator: OnFloatAnimator? = DefaultAnimator(), // 设置视图状态监听;show,dismiss - var listener: WarningStatusListener? = null, + var statusListenerMap: ArrayList< WarningStatusListener> = ArrayList(), // Callbacks var callbacks: OnFloatCallbacks? = null, 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 2e06b480c8..bcbe995442 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 @@ -66,7 +66,7 @@ class MoGoWarningFragment : MvpFragment ttsContent = $ttsContent") + AIAssist.getInstance(activity) + .speakTTSVoice(ttsContent) + } + } + }) .setAnimator(object : DefaultAnimator() { override fun enterAnim( view: View, @@ -99,17 +113,6 @@ class MoGoWarningFragment : MvpFragment ttsContent = $ttsContent") - AIAssist.getInstance(activity) - .speakTTSVoice(ttsContent) - } - } } diff --git a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/ui/widget/V2XWarningView.kt b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/ui/widget/V2XWarningView.kt index 6e8b2b9125..9e188c178e 100644 --- a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/ui/widget/V2XWarningView.kt +++ b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/ui/widget/V2XWarningView.kt @@ -54,6 +54,7 @@ class V2XWarningView @JvmOverloads constructor( } when (direction) { WarningDirectionEnum.ALERT_WARNING_NON -> { + removeCallbacks(closeWarningTask) hmiWarningTopImg.visibility = View.GONE hmiWarningRightImg.visibility = View.GONE hmiWarningBottomImg.visibility = View.GONE diff --git a/modules/mogo-module-obu-mogo/src/main/java/com/mogo/module/obu/mogo/MogoPrivateObuManager.kt b/modules/mogo-module-obu-mogo/src/main/java/com/mogo/module/obu/mogo/MogoPrivateObuManager.kt index ce7008d41a..96fa9f6a4c 100644 --- a/modules/mogo-module-obu-mogo/src/main/java/com/mogo/module/obu/mogo/MogoPrivateObuManager.kt +++ b/modules/mogo-module-obu-mogo/src/main/java/com/mogo/module/obu/mogo/MogoPrivateObuManager.kt @@ -39,7 +39,6 @@ class MogoPrivateObuManager private constructor() { private var mIMoGoWaringProvider: IMoGoWaringProvider? = null private var mIMogoMapService: IMogoMapService? = null private var mContext: Context? = null - private var isStrikeTts = false fun init(context: Context?) { Logger.d(MogoObuConst.TAG_MOGO_OBU, "obuManager初始化--") @@ -250,39 +249,33 @@ class MogoPrivateObuManager private constructor() { ObuConstants.STATUS.UPDATE,// 更新 -> { if (level == 2 || level == 3) { - if (!isStrikeTts) { - //显示警告红边 - mIMoGoWaringProvider!!.showWarning(direction) - //显示弹框,语音提示 - mIMoGoWaringProvider!!.showWarningV2X( - appId.toInt(), - alertContent, - ttsContent, - appId, - object : WarningStatusListener { - override fun onShow() { - isStrikeTts = true - } - - override fun onDismiss() { - isStrikeTts = false - } + //显示警告红边 + mIMoGoWaringProvider!!.showWarning(direction) + //显示弹框,语音提示 + mIMoGoWaringProvider!!.showWarningV2X( + appId.toInt(), + alertContent, + ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 + (appId + direction.direction).toString(),//使用当前事件类型+方向记录tag,当发生变化的时候关闭当前弹出新的 + object : WarningStatusListener { + override fun onDismiss() { + // 关闭警告红边 + mIMoGoWaringProvider?.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) } - ) - // 更新数据 - TrafficDataConvertUtils.cvxRtiThreatIndInfo2TrafficData(info)?.let { - TrafficMarkerDrawer.updateITrafficThreatLevelInfo(it) } - } + ) + } + // 更新数据 + TrafficDataConvertUtils.cvxRtiThreatIndInfo2TrafficData(info)?.let { + TrafficMarkerDrawer.updateITrafficThreatLevelInfo(it) } } // 删除 ObuConstants.STATUS.DELETE -> { - isStrikeTts = false // 关闭警告红边 - mIMoGoWaringProvider!!.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) + mIMoGoWaringProvider?.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) // 移除顶部弹窗 - mIMoGoWaringProvider?.disableWarningV2X(appId) + mIMoGoWaringProvider?.disableWarningV2X((appId + direction.direction).toString()) // 更新数据 TrafficDataConvertUtils.cvxRtiThreatIndInfo2TrafficData(info)?.let { // 事件结束,还原车辆颜色 @@ -347,34 +340,28 @@ class MogoPrivateObuManager private constructor() { ObuConstants.STATUS.UPDATE// 更新 -> { if (level == 2 || level == 3) { - if (!isStrikeTts) { - // 更新数据 - TrafficDataConvertUtils.cvxPtcThreatIndInfo2TrafficData(info)?.let { - TrafficMarkerDrawer.updateITrafficInfo(it) - } - //显示警告红边 - mIMoGoWaringProvider!!.showWarning(direction) - mIMoGoWaringProvider!!.showWarningV2X( - v2xType.toInt(), - alertContent, - ttsContent, - v2xType, - object : WarningStatusListener { - override fun onShow() { - isStrikeTts = true - } - - override fun onDismiss() { - isStrikeTts = false - } + //显示警告红边 + mIMoGoWaringProvider?.showWarning(direction) + mIMoGoWaringProvider?.showWarningV2X( + v2xType.toInt(), + alertContent, + ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 + (v2xType + direction.direction).toString(),//使用当前事件类型+方向记录tag,当发生变化的时候关闭当前弹出新的 + object : WarningStatusListener { + override fun onDismiss() { + // 关闭警告红边 + mIMoGoWaringProvider!!.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) } - ) - } + } + ) + } + // 更新数据 + TrafficDataConvertUtils.cvxPtcThreatIndInfo2TrafficData(info)?.let { + TrafficMarkerDrawer.updateITrafficInfo(it) } } // 删除 ObuConstants.STATUS.DELETE -> { - isStrikeTts = false // 关闭警告红边 mIMoGoWaringProvider!!.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) // 更新数据 @@ -496,7 +483,9 @@ class MogoPrivateObuManager private constructor() { ) when (status) { // 添加 - ObuConstants.STATUS.ADD -> { + ObuConstants.STATUS.ADD, + ObuConstants.STATUS.UPDATE, + -> { changeTrafficLightStatus(appId, lights, indicator) } // 删除 @@ -505,9 +494,6 @@ class MogoPrivateObuManager private constructor() { // 移除顶部弹窗 mIMoGoWaringProvider?.disableWarningV2X(appId.toString()) } - else -> { - changeTrafficLightStatus(appId, lights, indicator) - } } } @@ -540,15 +526,12 @@ class MogoPrivateObuManager private constructor() { mIMoGoWaringProvider!!.showWarningV2X( appId, alertContent, - ttsContent, + ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 appId.toString(), object : WarningStatusListener { - override fun onShow() { - isStrikeTts = true - } - override fun onDismiss() { - isStrikeTts = false + //关闭显示警告红边 + mIMoGoWaringProvider?.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) } } ) @@ -579,17 +562,9 @@ class MogoPrivateObuManager private constructor() { mIMoGoWaringProvider!!.showWarningV2X( EventTypeEnum.TYPE_USECASE_ID_IVP_GREEN.poiType.toInt(), alertContent, - ttsContent, + ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 appId.toString(), - object : WarningStatusListener { - override fun onShow() { - isStrikeTts = true - } - - override fun onDismiss() { - isStrikeTts = false - } - } + null ) } // 黄灯 @@ -714,29 +689,26 @@ class MogoPrivateObuManager private constructor() { // 添加,更新 add的时候,可能级别是2, ObuConstants.STATUS.ADD, ObuConstants.STATUS.UPDATE -> { + Log.d( + MogoObuConst.TAG_MOGO_OBU, + "appId2 = $appId --- level = $level ---ttsContent = $ttsContent --- alertContent = $alertContent --- direction = $direction" + ) if (level == 2 || level == 3) { - Log.d( - MogoObuConst.TAG_MOGO_OBU, - "appId2 = $appId --- level = $level ---ttsContent = $ttsContent --- alertContent = $alertContent --- direction = $direction" - ) - //显示警告红边 - mIMoGoWaringProvider?.showWarning(direction) //显示弹框,语音提示 mIMoGoWaringProvider?.showWarningV2X( appId, alertContent, - if (!isStrikeTts) ttsContent else "", - (appId + direction.direction).toString(), + ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 + (appId + direction.direction).toString(),//使用当前事件类型+方向记录tag,当发生变化的时候关闭当前弹出新的 object : WarningStatusListener { - override fun onShow() { - isStrikeTts = true - } - override fun onDismiss() { - isStrikeTts = false + // 关闭警告红边 + mIMoGoWaringProvider!!.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) } } ) + //显示警告红边 + mIMoGoWaringProvider?.showWarning(direction) } //更新周边车辆进行预警颜色变换,车辆实时移动和变色 TrafficDataConvertUtils.cvxV2vThreatIndInfo2TrafficData(info)?.let { @@ -745,11 +717,10 @@ class MogoPrivateObuManager private constructor() { } // 删除 ObuConstants.STATUS.DELETE -> { - isStrikeTts = false // 关闭警告红边 mIMoGoWaringProvider!!.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) // 移除顶部弹窗 - mIMoGoWaringProvider?.disableWarningV2X(appId.toString()) + mIMoGoWaringProvider?.disableWarningV2X((appId + direction.direction).toString()) //更新周边车辆进行预警颜色变换,车辆实时移动和变色 TrafficDataConvertUtils.cvxV2vThreatIndInfo2TrafficData(info)?.let { it.threatLevel = 0x01 diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/warning/WarningStatusListener.java b/services/mogo-service-api/src/main/java/com/mogo/service/warning/WarningStatusListener.java index 98e51e35b7..e4a7d98314 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/warning/WarningStatusListener.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/warning/WarningStatusListener.java @@ -5,6 +5,9 @@ package com.mogo.service.warning; * @date 2021/9/13 4:41 下午 */ public interface WarningStatusListener { - void onShow(); - void onDismiss(); + default void onShow() { + } + + default void onDismiss() { + } }