Android Speechrecognizer stopListening()无效?

时间:2016-06-22 09:33:01

标签: android speech-recognition

在调用startListening()之后,在Android上使用SpeechRecognizer.stopListening()时遇到问题。它似乎没有任何效果。继续处理音频,并返回识别结果,就像没有调用stopListening()一样。

还有其他人有过类似的问题吗?我可能做错了吗?

可能的线索:在调用stopListening()之后,立即使用SpeechRecognizer.ERROR_CLIENT调用onError()。也许这意味着停止调用失败了?

在检测到语音开始之前或正在处理语音时调用stopListening()时,都会出现问题。

startListening()和stopListening()都是从主线程调用的。

在至少两个不同设备上使用Android 5和6进行测试。

1 个答案:

答案 0 :(得分:3)

您的解释中的

stopListening()表现得与预期一致。此调用不会阻止识别器在此之前处理语音输入。

预计它会onError()SpeechRecognizer.ERROR_CLIENT通话。如果您不希望将此处理为“错误”,那么在代码中您调用stopListening()的位置添加一个简单的布尔值:

deliberatelyCalledStop = true;

然后在错误处理中,您将知道这是否已被抛出作为预期结果,您可以忽略它。

为了关闭识别服务并忽略到目前为止检测到的所有语音输入,您需要调用:

recognizer.cancel();
recognizer.destroy(); // if you want to destroy it

These methods将达到你想要的效果。

请注意,在撰写本文时,Google的认可服务存在一些相当大的错误。

我建议您阅读我的回答to this question,然后查看我已经报告过的the gist of the bugs