由于各种原因,我需要使用原始的SpeechRecognizer
API而不是更简单的RecognizerIntent
(RECOGNIZE_SPEECH)activity。
这意味着,除其他外,我需要自己处理RecognitionListener.onError()
。
针对某些错误,我只是想重新开始收听。这看起来很简单,但是当我仅在出错时调用SpeechRecognizer.startListening()
时,有时似乎会触发两个不同的错误:
ERROR/ServerConnectorImpl(619): Previous session not destroyed
和
"concurrent startListening received - ignoring this call"
这暗示我应该在尝试再次调用
SpeechRecognizer.startListening()
之前进行一些清理。如果为真,则意味着在RecognitionListener错误发生时,监听不会自动停止和/或取消。
某些错误也可能会停止/取消监听,而其他错误则不会。实际上只有9个SpeechRecognizer错误:
由于该文档不是很详细地说明哪个错误会取消监听,而哪些不会取消监听,您是否会根据您的经验而知道,哪些错误需要进行清理(以及达到何种程度)才能再次尝试
SpeechRecognizer.startListening()
? 最佳答案
不,在调用cancel
时不会调用onError
。您可以查看源here。