2016-07-30 2 views
0

У меня есть несколько кнопок, которые отвечают на onClick. Когда кнопки нажимаются, это вызывает текст в речь, в котором указано название кнопки и какая-то музыка, соответствующая кнопке. Однако приложение глючит, потому что вы можете нажать другую кнопку, пока музыка и текст в речь для одной кнопки все еще работают. Есть ли способ дождаться, когда текст в речь и музыка перестанут играть, прежде чем разрешить другой щелчок? Любая помощь будет принята с благодарностью! Большое спасибо!!!Подождите, пока текст в речь и музыка закончится, прежде чем регистрироваться в следующем окне.

public void onClick(View view) { 

     Resources res = getResources(); 
     Button btn = (Button) view; 
     final TextView tv = (TextView) findViewById(R.id.color_text); 
     textViewString = tv.getText().toString(); 

     switch (view.getId()) { 
      case R.id.green_button: 

       String greenString = res.getString(R.string.Green); 
       tv.setText(greenString); 
       if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) { 
        tts.speak(greenString, TextToSpeech.QUEUE_FLUSH, null); 
       } else { 
        tts.speak(greenString, TextToSpeech.QUEUE_FLUSH, null, null); 
       } 
       MediaPlayer green = MediaPlayer.create(this, R.raw.green); 
       green.start(); 

       break; 

      case R.id.red_button: 

       String redString = res.getString(R.string.Red); 
       tv.setText(redString); 
       if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) { 
        tts.speak(redString, TextToSpeech.QUEUE_FLUSH, null); 
       } else { 
        tts.speak(redString, TextToSpeech.QUEUE_FLUSH, null, null); 
       } 
       MediaPlayer red = MediaPlayer.create(this, R.raw.red); 
       red.start(); 

       break; 

ответ

0

кажется, что вы должны вызвать tts.shutdown() в OnClick(), а затем создать другой TTS объект.

public void onClick(View view) { 
    tts.shutdown(); 
    tts = new TextToSpeech(context, listener) 

    /* your code */ 
} 
0

можно поставить, если заявление, которое проверяет, если TTS объект играет, tts.isSpeaking() возвратный логическое значение ИСТИНА, если говорить.

Смежные вопросы