[Opt]讯飞TTS封装到主线程调用

This commit is contained in:
chenfufeng
2023-03-06 19:26:56 +08:00
parent ed8900aab3
commit 81ba1ca6e9

View File

@@ -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)) {