Por varias razones, necesito usar la API SpeechRecognizer
sin formato en lugar de RecognizerIntent
(RECOGNIZE_SPEECH) activity más fácil.Does RecognitionListener.onError() automáticamente SpeechRecognizer.cancel()?
Eso significa, entre otras cosas, que tengo que manejar RecognitionListener.onError()
mismo.
En respuesta a algunos de los errores, simplemente quiero volver a comenzar a escuchar. Esto parece sencillo, pero cuando acabo de llamar SpeechRecognizer.startListening()
en caso de error, esto a veces parece desencadenar dos errores diferentes:
ERROR/ServerConnectorImpl(619): Previous session not destroyed
y
"concurrent startListening received - ignoring this call"
que apunta que debería haber hecho un poco de limpieza antes de intentar llamar SpeechRecognizer.startListening()
de nuevo.
Si esto es cierto, significa que con un error RecognitionListener, la escucha no se detiene y/o cancela automáticamente.
También es posible que algunos errores detengan/cancelen la escucha, mientras que otros no. En realidad, hay sólo 9 SpeechRecognizer errores:
- ERROR_NETWORK_TIMEOUT
- ERROR_NETWORK
- ERROR_AUDIO
- ERROR_SERVER
- ERROR_CLIENT
- ERROR_SPEECH_TIMEOUT
- ERROR_NO_MATCH
- ERROR_RECOGNIZER_BUSY
- ERROR_INSUFFICIENT_PERMISSIONS
Dado que la documentación no es muy detallada sobre el cual se cancela el error de escuchar y que no lo hace, ¿te sucede saber, basándose en su experiencia, que los errores requieren hacer la limpieza (y en qué medida) antes de intentando SpeechRecognizer.startListening()
nuevamente?
No hay mucha gente que sepa lo suficiente como para responder aquí. Te sugiero que intentes detectar los errores y Log.w en consecuencia en lugar de esperar una respuesta. Debería poder averiguar qué errores lo cierran. – SuhailSherif