[6.3.0][Feat]新增全局Tts事件监听

This commit is contained in:
chenfufeng
2024-03-19 17:28:17 +08:00
parent 810807cb30
commit 59c02705dd
6 changed files with 63 additions and 4 deletions

View File

@@ -5,13 +5,25 @@ import android.os.Bundle
import android.os.Looper
import android.util.Pair
import androidx.annotation.Keep
import com.iflytek.cloud.*
import com.iflytek.cloud.ErrorCode
import com.iflytek.cloud.InitListener
import com.iflytek.cloud.SpeechConstant
import com.iflytek.cloud.SpeechError
import com.iflytek.cloud.SpeechSynthesizer
import com.iflytek.cloud.SynthesizerListener
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.tts.base.*
import java.util.*
import com.mogo.tts.base.IGlobalTtsCallback
import com.mogo.tts.base.IMogoTTS
import com.mogo.tts.base.IMogoTTSCallback
import com.mogo.tts.base.LangTtsEntity
import com.mogo.tts.base.LanguageType
import com.mogo.tts.base.MultiLangTtsEntity
import com.mogo.tts.base.PreemptType
import com.mogo.tts.base.SpeechUtils
import java.util.LinkedList
@Keep
class IFlyTekTts : IMogoTTS, InitListener {
@@ -42,6 +54,8 @@ class IFlyTekTts : IMogoTTS, InitListener {
HashMap<String, IMogoTTSCallback>()
}
private var mGlobalTtsCallback: IGlobalTtsCallback? = null
override fun init(context: Context) {
this.context = context
SpeechUtils.init(context)
@@ -175,6 +189,10 @@ class IFlyTekTts : IMogoTTS, InitListener {
override fun unregisterUnWakeupCommand(cmd: String?, callback: IMogoTTSCallback?) {
}
override fun registerTtsListener(callback: IGlobalTtsCallback?) {
mGlobalTtsCallback = callback
}
override fun startAIAssist(context: Context?) {
}
@@ -263,11 +281,13 @@ class IFlyTekTts : IMogoTTS, InitListener {
// speakVoiceMap[curTtsEntity.toString()]?.onSpeakEnd(curTtsEntity.toString())
ttsNextLanguage(langTtsEntity)
} else {
mGlobalTtsCallback?.onTtsSpeakEnd()
speakVoiceMap.remove(curTtsEntity.toString())?.onSpeakEnd(curTtsEntity.toString())
curTtsEntity = null
ttsNextMultiLangEntity()
}
} else {// 单语言
mGlobalTtsCallback?.onTtsSpeakEnd()
speakVoiceMap.remove(curTtsContent)?.onSpeakEnd(curTtsContent)
curTtsContent = ""
ttsNextMultiLangEntity()
@@ -288,6 +308,7 @@ class IFlyTekTts : IMogoTTS, InitListener {
private val ttsListener = object : SynthesizerListener {
override fun onSpeakBegin() {
mGlobalTtsCallback?.onTtsSpeakStart()
if (Thread.currentThread() == Looper.getMainLooper().thread) {
curTtsEntity?.let {
speakVoiceMap[it.toString()]?.onSpeakStart(it.toString())