首页 文章

Android语音识别服务忙吗?

提问于
浏览
7

我从我的应用程序中使用Android语音识别服务 .

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

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

2 回答

  • 0

    你可能应该在onError处理程序中捕获ERROR_RECOGNIZER_BUSY:

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

    你最有可能(只有?)在开始收听的请求上接收它;不幸的是,我没有意识到有任何方法可以在不尝试的情况下测试这种情况(例如我认为你不能预先检测另一个进程的监听器正在激活以移除麦克风按钮)

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

  • 1

    我收到此错误(ERROR_RECOGNIZER_BUSY)并发现我的意图设置中缺少包 . 所以我刚添加了这一行,现在可以正常工作:

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

相关问题