In meiner app, nenne ich TextToSpeech.getLanguage() auch nach TextToSpeech (bis LogCat nach ~ 800ms) instanziiert wird, doch es manchmal (nicht immer) return null, trotz der Sprach richtig in die TextToSpeech Systemeinstellungen festgelegt:Warum würde TextToSpeech.getLanguage() * manchmal * null zurückgeben?
System Settings > Language & input >
Text-to-speech output > Google Text-to-speech > English (United Kingdom)
Dies geschieht nur in Jelly Bean (Android 4.1.1). Es passiert nicht in Android 2.2.
Ist dies ein bekannter Android-Fehler? Oder mache ich etwas falsch?
ich instanziiert, BTW, TextToSpeech in meinem app Haupttätigkeit mit:
new TextToSpeech(this, this);
und beide Instanziierung und den Aufruf von TextToSpeech.getLanguage() ist im selben Thread (also die Reihenfolge der Anrufe wird garantiert) hergestellt.
Oder jederzeit nach dem Rückruf zeigt an, dass der TTS-Dienst die Initialisierung beendet hat. – alanv
@alanv du hast absolut recht, er muss ein Flag in onInit() setzen und prüfen, ob dieses Flag wahr ist, bevor getLanguage() aufgerufen wird –
@alanv Ich rufe es tatsächlich zweimal in onInit(): Das erste Mal, es gibt null zurück. Beim zweiten Mal kehrt es zu eng_USA zurück, trotz der Tatsache, dass die Einstellungen klar anzeigen, dass eng_GBR gesetzt ist. Wiederum * manchmal * gibt es bei den ersten und zweiten Aufrufen korrekt den Wert für "eng_GBR" zurück. Sieht wie eine Art Race Condition aus? **Warum passiert dies? Was könnte das möglicherweise erklären? –