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/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;