我有一个按钮,单击可播放音频文件。但是问题在于,当两次单击按钮时,文件会播放两次。
Play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "Playing", Toast.LENGTH_SHORT).show();
String audioUrl = "https://eplayer.000webhostapp.com/Sleep Away.mp3";
//set up MediaPlayer
mp=new MediaPlayer();
try {
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.setDataSource(audioUrl);
mp.prepare();
mp.start();
}catch(Exception e){e.printStackTrace();}
}
});
答案 0 :(得分:0)
if(mp.isPlaying())
可能正是您想要的,只是在尝试重新启动媒体播放器之前先检查它是否正在播放。虽然您可能还希望检查并确保其不为null,但如果是则仅创建一个新的。当前,每次按下按钮时都会重新创建它。
答案 1 :(得分:0)
根据本文档,http://developer.android.com/reference/android/media/MediaPlayer.html您应尝试以下操作:
Button stop= (Button)this.findViewById(R.id.button2);
final MediaPlayer mp2 = MediaPlayer.create(this, R.raw.two);
stop.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// If the music is playing
if(mp2.isPlaying())
// Pause the music player
mp2.pause();
// If it's not playing
else
// Resume the music player
mp2.start();
}
});
注意:变量名称可能不同。
答案 2 :(得分:0)
移动此行:
mp=new MediaPlayer();
在侦听器之前,因为每次单击按钮时,都会创建一个新的MediaPlayer对象。
在try块的开头,添加以下代码:
if (mp.isPlaying()) {
mp.stop();
mp.reset();
mp.release();
}
因此MediaPlayer
停止并可以重新启动了。