2013-08-28 36 views
5

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).

Trả lời

2

Bạn phải gọi hàm getLanguage() trong onInit(), đôi khi phải mất vài giây để onInit() được gọi.

+1

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

+0

@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() –

+1

@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? –

1

Tôi cũng phát hiện ra lỗi này ngày hôm nay trên một chiếc Asus TF700T chạy Android 4.1.1. Tôi đã cố gắng giải quyết vấn đề bằng cách gọi lại getLanguage() như Eternal Learner được đề xuất trong một nhận xét, nhưng nó vẫn trả về null bất kể tôi đã gọi nó bao nhiêu lần.

Cách giải quyết dễ dàng nhất đối với tôi là từ bỏ trường hợp hiện tại bị hỏng của TextToSpeech và tạo một phiên bản mới. Ví dụ thứ hai dường như hoạt động đáng tin cậy.

Các vấn đề liên quan