应用程序在后台暂停一段时间后,Android Media Player无法播放

时间:2014-06-06 07:48:32

标签: android bundle android-mediaplayer

有点奇怪,我无法弄清楚发生了什么。

当我启动我的应用程序(游戏)时,音乐开始播放。我有一个按钮可以打开和关闭音乐。设置将保存到共享首选项,以便保留这些设置。

一切正常,您可以按主页键,重新调用应用程序,在执行其他操作时将其保留在后台等。但是,如果应用程序在后台保留一段时间(例如,过夜),然后重新调用。一切都与音乐有关。

您可以进入主菜单,多次点击“音乐开/关”按钮,但什么也得不到。

启动音乐的唯一方法是杀死应用程序(或正确退出,即从主菜单中按“后退”键然后重新启动它,以便从头开始重新创建所有内容。

我已经确认“音乐”对象仍然有效且按下的'音乐开/关'按钮正在注册。

有没有人与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();

1 个答案:

答案 0 :(得分:2)

您需要使用

musicPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);

在设置新MediaPlayer播放器的位置使用此选项。它为MediaPlayer设置唤醒锁定,不让CPU进入睡眠状态,直到你自己没有杀死或停止应用。