Nella mia app, chiamo TextToSpeech.getLanguage() bene dopo un'istanza TextToSpeech (~ 800ms secondo LogCat), eppure volte (non sempre) null ritorno, nonostante la lingua impostata correttamente nelle impostazioni di sintesi vocale del sistema:Perché TextToSpeech.getLanguage() * a volte * restituisce null?
System Settings > Language & input >
Text-to-speech output > Google Text-to-speech > English (United Kingdom)
Questo succede solo in Jelly Bean (Android 4.1.1). Non succede in Android 2.2.
Si tratta di un bug Android noto? O sto facendo qualcosa di sbagliato?
I istanziare BTW, TextToSpeech in attività principale della mia app con:
new TextToSpeech(this, this);
Ed entrambi esemplificazione e la chiamata alla TextToSpeech.getLanguage() sono realizzati nello stesso thread (così ordine di chiamate è garantita).
O in qualsiasi momento dopo la richiamata indica che il servizio TTS ha terminato l'inizializzazione. – alanv
@alanv hai assolutamente ragione, ha bisogno di impostare un flag su true in onInit() e controllare se questo flag è true prima di chiamare getLanguage() –
@alanv In realtà lo chiamo due volte in onInit(): la prima volta, restituisce null. La seconda volta restituisce eng_USA, nonostante il fatto che le impostazioni mostrino chiaramente eng_GBR. Di nuovo, * a volte * restituisce eng_GBR correttamente nella prima e nella seconda chiamata. Sembra una specie di condizione di gara? **Perché sta succedendo? Cosa potrebbe spiegare questo? –