我有几个响应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 :(得分: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()
如果说话则返回布尔值。