diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt index 5ba5156aad..51cba44a50 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt @@ -18,6 +18,8 @@ import com.zhjt.mogo_core_function_devatools.monitor.MonitorManager import com.zhjt.mogo_core_function_devatools.scene.SceneManager.Companion.sceneManager import com.zhjt.mogo_core_function_devatools.status.* import com.zhjt.mogo_core_function_devatools.trace.TraceManager.Companion.traceManager +import com.zhjt.mogo_core_function_devatools.tts.TtsManager +import com.zhjt.mogo_core_function_devatools.tts.TtsManager.Companion.ttsManager import com.zhjt.mogo_core_function_devatools.upgrade.UpgradeManager.Companion.upgradeManager import record_cache.RecordPanelOuterClass @@ -35,6 +37,7 @@ class DevaToolsProvider : IDevaToolsProvider { } override fun initBiz() { + ttsManager.initTts(mContext!!) traceManager.init(mContext!!) bizConfigCenter.init(mContext!!) FuncConfigImpl.init() diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/tts/TtsManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/tts/TtsManager.kt new file mode 100644 index 0000000000..2cf11f8d9f --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/tts/TtsManager.kt @@ -0,0 +1,36 @@ +package com.zhjt.mogo_core_function_devatools.tts + +import android.content.Context +import com.elegant.utils.storage.SharedPrefsMgr +import com.mogo.commons.AbsMogoApplication +import com.mogo.commons.voice.AIAssist +import com.mogo.eagle.core.function.api.cloud.IMoGoCloudListener +import com.mogo.eagle.core.function.call.cloud.CallerCloudListenerManager +import com.mogo.eagle.core.utilcode.util.ThreadUtils +import com.zhjt.mogo_core_function_devatools.trace.TraceManager + +class TtsManager : IMoGoCloudListener { + + companion object { + + const val TAG = "TtsManager" + + val ttsManager by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + TtsManager() + } + } + + fun initTts(context: Context) { + val sn = SharedPrefsMgr.getInstance(context).getString("sn") + if (sn.isNullOrEmpty()) { + CallerCloudListenerManager.registerCloudListener(TraceManager.TAG, this) + } + AIAssist.getInstance(context) + } + + override fun tokenGot(token: String, sn: String) { + ThreadUtils.runOnUiThread { + AIAssist.getInstance(AbsMogoApplication.getApp()).initTtsAgain(sn) + } + } +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java index 8e88df6202..d4645449a7 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java @@ -67,7 +67,6 @@ public abstract class MainMoGoApplication extends AbsMogoApplication { initCrashConfig(); initLogConfig(); initTipToast(); - AIAssist.getInstance(this); initModules(); if (DebugConfig.isDebug()) { initKoom(); diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java index 1cf0660cf4..e8d509617b 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java @@ -62,6 +62,15 @@ public class AIAssist { } } + /** + * 重新初始化Tts(首次sn获取比较慢,而TTS初始化比较早会拿不到授权) + */ + public void initTtsAgain(String sn) { + if (mTTS != null) { + mTTS.initTts(sn); + } + } + /** * 是否语音注册成功 * diff --git a/tts/tts-base/src/main/java/com/mogo/tts/base/IMogoTTS.java b/tts/tts-base/src/main/java/com/mogo/tts/base/IMogoTTS.java index 14e78ec55f..c6940c17a7 100644 --- a/tts/tts-base/src/main/java/com/mogo/tts/base/IMogoTTS.java +++ b/tts/tts-base/src/main/java/com/mogo/tts/base/IMogoTTS.java @@ -13,6 +13,8 @@ public */ interface IMogoTTS extends IProvider { + void initTts(String sn); + /** * 释放资源 */ diff --git a/tts/tts-pad/src/main/java/com/mogo/tts/pad/PadTTS.java b/tts/tts-pad/src/main/java/com/mogo/tts/pad/PadTTS.java index 97e4475d5c..ced07980ba 100644 --- a/tts/tts-pad/src/main/java/com/mogo/tts/pad/PadTTS.java +++ b/tts/tts-pad/src/main/java/com/mogo/tts/pad/PadTTS.java @@ -23,7 +23,7 @@ import com.aispeech.export.engines.AILocalTTSEngine; import com.aispeech.export.intent.AILocalTTSIntent; import com.aispeech.export.listeners.AITTSListener; import com.aispeech.lite.AuthType; -import com.mogo.cloud.passport.MoGoAiCloudClientConfig; +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; @@ -125,13 +125,20 @@ public class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsList } } - private void initTtsConfig() { + @Override + public void initTts(String sn) { + if (!mHasAuth && sn != null && !sn.isEmpty()) { + initTtsConfig(sn); + } + } + + private void initTtsConfig(String sn) { try { CallerLogger.INSTANCE.d(TAG, "initTtsConfig"); //在线授权配置 AuthConfig.Builder onlineBuilder = new AuthConfig.Builder() .setType(AuthType.ONLINE) - .setCustomDeviceName(MoGoAiCloudClientConfig.getInstance().getSn()); + .setCustomDeviceName(sn); //echo 配置 EchoConfig echoConfig = new EchoConfig.Builder() @@ -719,7 +726,7 @@ public class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsList mVoiceClient = new VoiceClient(mContext); mVoiceClient.setCallBack(this); initFlushStatus(); - initTtsConfig(); + initTts(SharedPrefsMgr.getInstance(mContext).getString("sn")); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { // 检查是否有悬浮窗权限 if (Settings.canDrawOverlays(context)) {