2013-01-02 15 views
8

Un'app di riconoscimento vocale basata su cui sto lavorando funziona bene su tutte le versioni di Android a partire dall'API 8 (Android 2.2).RecognitionListener in JellyBean Si blocca se non si parla immediatamente

Ma su un Nexus S 4G (Android 4.1.1), RecognitionListener semplicemente battuta d'arresto per circa 1 minuto, quindi emettere un ERROR_SERVER attraverso il suo onError() callback.

Se si parla entro 1-2 secondi (di quello onReadyForSpeech), si comporterà correttamente come previsto.

Cosa è cambiato in JellyBean che potrebbe spiegare questo comportamento?

Ancora più importante, c'è un modo per farlo comportarsi come nelle versioni precedenti di Android? (vale a dire continuare ad ascoltare, quindi emettere ERROR_SPEECH_TIMEOUT se non parlato all'interno della predefinita 10 secondi)

+6

Questo SNAFU di rottura della compatibilità con le versioni precedenti sembra familiare ... Recentemente ho trovato un post simile, [senza risposta in vista] (http://stackoverflow.com/q/13670378/576267). Forse è legato a [questo] (http://stackoverflow.com/a/11839541/576267)? In bocca al lupo! –

+1

Sì, questo problema è stato introdotto in Jellybean. Dovresti tenere d'occhio il post collegato, dato che ha una taglia di 100 punti. – scriptocalypse

+1

Vedere il mio lavoro in giro, includendo il silenziamento del segnale acustico su http://stackoverflow.com/questions/14940657/android-speech-recognition-as-a-service-on-android-4-1-4-2/14950616#14950616 –

risposta

1

ho finito per usare la soluzione suggerita da @scriptocalypse

Grazie @scriptocalypse!

(non ho avuto la possibilità di provare la soluzione suggerita da @HoanNguyen perché implementa un servizio che è oltre la portata del mio piccolo app, ma sembra promettente. Grazie @HoanNguyen, anche.)

-2

c'è un similar post here che offre la suggestione di semplice ascolto di nuovo fino alla ricezione di risultato ERROR_TIMEOUT_SPEECH.