MediaPlayer可在活动中播放音乐



我想在Activities之间播放音乐,我正在使用一个简单的类来实现它。这个类(BackgroundMusic)在我调用startMusic()方法时用MediaPlayer启动音乐,在我调用stopMusic(。当我只在一个"活动"中使用它时,它可以完美地工作。OnCreate调用startMusic()方法,onPause调用stopMusic()方法和MediaPlayer的行为是正确的。当我想转到另一个"活动"时,问题就开始了。当我想停止音乐时,它会为mediaplayer.stop()抛出NullPointerExeption。所以看起来应用程序认为我想停止一个从未启动过的mediaplayer。我尝试在每个onCreate方法中调用startMusic()方法,但音乐一次又一次地开始,我只想播放一首音乐,当我转到另一个"活动"时,这些音乐不会停止并再次开始。有没有可能用类来做到这一点,或者我必须使用Service?我希望你能在课堂上帮助我。

背景音乐

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();
}

如果我在BackgroundMusic中将媒体播放器设置为静态,它将完美工作。

最新更新