[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,6 +5,7 @@ import android.util.Log;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.ToastUtils;
import com.mogo.tts.base.IGlobalTtsCallback;
import com.mogo.tts.base.IMogoTTS;
import com.mogo.tts.base.IMogoTTSCallback;
import com.mogo.tts.base.MultiLangTtsEntity;
@@ -28,6 +29,7 @@ public class AIAssist {
public static final int LEVEL3 = 0;//P3
private IMogoTTS mTTS;
private IGlobalTtsCallback mTTSCallback;
public static AIAssist getInstance(Context context) {
if (sInstance == null) {
@@ -260,6 +262,12 @@ public class AIAssist {
}
}
public void setGlobalTtsListener(IGlobalTtsCallback callback) {
if (mTTS != null) {
mTTS.registerTtsListener(callback);
}
}
public void startAssistant(Context context) {
startAssistant(context, 1);
}

View File

@@ -0,0 +1,7 @@
package com.mogo.tts.base
interface IGlobalTtsCallback {
fun onTtsSpeakStart()
fun onTtsSpeakEnd()
}

View File

@@ -125,6 +125,8 @@ interface IMogoTTS extends IProvider {
*/
void unregisterUnWakeupCommand( String cmd, IMogoTTSCallback callback );
void registerTtsListener(IGlobalTtsCallback callback);
/**
* 启动语音
*

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())

View File

@@ -28,6 +28,7 @@ import com.elegant.utils.storage.SharedPrefsMgr;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.ThreadUtils;
import com.mogo.eagle.core.utilcode.util.ToastUtils;
import com.mogo.tts.base.IGlobalTtsCallback;
import com.mogo.tts.base.IMogoTTS;
import com.mogo.tts.base.IMogoTTSCallback;
import com.mogo.tts.base.LangTtsEntity;
@@ -101,6 +102,7 @@ public class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack {
private final Map<String, IMogoTTSCallback> mQAndAMap = new HashMap<>();
// 单独的语音播放
private final Map<String, IMogoTTSCallback> mSpeakVoiceMap = new HashMap<>();
private IGlobalTtsCallback mGlobalTtsCallback = null;
private final Map<String, String[]> mCacheUnWakeupCommands = new ConcurrentHashMap<>();
@@ -611,6 +613,11 @@ public class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack {
}
}
@Override
public void registerTtsListener(IGlobalTtsCallback callback) {
mGlobalTtsCallback = callback;
}
public static void startAssistant(Context context) {
startAssistant(context, 1);
}
@@ -748,6 +755,10 @@ public class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack {
public void onReady(String s) {
CallerLogger.d(TAG, "开始播放");
IMogoTTSCallback callBack = mSpeakVoiceMap.get(s);
IGlobalTtsCallback globalCallback = mGlobalTtsCallback;
if (globalCallback != null) {
globalCallback.onTtsSpeakStart();
}
if (callBack != null) {
callBack.onSpeakStart(s);
}
@@ -759,7 +770,11 @@ public class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack {
curTtsContent = "";
CallerLogger.d(TAG, "播放完成");
ttsNext();
IMogoTTSCallback callBack = PadTTS.this.mSpeakVoiceMap.remove(utteranceId);
IMogoTTSCallback callBack = mSpeakVoiceMap.remove(utteranceId);
IGlobalTtsCallback globalCallback = mGlobalTtsCallback;
if (globalCallback != null) {
globalCallback.onTtsSpeakEnd();
}
if (callBack != null) {
callBack.onSpeakEnd(utteranceId);
}

View File

@@ -11,6 +11,7 @@ import androidx.annotation.MainThread;
import com.elegant.utils.storage.SharedPrefsMgr;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.ToastUtils;
import com.mogo.tts.base.IGlobalTtsCallback;
import com.mogo.tts.base.IMogoTTS;
import com.mogo.tts.base.IMogoTTSCallback;
import com.mogo.tts.base.LangTtsEntity;
@@ -265,6 +266,11 @@ public class ZhiTTS implements IMogoTTS, OnTtsListener {
CallerLogger.d(TAG, "unregisterUnWakeupCommand");
}
@Override
public void registerTtsListener(IGlobalTtsCallback callback) {
}
public synchronized void flush() {
CallerLogger.d(TAG, "flush");