由于各种原因,我需要使用原始SpeechRecognizer
API 而不是更简单的RecognizerIntent
(RECOGNIZE_SPEECH)活动。
这意味着,除此之外,我需要处理好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
由于文档没有非常详细地说明哪些错误会取消收听,哪些不会,根据您的经验,您是否碰巧知道哪些错误需要在再次尝试之前SpeechRecognizer.startListening()
进行清理(以及在何种程度上) ?