2012-08-24 78 views
7

我从我的应用程序使用Android语音识别服务。事实证明,当两个客户端同时尝试发送请求(例如,用户从应用程序启动一个语音搜索,然后在搜索仍处于活动状态时切换到另一个应用程序并启动另一个搜索)时,该服务停止工作。Android语音识别服务是否忙?

有没有办法确定是否有语音识别会话正在进行,以便我可以拒绝启动另一个会话?

回答

1

你可能应该捕捉ERROR_RECOGNIZER_BUSY在onError的处理程序:

@Override 
public void onError(int error) { 
    switch (error) { 
    case SpeechRecognizer.ERROR_RECOGNIZER_BUSY: 
     // do something reasonable 
    … 
    } 
} 

你是最有可能的(?只)将接收到开始监听的请求;不幸的是,我不知道有什么方法可以在没有尝试的情况下测试这种情况(例如,我不认为您可以预先检测到另一个进程的侦听器正在活动以删除麦克风按钮)

(在停止侦听时,如果你试图以某种方式试图杀死另一个进程的侦听器,d只会得到这个错误。)

0

我收到了这个错误(ERROR_RECOGNIZER_BUSY),发现我的意图设置中缺少该包。所以我只是加了这条线,现在它工作:

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
... 
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, context.getPackageName());