По различным причинам мне нужно использовать raw 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()