跨活动播放音乐的媒体播放器
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 中将媒体播放器设置为静态,它会完美运行。
我想跨 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 中将媒体播放器设置为静态,它会完美运行。