在注册下一个onClick之前,等待文本到语音和音乐完成

时间:2016-07-30 16:32:27

标签: java android

我有几个响应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;

2 个答案:

答案 0 :(得分:0)

似乎你必须在onClick()中调用tts.shutdown()然后创建另一个tts对象。

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

   /* your code */
}

答案 1 :(得分:0)

你可以把if语句检查tts对象是否正在播放,tts.isSpeaking()如果说话则返回布尔值。