- * 描述
*/
-@Route( path = MogoTTSConstants.API_PATH )
-class ZhiTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener {
+//@Route(path = MogoTTSConstants.API_PATH)
+public class ZhiTTS implements IMogoTTS, OnTtsListener {
private static final String TAG = "ZhiTTS";
- private String mLastQAndASpeakText;
- private boolean mHasFlush = false;
- private boolean mInitReady = false;
private Context mContext;
- public synchronized void release() {
- if ( mCmdMap != null && !mCmdMap.isEmpty() && mVoiceClient != null ) {
- for ( String cmd : mCmdMap.keySet() ) {
- try {
- mVoiceClient.unRegisterCustomWakeupCmd( cmd );
- } catch ( Exception e ) {
- }
+ public void release() {
+ CallerLogger.d(TAG, "release");
+ }
+
+
+ @Override
+ public void initTts(String sn) {
+ CallerLogger.d(TAG, "initTts");
+ AdapterApp.getInstance().init(mContext);
+
+ ZDCloudDMManager.getInstance().setUIView(ZhiAvatarWindow.class);
+
+ RecorderDMManager.getInstance().registerListener(new DMStatusListener() {
+ @Override
+ public void onInitSuccess() {
+ CallerLogger.d(TAG, "RecorderDMManager---onInitSuccess");
}
- }
- mQAndAMap.clear();
- mVoiceClient.release();
- mSpeakVoiceMap.clear();
- mCacheUnWakeupCommands.clear();
- mContext = null;
+
+ @Override
+ public void onError(int code, String info) {
+ CallerLogger.d(TAG, "RecorderDMManager---onError---code"+code+"--info"+info);
+ }
+ });
}
- private VoiceClient mVoiceClient;
- private MogoVoiceManager mogoVoiceManager;
- // 免唤醒指令
- private Map< String, List< IMogoTTSCallback > > mCmdMap = new HashMap<>();
- // 问答指令
- private Map< String, IMogoTTSCallback > mQAndAMap = new HashMap<>();
- // 单独的语音播放
- private Map< String, IMogoTTSCallback > mSpeakVoiceMap = new HashMap<>();
-
- private Map< String, String[] > mCacheUnWakeupCommands = new ConcurrentHashMap<>();
-
- private void initFlushStatus() {
- if ( !mHasFlush ) {
- mHasFlush = isVoiceServiceReady( mContext );
- }
- }
/**
* 初始化
*/
- private void initSpeech( Context context ) {
- mogoVoiceManager = MogoVoiceManagerImpl.getInstance();
- mogoVoiceManager.init( context, new OnConnStatusListener() {
- @Override
- public void onSuccess() {
- mInitReady = true;
- }
-
- @Override
- public void onFailed() {
-
- }
- } );
+ private void initSpeech(Context context) {
+ CallerLogger.d(TAG, "initSpeech");
}
/**
@@ -99,82 +74,8 @@ class ZhiTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener {
*/
@Override
public boolean hasFlush() {
- return mHasFlush;
- }
-
- @Override
- public void onCmdSelected( String cmd ) {
- if ( !mCmdMap.containsKey( cmd ) ) {
- return;
- }
-
- Iterator< IMogoTTSCallback > iterator = null;
- try {
- List< IMogoTTSCallback > cmdCallBacks = mCmdMap.get( cmd );
- iterator = new ArrayList<>( cmdCallBacks ).iterator();
- } catch ( Exception e ) {
-
- }
- while ( iterator != null && iterator.hasNext() ) {
- IMogoTTSCallback callBack = iterator.next();
- if ( callBack != null ) {
- callBack.onCmdSelected( cmd );
- }
- }
- }
-
- @Override
- public void onCmdAction( String speakText ) {
- if ( !TextUtils.isEmpty( mLastQAndASpeakText ) ) {
- IMogoTTSCallback cmdCallBack = mQAndAMap.remove( mLastQAndASpeakText );
- if ( cmdCallBack != null ) {
- cmdCallBack.onCmdAction( speakText );
- }
- }
- }
-
- @Override
- public void onCmdCancel( String speakText ) {
- if ( !TextUtils.isEmpty( mLastQAndASpeakText ) ) {
- IMogoTTSCallback cmdCallBack = mQAndAMap.remove( mLastQAndASpeakText );
- if ( cmdCallBack != null ) {
- cmdCallBack.onCmdCancel( speakText );
- }
- }
- }
-
- @Override
- public void onSpeakEnd( String speakText ) {
- if ( mQAndAMap.containsKey( speakText ) ) {
- mLastQAndASpeakText = speakText;
- IMogoTTSCallback cmdCallBack = mQAndAMap.get( speakText );
- if ( cmdCallBack != null ) {
- cmdCallBack.onSpeakEnd( speakText );
- return;
- }
- }
- IMogoTTSCallback callBack = mSpeakVoiceMap.remove( speakText );
- if ( callBack != null ) {
- callBack.onSpeakEnd( speakText );
- }
- }
-
- @Override
- public void onSpeakSelectTimeOut( String speakText ) {
- if ( mQAndAMap.containsKey( speakText ) ) {
- if ( TextUtils.equals( speakText, mLastQAndASpeakText ) ) {
- mLastQAndASpeakText = null;
- }
- IMogoTTSCallback cmdCallBack = mQAndAMap.remove( speakText );
- if ( cmdCallBack != null ) {
- cmdCallBack.onSpeakSelectTimeOut( speakText );
- return;
- }
- }
- IMogoTTSCallback callBack = mSpeakVoiceMap.remove( speakText );
- if ( callBack != null ) {
- callBack.onSpeakSelectTimeOut( speakText );
- }
+ CallerLogger.d(TAG, "hasFlush");
+ return true;
}
/**
@@ -182,15 +83,16 @@ class ZhiTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener {
*
* @param text
*/
- public void speakTTSVoice( String text, IMogoTTSCallback callBack ) {
- try {
- initFlushStatus();
- if ( mHasFlush ) {
- mSpeakVoiceMap.put( text, callBack );
- mVoiceClient.speakDefault( text );
- }
- } catch ( Exception e ) {
- }
+ public void speakTTSVoice(String text, IMogoTTSCallback callBack) {
+ CallerLogger.d(TAG, "speakTTSVoice");
+ }
+
+ public void stopSpeakTts(String text) {
+ CallerLogger.d(TAG, "text");
+ }
+
+ public void stopTts() {
+ CallerLogger.d(TAG, "stopTts");
}
/**
@@ -198,48 +100,35 @@ class ZhiTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener {
*
* @param text
*/
- public void speakTTSVoice( String text ) {
- try {
- initFlushStatus();
- if ( mHasFlush ) {
- mVoiceClient.speakDefault( text );
- }
- } catch ( Exception e ) {
- }
+ public void speakTTSVoice(String text) {
+ CallerLogger.d(TAG, "speakTTSVoice");
}
+ @MainThread
+ public void speakTTSVoiceWithLevel(String text, int ttsLevel) {
+ CallerLogger.d(TAG, "speakTTSVoiceWithLevel");
+ }
+
+ @MainThread
+ public void speakTTSVoiceWithLevel(String text, int ttsLevel, IMogoTTSCallback callBack) {
+ CallerLogger.d(TAG, "speakTTSVoiceWithLevel");
+ }
+
+
+
/**
* 语音播报
*
* @param text 播报内容
* @param type 播报策略
*/
- public void speakTTSVoice( String text, PreemptType type, IMogoTTSCallback callBack ) {
- try {
- initFlushStatus();
- if ( mHasFlush ) {
- mSpeakVoiceMap.put( text, callBack );
- VoiceClient.PreemptType preemptType = VoiceClient.PreemptType.PREEMPT_TYPE_NONE;
- if ( type != null ) {
- switch ( type ) {
- case PREEMPT_TYPE_NEXT:
- preemptType = VoiceClient.PreemptType.PREEMPT_TYPE_NEXT;
- break;
- case PREEMPT_TYPE_FLUSH:
- preemptType = VoiceClient.PreemptType.PREEMPT_TYPE_FLUSH;
- break;
- case PREEMPT_TYPE_IMMEDIATELY:
- preemptType = VoiceClient.PreemptType.PREEMPT_TYPE_IMMEADIATELY;
- break;
- case PREEMPT_TYPE_IMMEDIATELY_WITHOUT_CANCEL:
- preemptType = VoiceClient.PreemptType.PREEMPT_TYPE_IMMEADIATELY_WITHOUT_CANCLE;
- break;
- }
- }
- mVoiceClient.speakTypeText( text, preemptType );
- }
- } catch ( Exception e ) {
- }
+ public void speakTTSVoice(String text, PreemptType type, IMogoTTSCallback callBack) {
+ CallerLogger.d(TAG, "speakTTSVoice");
+ }
+
+ @Override
+ public void speakMultiLangTTSWithLevel(MultiLangTtsEntity ttsEntity, int level, IMogoTTSCallback callback) {
+ CallerLogger.d(TAG, "speakMultiLangTTSWithLevel");
}
/**
@@ -247,12 +136,8 @@ class ZhiTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener {
*
* @param tts 播报内容
*/
- public void speakQAndACmd( String tts, IMogoTTSCallback callBack ) {
- initFlushStatus();
- if ( mHasFlush ) {
- mQAndAMap.put( tts, callBack );
- mVoiceClient.speakTtsAndRegistCmd( tts );
- }
+ public void speakQAndACmd(String tts, IMogoTTSCallback callBack) {
+ CallerLogger.d(TAG, "speakQAndACmd");
}
/**
@@ -262,12 +147,8 @@ class ZhiTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener {
* @param okCmds 确认命令唤醒词
* @param cancelCmds 取消命令唤醒词
*/
- public void speakQAndACmd( String tts, String[] okCmds, String[] cancelCmds, IMogoTTSCallback callBack ) {
- initFlushStatus();
- if ( mHasFlush ) {
- mQAndAMap.put( tts, callBack );
- mVoiceClient.speakTtsAndRegistCmd( tts, okCmds, cancelCmds );
- }
+ public void speakQAndACmd(String tts, String[] okCmds, String[] cancelCmds, IMogoTTSCallback callBack) {
+ CallerLogger.d(TAG, "speakQAndACmd");
}
/**
@@ -277,33 +158,8 @@ class ZhiTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener {
* @param cmdWords
* @param callBack
*/
- public void registerUnWakeupCommand( String cmd, String[] cmdWords, IMogoTTSCallback callBack ) {
- if ( !mCmdMap.containsKey( cmd ) ) {
- mCmdMap.put( cmd, new ArrayList<>() );
- }
- mCmdMap.get( cmd ).add( callBack );
-
- initFlushStatus();
- if ( mHasFlush ) {
- mVoiceClient.registerCustomWakeupCmd( cmd, cmdWords );
- mCacheUnWakeupCommands.remove( cmd );
- }
- mCacheUnWakeupCommands.put( cmd, cmdWords );
- }
-
- /**
- * 注册免唤醒命令
- *
- * @param cmd
- * @param cmdWords
- */
- private void registerUnWakeupCommand( String cmd, String[] cmdWords ) {
- initFlushStatus();
- if ( mHasFlush ) {
- mVoiceClient.registerCustomWakeupCmd( cmd, cmdWords );
- mCacheUnWakeupCommands.remove( cmd );
- }
- mCacheUnWakeupCommands.put( cmd, cmdWords );
+ public void registerUnWakeupCommand(String cmd, String[] cmdWords, IMogoTTSCallback callBack) {
+ CallerLogger.d(TAG, "registerUnWakeupCommand");
}
/**
@@ -311,13 +167,8 @@ class ZhiTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener {
*
* @param cmd
*/
- public synchronized void unregisterUnWakeupCommand( String cmd ) {
- mCmdMap.remove( cmd );
- try {
- mVoiceClient.unRegisterCustomWakeupCmd( cmd );
- } catch ( Exception e ) {
- }
- mCacheUnWakeupCommands.remove( cmd );
+ public synchronized void unregisterUnWakeupCommand(String cmd) {
+ CallerLogger.d(TAG, "unregisterUnWakeupCommand");
}
/**
@@ -325,83 +176,26 @@ class ZhiTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener {
*
* @param cmd
*/
- public synchronized void unregisterUnWakeupCommand( String cmd, IMogoTTSCallback callBack ) {
- if ( mCmdMap.containsKey( cmd ) ) {
- List< IMogoTTSCallback > callBacks = mCmdMap.get( cmd );
- if ( callBacks != null ) {
- callBacks.remove( callBack );
- }
- if ( callBacks.isEmpty() ) {
- mCmdMap.remove( cmd );
- try {
- mVoiceClient.unRegisterCustomWakeupCmd( cmd );
- } catch ( Exception e ) {
- }
- mCacheUnWakeupCommands.remove( cmd );
- }
- }
+ public synchronized void unregisterUnWakeupCommand(String cmd, IMogoTTSCallback callBack) {
+ CallerLogger.d(TAG, "unregisterUnWakeupCommand");
}
- public static void startAssistant( Context context ) {
- startAssistant( context, 1 );
- }
-
- /**
- * @param context
- * @param status window_start_cancel 0 - 结束, 1 - 显示, 2 - 未激活调试进入
- */
- public static void startAssistant( Context context, int status ) {
- final Intent intent = new Intent();
- intent.setFlags( Intent.FLAG_INCLUDE_STOPPED_PACKAGES );
- intent.setAction( "pvetec.intent.action.txz.switch" );
- intent.putExtra( "window_start_cancel", status );
- intent.putExtra( "extra_switch_type", "window_start_cancel" );
- context.sendBroadcast( intent );
- }
public synchronized void flush() {
- if ( mCacheUnWakeupCommands.isEmpty() ) {
- return;
- }
- mHasFlush = true;
- final Map< String, String[] > tmp = new HashMap<>( mCacheUnWakeupCommands );
- for ( String cmd : tmp.keySet() ) {
- registerUnWakeupCommand( cmd, tmp.get( cmd ) );
- }
+ CallerLogger.d(TAG, "flush");
}
- private boolean isVoiceServiceReady( Context context ) {
- if ( AppUtils.isProcessRunning( context, AppUtils.getPackageUid( context, "com.zhidao.speech" ) )
- && AppUtils.isProcessRunning( context, AppUtils.getPackageUid( context, "com.zhidao.speech.adapter" ) ) ) {
- return true;
- } else if ( AppUtils.isProcessRunning( context, AppUtils.getPackageUid( context, "com.txznet.txz" ) )
- && AppUtils.isProcessRunning( context, AppUtils.getPackageUid( context, "com.txznet.adapter" ) ) ) {
- return true;
- }
- return false;
+
+ public void speakTTSAndDuck(String text) {
+ CallerLogger.d(TAG, "speakTTSAndDuck");
}
- public void speakTTSAndDuck( String text ) {
- speakTTSAndDuck( text, null );
+ public void speakTTSAndDuck(String text, IMogoTTSCallback callBack) {
+ CallerLogger.d(TAG, "speakTTSAndDuck");
}
- public void speakTTSAndDuck( String text, IMogoTTSCallback callBack ) {
- try {
- if ( mInitReady ) {
- mSpeakVoiceMap.put( text, callBack );
- mogoVoiceManager.toSpeak( text, -3, this );
- }
- } catch ( Exception e ) {
- }
- }
-
- public void shutUp( String ttsId, String text ) {
- try {
- mSpeakVoiceMap.remove( text );
- mogoVoiceManager.shutUp( ttsId );
- } catch ( Exception e ) {
-
- }
+ public void shutUp(String ttsId, String text) {
+ CallerLogger.d(TAG, "shutUp");
}
/**
@@ -409,64 +203,54 @@ class ZhiTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener {
* 语音SDK生效版本从1.0.8.4版本起
*/
public void breakOffSpeak() {
- mVoiceClient.breakOffSpeak();
+ CallerLogger.d(TAG, "breakOffSpeak");
}
- public void clearTTSCallback( String text ) {
- try {
- mSpeakVoiceMap.remove( text );
- } catch ( Exception e ) {
- e.printStackTrace();
- }
+ public void clearTTSCallback(String text) {
+ CallerLogger.d(TAG, "clearTTSCallback");
}
@Override
- public void onTtsStart( String ttsId, String text ) {
- IMogoTTSCallback callBack = mSpeakVoiceMap.get( text );
- if ( callBack != null ) {
- callBack.onTTSStart( ttsId, text );
- }
+ public void onTtsStart(String ttsId, String text) {
+ CallerLogger.d(TAG, "onTtsStart");
}
@Override
- public void onTtsFinish( String ttsId, String text ) {
- IMogoTTSCallback callBack = mSpeakVoiceMap.remove( text );
- if ( callBack != null ) {
- callBack.onTTSEnd( ttsId, text );
- }
+ public void onTtsFinish(String ttsId, String text) {
+ CallerLogger.d(TAG, "onTtsFinish");
}
@Override
- public void onTtsError( String ttsId, String text ) {
- IMogoTTSCallback callBack = mSpeakVoiceMap.remove( text );
- if ( callBack != null ) {
- callBack.onTTSError( ttsId, text );
- }
+ public void onTtsError(String ttsId, String text) {
+ CallerLogger.d(TAG, "onTtsError");
}
@Override
- public void init( Context context ) {
- if ( context != null ) {
+ public void init(Context context) {
+ CallerLogger.d(TAG, "onTtsError");
+ if (context != null) {
mContext = context.getApplicationContext();
- mVoiceClient = new VoiceClient( mContext );
- mVoiceClient.setCallBack( this );
- initFlushStatus();
- initSpeech( context );
+
+ initTts(SharedPrefsMgr.getInstance(mContext).getString("sn"));
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ // 检查是否有悬浮窗权限
+ if (Settings.canDrawOverlays(context)) {
+ initSpeech(context);
+ }
+ } else {
+ initSpeech(context);
+ }
}
}
@Override
- public void startAIAssist( Context context ) {
- startAssistant( context, 1 );
+ public void startAIAssist(Context context) {
+
}
@Override
- public void startAIAssist( Context context, int status ) {
- final Intent intent = new Intent();
- intent.setFlags( Intent.FLAG_INCLUDE_STOPPED_PACKAGES );
- intent.setAction( "pvetec.intent.action.txz.switch" );
- intent.putExtra( "window_start_cancel", status );
- intent.putExtra( "extra_switch_type", "window_start_cancel" );
- context.sendBroadcast( intent );
+ public void startAIAssist(Context context, int status) {
+
}
+
}
diff --git a/tts/tts-zhi/src/main/res/layout/tts_zhi_layout.xml b/tts/tts-zhi/src/main/res/layout/tts_zhi_layout.xml
new file mode 100644
index 0000000000..383fb6f946
--- /dev/null
+++ b/tts/tts-zhi/src/main/res/layout/tts_zhi_layout.xml
@@ -0,0 +1,68 @@
+
+