2017-10-18 3 views
0

Android TextToSpeechでは、どのように音声が終了したかわかります。私は演説が終わった後にアイコンを変えたい。 Button Onclick Listenerでtts.speak()を宣言しました。私はある時間後にアイコンを変更するためにスレッドのポスト遅延ハンドラを使用しました。しかし、読んでいるテキストは異なる時代に違っています。それはうまくいきませんでした。 CheckThemestart()、ChangeThemeStop()はアイコンを変更する関数です。TextToSpeech API

i)は(OnCreate関数で次のように宣言:

  tts = new TextToSpeech(getContext(), new 
         TextToSpeech.OnInitListener() { 
      @Override 
      public void onInit(int status) { 
      if (status != TextToSpeech.ERROR) { 
       tts.setLanguage(Locale.UK); 
      tts.speak("",TextToSpeech.QUEUE_FLUSH,null); 
      } 

ボタン-onClickListener:

if (!tts.isSpeaking()) { 
        CheckThemeStart(); 
        tts.speak(plainText, TextToSpeech.QUEUE_FLUSH, null); 

        new Handler().postDelayed(new Runnable() { 
         @Override 
         public void run() { 
          //change icon after spoken 
          CheckThemeStop(); 

         } 
        }, 15000); 

       } else { 
        CheckThemeStop(); 
        tts.stop(); 
       } 
+0

setOnUtteranceProgressListenerを試しましたか? –

+0

[TTSがいつ終了したかを知る方法]?(https://stackoverflow.com/questions/4658376/how-to-know-when-tts-is-finished) –

+0

私はsetOnUtterenceProgressListenerで試しました。 tts.setOnUtteranceCompletedListener(新しい TextToSpeech.OnUtteranceCompletedListener(){ \t \t \t \t \t \t \t @Override \t \t \t \t \t \t \t公共:それは働いたdidntの、私は以下の次のtts.speakに()を宣言しましたボイドonUtteranceCompleted(文字列utteranceId){ \t \t \t \t \t \t \t \t CheckThemeStop(); \t \t \t \t \t \t \t} \t \t \t \t \t \t}) –

答えて

1

。 以下はコードスニペットです。

    HashMap<String,String> params=new HashMap<String, String>(); 
        params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,"SpeakID"); 
        tts.speak(plainText, TextToSpeech.QUEUE_FLUSH,params); 
        tts.setOnUtteranceCompletedListener(new TextToSpeech.OnUtteranceCompletedListener() { 
         @Override 
         public void onUtteranceCompleted(String utteranceId) { 
          if(utteranceId.equals("SpeakID")) 
          { 
            CheckThemeStop(); 
          } 
         } 
        }); 
1

あなたはTTS開始時刻と終了時刻とエラー処理のためのUtteranceProgressListenerを登録することができます。我々は一意の文字列IDを持つhasmapパラメータを宣言し、それはあなたがonUtterenceCompletedListener内で宣言するもの()を実行して一致した場合utterence IDを比較し、そのIDを渡すと

tts.setOnUtteranceProgressListener(new UtteranceProgressListener() { 
     @Override 
     public void onStart(String s) { 

     } 

     @Override 
     public void onDone(String s) { 

     } 

     @Override 
     public void onError(String s) { 

     } 
     }); 
+0

IはONSTART中)(話す宣言することでも、これを試みた()とOnDone(のアイコンを変更します)。両方とも動作していません –

+0

ログを記録してデバッグし、呼び出されているかどうか確認してください。そうでなければ、TTSのコード全体を入れてください。 –

+0

@ ReyanshMishra私はデバッガをチェックインしました。それはonStart()、onDone()の中に入っていませんでした。私もsetOnUtterenceCompletedListener()で試してみました。あまりにも働いていない。 –

関連する問題