[6.3.0][Feat]新增全局Tts事件监听
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.mogo.tts.base
|
||||
|
||||
interface IGlobalTtsCallback {
|
||||
fun onTtsSpeakStart()
|
||||
|
||||
fun onTtsSpeakEnd()
|
||||
}
|
||||
@@ -125,6 +125,8 @@ interface IMogoTTS extends IProvider {
|
||||
*/
|
||||
void unregisterUnWakeupCommand( String cmd, IMogoTTSCallback callback );
|
||||
|
||||
void registerTtsListener(IGlobalTtsCallback callback);
|
||||
|
||||
/**
|
||||
* 启动语音
|
||||
*
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user