From 81ba1ca6e9a8479930b33e3579073b714e6eda62 Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Mon, 6 Mar 2023 19:26:56 +0800 Subject: [PATCH] =?UTF-8?q?[Opt]=E8=AE=AF=E9=A3=9ETTS=E5=B0=81=E8=A3=85?= =?UTF-8?q?=E5=88=B0=E4=B8=BB=E7=BA=BF=E7=A8=8B=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/tts/iflytek/IFlyTekTts.kt | 47 ++++++++++++++++--- 1 file changed, 41 insertions(+), 6 deletions(-) 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 f0752af30c..4dab0363b9 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 @@ -68,8 +68,15 @@ class IFlyTekTts : IMogoTTS, InitListener { } override fun release() { - ttsEngine?.stopSpeaking() - ttsEngine?.destroy() + if (Thread.currentThread() != Looper.getMainLooper().thread) { + UiThreadHandler.post { + ttsEngine?.stopSpeaking() + ttsEngine?.destroy() + } + } else { + ttsEngine?.stopSpeaking() + ttsEngine?.destroy() + } } override fun flush() { @@ -91,7 +98,16 @@ class IFlyTekTts : IMogoTTS, InitListener { override fun speakTTSVoiceWithLevel(tts: String?, level: Int, callBack: IMogoTTSCallback?) { if (tts.isNullOrEmpty()) return - speakMultiLangTTSWithLevel(MultiLangTtsEntity(listOf(LangTtsEntity(tts, LanguageType.CHINESE))), level, callBack) + speakMultiLangTTSWithLevel( + MultiLangTtsEntity( + listOf( + LangTtsEntity( + tts, + LanguageType.CHINESE + ) + ) + ), level, callBack + ) } override fun speakMultiLangTTSWithLevel( @@ -99,10 +115,19 @@ class IFlyTekTts : IMogoTTS, InitListener { level: Int, callBack: IMogoTTSCallback? ) { - if (callBack != null) { - speakVoiceMap[ttsEntity.toString()] = callBack + if (Thread.currentThread() != Looper.getMainLooper().thread) { + UiThreadHandler.post { + if (callBack != null) { + speakVoiceMap[ttsEntity.toString()] = callBack + } + speakMultiLangTTSWithLevel(ttsEntity, level) + } + } else { + if (callBack != null) { + speakVoiceMap[ttsEntity.toString()] = callBack + } + speakMultiLangTTSWithLevel(ttsEntity, level) } - speakMultiLangTTSWithLevel(ttsEntity, level) } override fun stopSpeakTts(text: String?) { @@ -110,6 +135,16 @@ class IFlyTekTts : IMogoTTS, InitListener { } override fun stopTts() { + if (Thread.currentThread() != Looper.getMainLooper().thread) { + UiThreadHandler.post { + realStop() + } + } else { + realStop() + } + } + + private fun realStop() { curTtsEntity?.let { val string = it.toString() if (speakVoiceMap.containsKey(string)) {