diff --git a/core/function-impl/mogo-core-function-chat/src/main/java/com/mogo/eagle/core/function/chat/facade/voice/VoiceControlFacade.kt b/core/function-impl/mogo-core-function-chat/src/main/java/com/mogo/eagle/core/function/chat/facade/voice/VoiceControlFacade.kt index 1fb5dfd91f..3d05d2fa71 100644 --- a/core/function-impl/mogo-core-function-chat/src/main/java/com/mogo/eagle/core/function/chat/facade/voice/VoiceControlFacade.kt +++ b/core/function-impl/mogo-core-function-chat/src/main/java/com/mogo/eagle/core/function/chat/facade/voice/VoiceControlFacade.kt @@ -114,6 +114,17 @@ object VoiceControlFacade: IMoGoVoiceControlFacade, IMogoVoiceCmdCallBack, IMogo } } + override fun onStopTts(speakText: String?) { + super.onStopTts(speakText) + listeners + .filter { + it.get() != null + } + .forEach { + it.get()?.onSpeakEnd() + } + } + override fun register() { if (hasRegister.get()) { return diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt index 3c01dda4d9..cda2a7f5bf 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt @@ -167,6 +167,11 @@ class MoGoHmiProvider : IMoGoHmiProvider { super.onSpeakError(speakText, errorMsg) isPlayingTts.set(false) } + + override fun onStopTts(speakText: String?) { + super.onStopTts(speakText) + isPlayingTts.set(false) + } }) isPlayingTts.set(true) } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt index 4147dff501..3eca1f6edd 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt @@ -179,8 +179,8 @@ class DriverMsgBoxListAdapter(private val activity: Activity) : holder.tvFmActionOpen.text = "建议操作:暂无" holder.tvFmActionNormal.text = "建议操作:暂无" //Title - holder.tvFmTitleNormal.text = MsgFmData.getFmPolicyName(fmInfoMsg.policyCode) - holder.tvFmTitleOpen.text = MsgFmData.getFmPolicyName(fmInfoMsg.policyCode) + holder.tvFmTitleNormal.text = "暂无建议操作" + holder.tvFmTitleOpen.text = "暂无建议操作" }else{ val receiveFaultLevel = ArrayList() fmInfoMsg.fmInfoList!!.forEach { info -> @@ -200,8 +200,8 @@ class DriverMsgBoxListAdapter(private val activity: Activity) : receiveFaultLevel.sort() // receiveFaultLevel.reverse() //Title - holder.tvFmTitleNormal.text = MsgFmData.FaultAction.getFaultAction(receiveFaultLevel[0]) - holder.tvFmTitleOpen.text = MsgFmData.FaultAction.getFaultAction(receiveFaultLevel[0]) + holder.tvFmTitleNormal.text = MsgFmData.FaultAction.getFaultTitle(receiveFaultLevel[0]) + holder.tvFmTitleOpen.text = MsgFmData.FaultAction.getFaultTitle(receiveFaultLevel[0]) //不同级别的Icon显示 when(receiveFaultLevel[0]){ 0->{ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt index 64583ba3da..f0cef47ebd 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt @@ -21,7 +21,9 @@ import com.mogo.eagle.core.utilcode.kotlin.scope import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.util.BarUtils import com.mogo.eagle.core.utilcode.util.ThreadUtils +import com.mogo.eagle.core.utilcode.util.UiThreadHandler import kotlinx.android.synthetic.main.view_status_bar.view.* +import kotlinx.coroutines.Runnable import kotlinx.coroutines.delay import kotlinx.coroutines.launch import java.util.concurrent.CopyOnWriteArrayList @@ -62,6 +64,7 @@ class StatusBarView @JvmOverloads constructor( if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){ updateStatusBarLeftView(true, FUNC_MODE_DEMO, DemoModeView(this.context)) updateStatusBarLeftView(true, FUNC_MODE_RAIN, RainModeView(this.context)) + routeDownloadStatusRoot?.visibility = View.GONE CallerDevaToolsManager.registerRouteDownloadListener(TAG) { state -> when(state) { 0 -> { @@ -76,10 +79,7 @@ class StatusBarView @JvmOverloads constructor( routeDownloadStatusRoot?.visibility = View.VISIBLE routeDownloadStatus?.background = ContextCompat.getDrawable(context, R.drawable.bg_autopilot_route_download_success) routeDownloadFailMark?.visibility = View.GONE - scope.launch { - delay(3000) - routeDownloadStatusRoot?.visibility = View.GONE - } + UiThreadHandler.postDelayed(Runnable { routeDownloadStatusRoot?.visibility = View.GONE }, 3000) } 3 -> { routeDownloadStatusRoot?.visibility = View.VISIBLE diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/MsgFmData.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/MsgFmData.kt index 52d3682e4b..2b168ef74a 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/MsgFmData.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/MsgFmData.kt @@ -15,13 +15,13 @@ class MsgFmData{ val faultLevel: Int//故障处理级别 ){ //请求平行驾驶接管 - FM_ACT_NEED_PARALLEL_DERVING_TAKEOVER("恢复策略","请求平行驾驶接管","FM_ACT_NEED_PARALLEL_DERVING_TAKEOVER","如planing出站时,规划失败",3), + FM_ACT_NEED_PARALLEL_DERVING_TAKEOVER("恢复策略","请求平行驾驶,请注意随时接管","FM_ACT_NEED_PARALLEL_DERVING_TAKEOVER","如planing出站时,规划失败",3), //请求人工驾驶接管 FM_ACT_NEED_MANNUAL_DERVING("恢复策略","请求人工驾驶接管","FM_ACT_NEED_MANNUAL_DERVING","如planing规划失败,且存在弱网判断",0), //系统重启 - FM_ACT_NEED_RESTART_SYSTEM("恢复策略","系统重启","FM_ACT_NEED_RESTART_SYSTEM","如检测到出现多个节点奔溃",2), + FM_ACT_NEED_RESTART_SYSTEM("恢复策略","请进行系统软重启","FM_ACT_NEED_RESTART_SYSTEM","如检测到出现多个节点奔溃",2), //整车下电重启 - FM_ACT_MUST_VEHICLE_POWER_RESET("恢复策略","整车下电重启","FM_ACT_MUST_VEHICLE_POWER_RESET","如底盘无数据,需要下电重启",1), + FM_ACT_MUST_VEHICLE_POWER_RESET("恢复策略","请进行整车下电重启","FM_ACT_MUST_VEHICLE_POWER_RESET","如底盘无数据,需要下电重启",1), //请联系硬件工程师 FM_ACT_CONTACT_HARDWARE_ENGINEER("人工处理","请联系硬件工程师","FM_ACT_CONTACT_HARDWARE_ENGINEER","硬件接线,域控启动等故障",4), //请联系运维工程师 @@ -48,7 +48,7 @@ class MsgFmData{ FM_ACT_CONTACT_OPERATIONS_ENGINEER.faultActionCode ->FM_ACT_CONTACT_OPERATIONS_ENGINEER.faultLevel //请联系软件工程师 FM_ACT_CONTACT_SOFTWARE_ENGINEER.faultActionCode -> FM_ACT_CONTACT_SOFTWARE_ENGINEER.faultLevel - else -> 0 + else -> 5 } } @@ -69,7 +69,27 @@ class MsgFmData{ FM_ACT_CONTACT_OPERATIONS_ENGINEER.faultLevel ->FM_ACT_CONTACT_OPERATIONS_ENGINEER.faultAction //请联系软件工程师 FM_ACT_CONTACT_SOFTWARE_ENGINEER.faultLevel -> FM_ACT_CONTACT_SOFTWARE_ENGINEER.faultAction - else -> "" + else -> "暂无建议操作,请视实际情况注意接管" + } + } + + fun getFaultTitle(faultActionLevel: Int): String{ + return when(faultActionLevel){ + //请求平行驾驶接管 + FM_ACT_NEED_PARALLEL_DERVING_TAKEOVER.faultLevel -> FM_ACT_NEED_PARALLEL_DERVING_TAKEOVER.faultAction + //请求人工驾驶接管 + FM_ACT_NEED_MANNUAL_DERVING.faultLevel -> FM_ACT_NEED_MANNUAL_DERVING.faultAction + //系统重启 + FM_ACT_NEED_RESTART_SYSTEM.faultLevel -> FM_ACT_NEED_RESTART_SYSTEM.faultAction + //整车下电重启 + FM_ACT_MUST_VEHICLE_POWER_RESET.faultLevel -> FM_ACT_MUST_VEHICLE_POWER_RESET.faultAction + //请联系硬件工程师 + FM_ACT_CONTACT_HARDWARE_ENGINEER.faultLevel -> FM_ACT_CONTACT_HARDWARE_ENGINEER.faultAction + //请联系运维工程师 + FM_ACT_CONTACT_OPERATIONS_ENGINEER.faultLevel ->FM_ACT_CONTACT_OPERATIONS_ENGINEER.faultAction + //请联系软件工程师 + FM_ACT_CONTACT_SOFTWARE_ENGINEER.faultLevel -> FM_ACT_CONTACT_SOFTWARE_ENGINEER.faultAction + else -> "暂无建议操作" } } diff --git a/tts/tts-base/src/main/java/com/mogo/tts/base/IMogoTTSCallback.java b/tts/tts-base/src/main/java/com/mogo/tts/base/IMogoTTSCallback.java index 7f6d964542..d42ba17133 100644 --- a/tts/tts-base/src/main/java/com/mogo/tts/base/IMogoTTSCallback.java +++ b/tts/tts-base/src/main/java/com/mogo/tts/base/IMogoTTSCallback.java @@ -74,6 +74,9 @@ interface IMogoTTSCallback { default void onSpeakEnd( String speakText ) { } + default void onStopTts( String speakText ) { + } + default void onSpeakError( String speakText, String errorMsg) { } diff --git a/tts/tts-iflytek/src/main/java/com/mogo/tts/iflytek/IFlyTekTts.kt b/tts/tts-iflytek/src/main/java/com/mogo/tts/iflytek/IFlyTekTts.kt index 1897430cd1..43d7b0e2f7 100644 --- a/tts/tts-iflytek/src/main/java/com/mogo/tts/iflytek/IFlyTekTts.kt +++ b/tts/tts-iflytek/src/main/java/com/mogo/tts/iflytek/IFlyTekTts.kt @@ -156,7 +156,7 @@ class IFlyTekTts : IMogoTTS, InitListener { curTtsEntity?.let { val string = it.toString() if (speakVoiceMap.containsKey(string)) { - speakVoiceMap.remove(string) + speakVoiceMap.remove(string)?.onStopTts(string) } curTtsEntity = null } diff --git a/tts/tts-pad/src/main/java/com/mogo/tts/pad/PadTTS.java b/tts/tts-pad/src/main/java/com/mogo/tts/pad/PadTTS.java index 79987d66f3..b8cb7fad71 100644 --- a/tts/tts-pad/src/main/java/com/mogo/tts/pad/PadTTS.java +++ b/tts/tts-pad/src/main/java/com/mogo/tts/pad/PadTTS.java @@ -357,7 +357,10 @@ public class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack { public void stopSpeakTts(String text) { if (mEngine != null && mHasAuth) { - mSpeakVoiceMap.remove(text); + IMogoTTSCallback callBack = mSpeakVoiceMap.remove(text); + if (callBack != null) { + callBack.onStopTts(curTtsContent); + } curTtsContent = ""; curTtsLevel = -1; mEngine.stop(); @@ -366,7 +369,10 @@ public class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack { public void stopTts() { if (mEngine != null && mHasAuth) { - mSpeakVoiceMap.remove(curTtsContent); + IMogoTTSCallback callBack = mSpeakVoiceMap.remove(curTtsContent); + if (callBack != null) { + callBack.onStopTts(curTtsContent); + } // tts过程中调用stop不会有回调事件 curTtsContent = ""; curTtsLevel = -1;