RecognitionListener.onError是否自动运行SpeechRecognizer.cancel?

问题描述

| 由于各种原因,我需要使用原始的
SpeechRecognizer
API,而不是更简单的
RecognizerIntent
(RECOGNIZE_SPEECH)活动。 这意味着,除其他外,我需要自己处理
RecognitionListener.onError()
。 针对某些错误,我只是想重新开始收听。这看起来很简单,但是当我在出错时仅调用
SpeechRecognizer.startListening()
时,有时似乎会触发两个不同的错误
 ERROR/ServerConnectorImpl(619): PrevIoUs session not destroyed
\"concurrent startListening received - ignoring this call\"
这暗示着我应该在尝试再次调用before3 should之前进行一些清理。 如果为真,则意味着在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 由于文档不是很详细地说明哪个错误会取消监听,而哪些不会取消,您是否根据您的经验知道在重新尝试“ 3”之前需要进行清理(以及在何种程度上进行清理)的错误?     

解决方法

不,调用
onError
时不会调用
cancel
。您可以在这里查看源代码。     ,您可以通过destroy()销毁当前会话。您可以再次重新启动它     ,实际上是Femi,某些错误条件确实会使转录服务无法监听(例如,SpeechRecognizer.ERROR_SPEECH_TIMEOUT)。不必调用destroy,只需再次开始侦听即可。