Eine App zur Spracherkennung, an der ich arbeite, funktioniert auf allen Android-Versionen ab API 8 (Android 2.2).
Aber auf einem Nexus S 4G (Android 4.1.1) wird RecognitionListener einfach für etwa 1 Minute anhalten , dann einen ERROR_SERVER über seine onError () Rückruf.
Wenn innerhalb von 1-2 Sekunden gesprochen wird ( onReadyForSpeech Piepton), wird es sich wie erwartet verhalten.
Was hat sich in JellyBean geändert, das dieses Verhalten erklären könnte?
Was noch wichtiger ist, gibt es eine Möglichkeit, dass es sich wie in den älteren Versionen von Android verhält? (d. h. hören Sie weiter zu und geben Sie dann ERROR_SPEECH_TIMEOUT aus, wenn Sie nicht innerhalb der Standard <10 Sekunden gesprochen werden)
Am Ende habe ich die von @scriptocalypse
vorgeschlagene Lösung verwendetDanke @scriptocalypse!
(Ich hatte nicht die Möglichkeit, die von @HoanNguyen vorgeschlagene Lösung zu versuchen, weil sie einen Dienst implementiert, der das ist über den Rahmen meiner kleinen App hinaus, aber es sieht vielversprechend aus. Danke @HoanNguyen auch.)
Es gibt einen ähnlichen Beitrag hier , der den Vorschlag bietet, einfach zuzuhören erneut beim Empfang des ERROR_TIMEOUT_SPEECH-Ergebnisses.
Tags und Links android speech-recognition android-4.2-jelly-bean