2017-03-01 7 views
0

私は、TTS(TTS)を使用して発言する必要のあるAndroidアプリを作成しています。画面がロックされているとAndroid TTS音声合成エラーが発生する

tts.speak("Some text", TextToSpeech.QUEUE_ADD, null, UTT_ID); 

これは、画面がオンのときに完全に正常に機能します。

画面がオフの場合、アクティビティは画面を起動時に起動し、意図的に表示します。これは、

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | 
       WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | 
       WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

で実行されます。これも問題なく動作します。

ただし、アクティビティが作成され、画面がオフになっているときに表示されると、テキスト読み上げはサウンドを作成しません。

は、ログを見ると、私は

TTS  : synthesizeWithoutLoadingVoice() failed 

は、このエラーメッセージが何も与えなかっグーグルでご覧ください。 誰かが私がここで間違ったことを知っていますか?

+0

以下の回答がうまくいかない場合は、コードを投稿する必要があります – brandall

答えて

1

あなたのアプリのonResume関数でTTSを作り直してみてください。つまり、TTSのinit()関数をonResume()に移動します。

+0

ありがとうございます!これは機能します。 実際、onResumeまたはonCreate(私の使用の場合)でTTSエンジンを初期化すると問題なく動作します。 以前の問題は、シングルトンのTTSオブジェクトを作成して、多くのアクティビティで共有できるということでした。どうやらそのオブジェクトが無効になったか、またはいくつかのアクティビティが一時停止されたときに悪い状態になったようです。 基本的に、新しいアクティビティがフォアグラウンドに入るたびに、TTSエンジンを再初期化するだけで済みます。 – thammaknot

関連する問題