有点奇怪,我无法弄清楚发生了什么。
当我启动我的应用程序(游戏)时,音乐开始播放。我有一个按钮可以打开和关闭音乐。设置将保存到共享首选项,以便保留这些设置。
一切正常,您可以按主页键,重新调用应用程序,在执行其他操作时将其保留在后台等。但是,如果应用程序在后台保留一段时间(例如,过夜),然后重新调用。一切都与音乐有关。
您可以进入主菜单,多次点击“音乐开/关”按钮,但什么也得不到。
启动音乐的唯一方法是杀死应用程序(或正确退出,即从主菜单中按“后退”键然后重新启动它,以便从头开始重新创建所有内容。
我已经确认“音乐”对象仍然有效且按下的'音乐开/关'按钮正在注册。
有没有人与Media Player有类似的问题?我无法弄明白我是(或不做)导致这种情况。
代码
这是我的媒体播放器类:
public class MusicMan implements MediaPlayer.OnPreparedListener {
MediaPlayer musicPlayer;
MusicMan(Context myContext){
musicPlayer = MediaPlayer.create(myContext, R.raw.music);
musicPlayer.setVolume(.6f, .6f);
}
public void listener(){};
public void start(){
musicPlayer.setLooping(true);
musicPlayer.start();
}
public void stop(){
musicPlayer.stop();
}
public void pause(){
musicPlayer.pause();
}
public int getPos(){
return musicPlayer.getCurrentPosition();
}
public void skipTo(int position){
musicPlayer.seekTo(position);
}
@Override
public void onPrepared(MediaPlayer arg0) {
}
}
然后我只是像这样装箱:
MusicMan music = new MusicMan(view.getContext());
然后我只使用MusicMan类中的方法开始和停止音乐:
music.start();
答案 0 :(得分:2)
您需要使用
musicPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);
在设置新MediaPlayer播放器的位置使用此选项。它为MediaPlayer设置唤醒锁定,不让CPU进入睡眠状态,直到你自己没有杀死或停止应用。