我想在各种活动中播放音乐,而我正在使用一个简单的类来实现它。当我调用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();
}
答案 0 :(得分:0)
如果我在BackgroundMusic中将媒体播放器设置为静态,则效果非常好。