A speech-recognition based app I am working on works well on all versions of Android starting from API 8 (Android 2.2).
But on a Nexus S 4G (Android 4.1.1), RecognitionListener will simply halt for about 1 minute, then issue an ERROR_SERVER via its onError() callback.
If spoken to within 1-2 seconds (of that onReadyForSpeech bleep), it will behave properly as expected.
What changed in JellyBean that could explain this behavior?
More importantly, is there a way to make it behave like in the older versions of Android? (i.e. keep listening, then issue ERROR_SPEECH_TIMEOUT if not spoken to within the default 10 seconds)
I ended up using the solution suggested by @scriptocalypse
Thank you @scriptocalypse!
(I haven't had the chance to try the solution suggested by @HoanNguyen because it implements a service which is beyond the scope of my tiny app, but it looks promising. Thank you @HoanNguyen, too.)
There is a similar post here that offers the suggestion of simply listening again up on receiving ERROR_TIMEOUT_SPEECH result.