5

私のアプリでは、 TextToSpeech をインスタンス化した後にTextToSpeech.getLanguage()を呼び出します ( LogCat によると ~800ms)が、システムの TextToSpeech 設定で言語が適切に設定されているにもかかわらず、時々 (常にではありません) 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()への呼び出しの両方が同じスレッドで行われます (したがって、呼び出しの順序が保証されます)。

4

2 に答える 2

2

onInit() で getLanguage() を呼び出す必要があります。onInit() が呼び出されるまでに数秒かかる場合があります。

于 2013-08-29T01:45:07.393 に答える
1

今日、Android 4.1.1 を実行している Asus TF700T でもこのバグを発見しました。Eternal Learner がコメントで提案したように、もう一度呼び出すことで問題を解決しようとしgetLanguage()ましたが、何度呼び出しても null が返されます。

私にとって最も簡単な回避策は、現在壊れている TextToSpeech のインスタンスを破棄し、新しいインスタンスを作成することでした。2 番目のインスタンスは確実に機能するようです。

于 2014-10-29T16:11:02.013 に答える