From 988ab480457280b09af5944c81151a6f482a9947 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Mon, 20 Jan 2020 11:13:50 +0800 Subject: [PATCH] fix: aiassist register --- .idea/misc.xml | 2 +- .../java/com/mogo/commons/voice/AIAssist.java | 39 ++++++++++++++----- 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 707ee6e613..2dc54c489f 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file 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 c9c93cc5b9..0484e23650 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 @@ -38,14 +38,19 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack { mVoiceClient.unRegisterCustomWakeupCmd( cmd ); } } - mVoiceMap.clear(); + mQAndAMap.clear(); mVoiceClient.release(); + mSpeakVoiceMap.clear(); sInstance = null; } private final VoiceClient mVoiceClient; + // 免唤醒指令 private Map< String, List< IMogoVoiceCmdCallBack > > mCmdMap = new HashMap<>(); - private Map< String, IMogoVoiceCmdCallBack > mVoiceMap = new HashMap<>(); + // 问答指令 + private Map< String, IMogoVoiceCmdCallBack > mQAndAMap = new HashMap<>(); + // 单独的语音播放 + private Map< String, IMogoVoiceCmdCallBack > mSpeakVoiceMap = new HashMap<>(); private AIAssist( Context context ) { // private constructor @@ -70,7 +75,7 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack { @Override public void onCmdAction( String speakText ) { - IMogoVoiceCmdCallBack cmdCallBack = mVoiceMap.remove( speakText ); + IMogoVoiceCmdCallBack cmdCallBack = mQAndAMap.remove( speakText ); if ( cmdCallBack != null ) { cmdCallBack.onCmdAction( speakText ); } @@ -78,7 +83,7 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack { @Override public void onCmdCancel( String speakText ) { - IMogoVoiceCmdCallBack cmdCallBack = mVoiceMap.remove( speakText ); + IMogoVoiceCmdCallBack cmdCallBack = mQAndAMap.remove( speakText ); if ( cmdCallBack != null ) { cmdCallBack.onCmdCancel( speakText ); } @@ -86,7 +91,14 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack { @Override public void onSpeakEnd( String speakText ) { - IMogoVoiceCmdCallBack callBack = mVoiceMap.remove( speakText ); + if ( mQAndAMap.containsKey( speakText ) ) { + IMogoVoiceCmdCallBack cmdCallBack = mQAndAMap.get( speakText ); + if ( cmdCallBack != null ) { + cmdCallBack.onSpeakEnd( speakText ); + return; + } + } + IMogoVoiceCmdCallBack callBack = mSpeakVoiceMap.remove( speakText ); if ( callBack != null ) { callBack.onSpeakEnd( speakText ); } @@ -94,7 +106,14 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack { @Override public void onSpeakSelectTimeOut( String speakText ) { - IMogoVoiceCmdCallBack callBack = mVoiceMap.remove( speakText ); + if ( mQAndAMap.containsKey( speakText ) ) { + IMogoVoiceCmdCallBack cmdCallBack = mQAndAMap.get( speakText ); + if ( cmdCallBack != null ) { + cmdCallBack.onSpeakSelectTimeOut( speakText ); + return; + } + } + IMogoVoiceCmdCallBack callBack = mSpeakVoiceMap.remove( speakText ); if ( callBack != null ) { callBack.onSpeakSelectTimeOut( speakText ); } @@ -107,7 +126,7 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack { */ public void speakTTSVoice( String text, IMogoVoiceCmdCallBack callBack ) { try { - mVoiceMap.put( text, callBack ); + mSpeakVoiceMap.put( text, callBack ); mVoiceClient.speakDefault( text ); } catch ( Exception e ) { } @@ -122,7 +141,7 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack { */ public void speakTTSVoice( String text, VoicePreemptType type, IMogoVoiceCmdCallBack callBack ) { try { - mVoiceMap.put( text, callBack ); + mSpeakVoiceMap.put( text, callBack ); mVoiceClient.speakTypeText( text, type.getPreemptType() ); } catch ( Exception e ) { } @@ -134,7 +153,7 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack { * @param tts 播报内容 */ public void speakQAndACmd( String tts, IMogoVoiceCmdCallBack callBack ) { - mVoiceMap.put( tts, callBack ); + mQAndAMap.put( tts, callBack ); mVoiceClient.speakTtsAndRegistCmd( tts ); } @@ -146,7 +165,7 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack { * @param cancelCmds 取消命令唤醒词 */ public void speakQAndACmd( String tts, String[] okCmds, String[] cancelCmds, IMogoVoiceCmdCallBack callBack ) { - mVoiceMap.put( tts, callBack ); + mQAndAMap.put( tts, callBack ); mVoiceClient.speakTtsAndRegistCmd( tts, okCmds, cancelCmds ); }