我只想停止我的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方法时,没有人知道如何做,请响应。
发布于 2016-03-15 22:41:59
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;
}
}发布于 2016-03-15 22:43:20
您将再次创建MediaPlayer实例并停止新实例。但是,您需要做的是停止运行和播放音频的现有MediaPlayer实例。改变你的stopMusic() -
public void stopMusic(){
if(play && mediaPlayer1 != null){
mediaPlayer1.stop();
mediaPlayer1.reset();
mediaPlayer1.release();
mediaPlayer1 = null;
play = false;
}https://stackoverflow.com/questions/36023508
复制相似问题