Question

Pour diverses raisons, je dois utiliser l'API SpeechRecognizer brut au lieu du RecognizerIntent plus facile (de RECOGNIZE_SPEECH) activité .

Cela signifie, entre autres choses, que je dois poignée RecognitionListener.onError() moi-même.

En réponse à quelques-unes des erreurs, je veux simplement re-commencer à écouter. Cela semble simple, mais quand je viens d'appeler SpeechRecognizer.startListening() en cas d'erreur, cela semble parfois déclencher deux erreurs différentes:

 ERROR/ServerConnectorImpl(619): Previous session not destroyed

et

"concurrent startListening received - ignoring this call"

Ce qui laisse entendre que je aurais dû faire un nettoyage avant de tenter de nouveau appel SpeechRecognizer.startListening().

Si cela est vrai, cela signifie que sur une erreur de RecognitionListener, l'écoute est pas automatiquement arrêté et / ou annulé.

Il est également possible que certaines erreurs ne se arrêtent / annuler l'écoute, tandis que d'autres ne le font pas. Il y a vraiment seulement 9 erreurs 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

Étant donné que la documentation ne sont pas très détaillées sur l'erreur qui annule l'écoute et qui n'a pas, ne vous connaissez, en fonction de votre expérience, quelles erreurs ont besoin de faire le nettoyage (et dans quelle mesure) avant d'essayer à nouveau SpeechRecognizer.startListening()?

Était-ce utile?

La solution

Non, cancel n'est pas appelée lorsque onError est invoquée. Vous pouvez regarder la source ici

.

Autres conseils

vous pouvez détruire la session en cours par destroy (). Et vous pouvez le redémarrer à nouveau

En fait Femi, certaines des conditions d'erreur ne vous arrêtez le service de transcription d'une écoute (SpeechRecognizer.ERROR_SPEECH_TIMEOUT par exemple). Il ne faut pas appeler détruire, juste startlistening à nouveau.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top