停止MediaPlayer文件

时间:2016-03-15 22:31:51

标签: android android-mediaplayer

我只想停止我的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方法时,没有任何反应。如果有人知道如何做,请回复。

2 个答案:

答案 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;
    }