跨活动播放音乐的媒体播放器

MediaPlayer to play music across Activites

我想跨 Activities 播放音乐,我正在使用一个简单的 class 来实现它。当我调用 startMusic() 方法时,此 class ( BackgroundMusic ) 使用 MediaPlayer 启动音乐,并在我调用 stopMusic() 方法时停止音乐。当我只在一个 Activity 中使用它时,它工作得很好。 OnCreate 调用 startMusic() 方法,onPause 调用 stopMusic() 方法,MediaPlayer 以正确的方式运行。当我想搬到另一个 Activity 时,问题就出现了。当我想停止播放音乐时,它会向我抛出 mediaplayer.stop() 的 NullPointerExepction。所以看起来应用程序认为我想停止一个从未启动的 MediaPlayer。我试图在每个 onCreate 方法中调用 startMusic() 方法,但音乐一次又一次地开始,我只想播放一种音乐,当我移动到另一种 Activity 时,它不会停止并再次开始。是否可以使用 class 来做到这一点,或者我必须使用服务?我希望你能用 class 帮助我。

背景音乐

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

一个Activity

  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 中将媒体播放器设置为静态,它会完美运行。