Trong ứng dụng của tôi, tôi gọi TextToSpeech.getLanguage() tốt sau khi instantiating TextToSpeech (~ 800ms theo LogCat), nhưng nó đôi khi (không phải lúc nào) return null, mặc dù ngôn ngữ thiết lập đúng trong cài đặt TextToSpeech của hệ thống:Tại sao TextToSpeech.getLanguage() * đôi khi * trả về null?
System Settings > Language & input >
Text-to-speech output > Google Text-to-speech > English (United Kingdom)
Điều này chỉ xảy ra trong Jelly Bean (Android 4.1.1). Nó không xảy ra trong Android 2.2.
Đây có phải là lỗi Android đã biết không? Hoặc tôi đang làm điều gì sai?
tôi nhanh chóng, BTW, TextToSpeech trong hoạt động chính ứng dụng của tôi với:
new TextToSpeech(this, this);
Và cả hai instantiation và cuộc gọi đến TextToSpeech.getLanguage() được thực hiện trong cùng một thread (như vậy, thứ tự của các cuộc gọi được đảm bảo).
Hoặc bất kỳ lúc nào sau khi gọi lại cho biết dịch vụ TTS đã hoàn tất khởi tạo. – alanv
@alanv bạn hoàn toàn đúng, anh ta cần đặt cờ thành true trong onInit() và kiểm tra xem cờ này có đúng không trước khi gọi getLanguage() –
@alanv Tôi thực sự gọi nó hai lần trong onInit(): Lần đầu tiên, trả về null. Lần thứ hai nó trả về eng_USA, mặc dù thực tế là các thiết lập hiển thị rõ ràng eng_GBR được thiết lập. Một lần nữa, * đôi khi * nó trả lại chính xác eng_GBR trong các cuộc gọi đầu tiên và thứ hai. Hình như một số loại tình trạng chủng tộc? **Tại sao chuyện này đang xảy ra? Điều gì có thể giải thích điều này? –