出于各种原因,我需要使用原始的 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错误:
- ERROR_NETWORK_TIMEOUT
- ERROR_NETWORK
- ERROR_AUDIO
- ERROR_SERVER
- ERROR_CLIENT
- ERROR_SPEECH_TIMEOUT
- ERROR_NO_MATCH
- ERROR_RECOGNIZER_BUSY
- ERROR_INSUFFICIENT_PERMISSIONS
由于文档没有详细说明哪些错误会取消监听,哪些不会,您是否碰巧知道,根据您的经验,哪些错误需要在之前进行清理(以及在何种程度上) em> 再次尝试 SpeechRecognizer.startListening()
吗?
最佳答案
不,调用onError
时不会调用cancel
。可以看源here .
关于android - RecognitionListener.onError() 是否自动 SpeechRecognizer.cancel()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5849063/