opt
This commit is contained in:
@@ -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 );
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user