我只想停止我的MediaPlayer文件,我真的不明白为什么这么复杂。我有这种方法来开始音乐:
public void startMusic() {
mediaPlayer1 = MediaPlayer.create(context, R.raw.zenenegy);
mediaPlayer1.start();
mediaPlayer1.setVolume(0.2f, 0.2f);
mediaPlayer1.setLooping(true);
play = true;
}
我想用这种方法停止音乐:
public void stopMusic(){
mediaPlayer1 = MediaPlayer.create(context, R.raw.zenenegy);
if(play){
mediaPlayer1.stop();
mediaPlayer1.reset();
mediaPlayer1.release();
mediaPlayer1 = null;
play = false;
}
当我调用startMusic方法音乐开始时,但是当我调用stopMusic方法时,没有任何反应。如果有人知道如何做,请回复。
答案 0 :(得分:1)
mediaPlayer1 = MediaPlayer.create(context, R.raw.zenenegy);
在这一行上你创建了一个新的MediaPlayer
对象,你丢失了旧的对象引用(它将继续播放直到gc)。使用相同的对象,如下所示
public void stopMusic(){
if (mediaPlayer1 != null){
if(mediaPlayer1.isPlaying()){
mediaPlayer1.stop();
mediaPlayer1.reset();
mediaPlayer1.release();
mediaPlayer1 = null;
}
}
答案 1 :(得分:1)
您将再次创建MediaPlayer
实例并停止新实例。但您需要做的是停止正在运行和播放音频的现有MediaPlayer
实例。更改你的stopMusic() -
public void stopMusic(){
if(play && mediaPlayer1 != null){
mediaPlayer1.stop();
mediaPlayer1.reset();
mediaPlayer1.release();
mediaPlayer1 = null;
play = false;
}