RecognitionListener.onError()会自动SpeechRecognizer.cancel()吗?

srf*_*srf 11 android speech-recognition voice-recognition

由于各种原因,我需要使用原始SpeechRecognizerAPI而不是更简单的RecognizerIntent(RECOGNIZE_SPEECH)活动.

这意味着,除其他外,我需要处理RecognitionListener.onError()自己.

为了回应一些错误,我只想重新开始听.这看起来很简单但是当我只是调用SpeechRecognizer.startListening()错误时,这有时似乎会触发两个不同的错误:

 ERROR/ServerConnectorImpl(619): Previous session not destroyed
Run Code Online (Sandbox Code Playgroud)

"concurrent startListening received - ignoring this call"
Run Code Online (Sandbox Code Playgroud)

在尝试SpeechRecognizer.startListening()再次打电话之前,我应该做一些清理工作.

如果这是真的,则意味着在RecognitionListener错误时,不会自动停止和/或取消侦听.

某些错误也可能会停止/取消收听,而其他错误则不会.实际上只有9个SpeechRecognizer错误:

  1. ERROR_NETWORK_TIMEOUT
  2. ERROR_NETWORK
  3. ERROR_AUDIO
  4. ERROR_SERVER
  5. ERROR_CLIENT
  6. ERROR_SPEECH_TIMEOUT
  7. ERROR_NO_MATCH
  8. ERROR_RECOGNIZER_BUSY
  9. ERROR_INSUFFICIENT_PERMISSIONS

由于文档不是非常详细地说明哪个错误取消了哪个错误,哪个没有取消,你是否根据自己的经验知道哪些错误需要在再次尝试之前进行清理(以及在何种程度上)SpeechRecognizer.startListening()

Fem*_*emi 2

不,调用cancel时不会被调用onError你可以在这里查看源码。