2017-06-28 11 views
0

私のテキストから音声が始まっているときにドロアブルアニメーションを開始し、テキストが終わったときにこれを停止する必要がありますが、私はそのアニメーションを止められません。テキストが音声で終わったときに何かする

コード:

tts = new TextToSpeech(this, new TextToSpeech.OnInitListener() { 

     @Override 
     public void onInit(int status) { 
      if (status == TextToSpeech.SUCCESS) { 
       int result = tts.setLanguage(Locale.US); 

       if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) { 
        Log.e("TTS", "This Language is not supported"); 
       } 

      } else { 
       Log.e("TTS", "Initilization Failed!"); 
      } 
     } 
    }); 

private void speak(String text){ 
    animation.start(); 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     tts.speak(text, TextToSpeech.QUEUE_FLUSH, null, null); 

    }else{ 
     tts.speak(text, TextToSpeech.QUEUE_FLUSH, null); 

    } 
} 

、ここで私のanimationdrawableのxml

<animation-list xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/selected" android:oneshot="false" > 

<item android:drawable="@drawable/face_1a_mini" android:duration="250" /> 

<item android:drawable="@drawable/face_1b_mini" android:duration="250" /> 
<item android:drawable="@drawable/face_1c_mini" android:duration="250" /> 

<item android:drawable="@drawable/face_1d_mini" android:duration="250" /> 
</animation-list> 
+3

こんにちは、ウェルカムツアー(https://stackoverflow.com/tour)にアクセスして、あなたの最初のバッジを獲得する時間を取ってください)、[Minimal、Complete、Verifiableの例](https://stackoverflow.com/help/mcve)を作成する方法、[How to Ask Good Questions](https://stackoverflow.com/help/)をチェックしてください。 How-To-Ask)ので、フィードバックや有用な回答を得る機会が増えます。 – DarkCygnus

+0

[TTSの終了を知る方法](https://stackoverflow.com/questions/4658376/how-to-know-when-tts-is-finished)の可能な複製 –

答えて

0

あなたはwhile(tts.isSpeaking())

例でそれをラップする必要があります。

while(tts.isSpeaking()) 
      { 
       Animation animation1 = 
       AnimationUtils.loadAnimation(this,R.anim.fadein); 
       view.startAnimation(animation1); 
      } 
0

あなたのアニマットを開始発話の開始時にはイオンが発せられ、発話が終了すると停止する。

t1 = new TextToSpeech(this, new TextToSpeech.OnInitListener() { 
       @Override 
       public void onInit(int status) { 
        if (status != TextToSpeech.ERROR) { 
         t1.setLanguage(Locale.UK); 
        t1.setOnUtteranceProgressListener(new UtteranceProgressListener() { 
         @Override 
         public void onStart(String utteranceId) { 

         } 

         @Override 
         public void onDone(String utteranceId) { 
          if(utteranceId.equals("finish")){ 
           finish(); 
          } 
         } 

         @Override 
         public void onError(String utteranceId) { 

         } 
        }); 
         } 

       } 
      }); 
関連する問題