This commit is contained in:
wangcongtao
2020-01-12 15:30:43 +08:00
parent 590ef1fc1f
commit 246f2471a1
115 changed files with 354 additions and 143 deletions

View File

@@ -4,7 +4,10 @@ import android.content.Context;
import com.zhidao.auto.platform.voice.VoiceClient;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
@@ -33,7 +36,8 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
}
private final VoiceClient mVoiceClient;
private Map< String, IMogoVoiceCmdCallBack > mCmdMap = new HashMap<>();
private Map< String, List< IMogoVoiceCmdCallBack > > mCmdMap = new HashMap<>();
private Map< String, IMogoVoiceCmdCallBack > mVoiceMap = new HashMap<>();
private AIAssist( Context context ) {
// private constructor
@@ -43,15 +47,22 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
@Override
public void onCmdSelected( String cmd ) {
final IMogoVoiceCmdCallBack cmdCallBack = mCmdMap.get( cmd );
if ( cmdCallBack != null ) {
cmdCallBack.onCmdSelected( cmd );
if ( !mCmdMap.containsKey( cmd ) ) {
return;
}
final List< IMogoVoiceCmdCallBack > cmdCallBacks = mCmdMap.get( cmd );
Iterator< IMogoVoiceCmdCallBack > iterator = cmdCallBacks.iterator();
while ( iterator.hasNext() ) {
IMogoVoiceCmdCallBack callBack = iterator.next();
if ( callBack != null ) {
callBack.onCmdSelected( cmd );
}
}
}
@Override
public void onCmdAction( String speakText ) {
IMogoVoiceCmdCallBack cmdCallBack = mCmdMap.remove( speakText );
IMogoVoiceCmdCallBack cmdCallBack = mVoiceMap.remove( speakText );
if ( cmdCallBack != null ) {
cmdCallBack.onCmdAction( speakText );
}
@@ -59,7 +70,7 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
@Override
public void onCmdCancel( String speakText ) {
IMogoVoiceCmdCallBack cmdCallBack = mCmdMap.remove( speakText );
IMogoVoiceCmdCallBack cmdCallBack = mVoiceMap.remove( speakText );
if ( cmdCallBack != null ) {
cmdCallBack.onCmdCancel( speakText );
}
@@ -67,7 +78,7 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
@Override
public void onSpeakEnd( String speakText ) {
IMogoVoiceCmdCallBack callBack = mCmdMap.remove( speakText );
IMogoVoiceCmdCallBack callBack = mVoiceMap.remove( speakText );
if ( callBack != null ) {
callBack.onSpeakEnd( speakText );
}
@@ -75,7 +86,7 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
@Override
public void onSpeakSelectTimeOut( String speakText ) {
IMogoVoiceCmdCallBack callBack = mCmdMap.remove( speakText );
IMogoVoiceCmdCallBack callBack = mVoiceMap.remove( speakText );
if ( callBack != null ) {
callBack.onSpeakSelectTimeOut( speakText );
}
@@ -88,7 +99,7 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
*/
public void speakTTSVoice( String text, IMogoVoiceCmdCallBack callBack ) {
try {
mCmdMap.put( text, callBack );
mVoiceMap.put( text, callBack );
mVoiceClient.speakDefault( text );
} catch ( Exception e ) {
}
@@ -103,7 +114,7 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
*/
public void speakTTSVoice( String text, VoicePreemptType type, IMogoVoiceCmdCallBack callBack ) {
try {
mCmdMap.put( text, callBack );
mVoiceMap.put( text, callBack );
mVoiceClient.speakTypeText( text, type.getPreemptType() );
} catch ( Exception e ) {
}
@@ -115,7 +126,7 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
* @param tts 播报内容
*/
public void speakQAndACmd( String tts, IMogoVoiceCmdCallBack callBack ) {
mCmdMap.put( tts, callBack );
mVoiceMap.put( tts, callBack );
mVoiceClient.speakTtsAndRegistCmd( tts );
}
@@ -127,7 +138,7 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
* @param cancelCmds 取消命令唤醒词
*/
public void speakQAndACmd( String tts, String[] okCmds, String[] cancelCmds, IMogoVoiceCmdCallBack callBack ) {
mCmdMap.put( tts, callBack );
mVoiceMap.put( tts, callBack );
mVoiceClient.speakTtsAndRegistCmd( tts, okCmds, cancelCmds );
}
@@ -139,17 +150,56 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
* @param callBack
*/
public void registerUnWakeupCommand( String cmd, String[] cmdWords, IMogoVoiceCmdCallBack callBack ) {
mCmdMap.put( cmd, callBack );
if ( !mCmdMap.containsKey( cmd ) ) {
mCmdMap.put( cmd, new ArrayList< IMogoVoiceCmdCallBack >() );
}
mCmdMap.get( cmd ).add( callBack );
mVoiceClient.registerCustomWakeupCmd( cmd, cmdWords );
}
/**
* 注册免唤醒命令
*
* @param cmd
* @param cmdWords
*/
public void registerUnWakeupCommand( String cmd, String[] cmdWords ) {
mVoiceClient.registerCustomWakeupCmd( cmd, cmdWords );
}
/**
* 注册免唤醒命令回调
*
* @param cmd
* @param callBack
*/
public synchronized void registerUnWakeupCommandCallback( String cmd, IMogoVoiceCmdCallBack callBack ) {
if ( !mCmdMap.containsKey( cmd ) ) {
mCmdMap.put( cmd, new ArrayList< IMogoVoiceCmdCallBack >() );
}
mCmdMap.get( cmd ).add( callBack );
}
/**
* 注销免唤醒命令
*
* @param cmd
*/
public void unregisterUnWakeupCommand( String cmd ) {
public synchronized void unregisterUnWakeupCommand( String cmd ) {
mCmdMap.remove( cmd );
mVoiceClient.unRegisterCustomWakeupCmd( cmd );
}
/**
* 注销免唤醒命令
*
* @param cmd
*/
public synchronized void unregisterUnWakeupCommand( String cmd, IMogoVoiceCmdCallBack callBack ) {
if ( !mCmdMap.containsKey( cmd ) ) {
return;
}
List< IMogoVoiceCmdCallBack > callBacks = mCmdMap.get( cmd );
callBacks.remove( callBack );
}
}