В моем приложении, я называю TextToSpeech.getLanguage() хорошо после инстанцировании TextToSpeech (~ 800ms согласно LogCat), но это иногда (не всегда) возвращение нулевой, несмотря на язык, установленный должным образом в настройках TextToSpeech системы:Почему TextToSpeech.getLanguage() * иногда * возвращает null?
System Settings > Language & input >
Text-to-speech output > Google Text-to-speech > English (United Kingdom)
Это происходит только в Jelly Bean (Android 4.1.1). Это не происходит в Android 2.2.
Является ли это известной ошибкой Android? Или я делаю что-то неправильно?
Я инстанцирует, кстати, TextToSpeech в основной деятельности моего приложения с:
new TextToSpeech(this, this);
и оба экземпляра и вызова TextToSpeech.getLanguage() выполнены в том же потоке (при этом порядок вызовов гарантируется).
Или в любое время после обратного вызова указывает, что служба TTS завершила инициализацию. – alanv
@alanv вы абсолютно правы, ему нужно установить флаг в true в onInit() и проверить, является ли этот флаг истинным до вызова getLanguage() –
@alanv Я на самом деле вызываю его дважды в onInit(): в первый раз это возвращает null. Во второй раз он возвращает eng_USA, несмотря на то, что настройки показывают, что установлен параметр eng_GBR. Опять же, иногда * он правильно возвращает eng_GBR в первом и втором звонках. Похоже, какое-то состояние гонки? **Почему это происходит? Что может это объяснить? –