我正在使用Android的语音API来不断获取用户的输入.但是,当发生错误时,这不能很好地工作.
我所做的是在检测错误的方法中重新启动监听器.它有时会工作,但识别器会经常挂起一段时间.特别是在检测到服务器,网络超时和识别器忙碌错误后.这很烦人!
我找到了一些解决这个问题的尝试,但没有一个能为我工作.
你有更好的主意吗?
这是我的代码:
private void startSR(){
intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
//intent.putExtra(RecognizerIntent., value)
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, mContext.getPackageName());
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 10);
Log.d(TAG,"Speech recognition started!");
if (recognizer != null) {
recognizer = null;
mListener = null;
}
Log.d(TAG,"setRecognitionListener");
recognizer = SpeechRecognizer.createSpeechRecognizer(mContext);
mListener = new Listener();
recognizer.setRecognitionListener(mListener);
recognizer.startListening(intent);
}
class Listener implements RecognitionListener{
@Override
public void onBeginningOfSpeech() {
Log.i(TAG, "onBeginningOfSpeech");
mStatus = "Beginning speech";
}
@Override
public void onBufferReceived(byte[] buffer) {
Log.i(TAG, "onBufferReceived");
}
@Override
public void onEndOfSpeech() {
Log.i(TAG, "onEndOfSpeech");
mStatus = "Speech …
Run Code Online (Sandbox Code Playgroud)