MediaPlayer可以在Activites上播放音乐

时间:2016-03-21 21:19:57

标签: android media-player

我想在各种活动中播放音乐,而我正在使用一个简单的类来实现它。当我调用startMusic()方法时,此类(BackgroundMusic)使用MediaPlayer启动音乐,并在调用stopMusic()方法时停止它。当我只在一个Activity中使用它时,它完美地运行。 OnCreate调用startMusic()方法,onPause调用stopMusic()方法,MediaPlayer以正确的方式运行。当我想转移到另一个活动时,问题就出现了。当我想停止音乐时,它会为mediaplayer.stop()抛出NullPointerExepction。所以看起来应用程序认为我想要停止一个从未启动过的MediaPlayer。我尝试在每个onCreate方法中调用startMusic()方法,但音乐一次又一次地开始,我只想播放一首音乐,当我移动到另一个Activity时,它不会停止并重新开始。是否有可能在课堂上这样做,或者我必须使用服务?我希望你能在课堂上帮助我。

BackgroundMusic

public void startMusic() {
    mediaPlayer1 = MediaPlayer.create(context, R.raw.zenenegy);
    if(palya <= 5 || palya > 15){
        mediaPlayer1.start();
        mediaPlayer1.setVolume(0.2f, 0.2f);
        mediaPlayer1.setLooping(true);
        play = true;
    }
}

public void stopMusic(){
    if(play){
        mediaPlayer1.stop();
        mediaPlayer1.reset();
        mediaPlayer1.release();
        mediaPlayer1 = null;
        play = false;
    }
}

活动

  BackgroundMusic bm;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_fomenu);

    bm = new BackgroundMusic(mentes,this);

    if(sounds){
        bm.startMusic();
    }
}

@Override
protected void onPause() {
    if(sounds){
        bm.stopMusic();
    }
    super.onPause();
}

1 个答案:

答案 0 :(得分:0)

如果我在BackgroundMusic中将媒体播放器设置为静态,则效果非常好。