【问题标题】:Android Media Player doesn't play after app has been left for a while in the background应用程序在后台停留一段时间后,Android Media Player 无法播放
【发布时间】:2014-12-25 21:34:09
【问题描述】:

这有点奇怪,我不知道发生了什么。

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

一切正常,您可以按 home 键,重新调用应用程序,在做其他事情时将其留在后台等。但是,如果应用程序在后台停留一段时间(例如,过夜),然后重新调用。除了音乐,一切都正常。

您可以进入主菜单,多次点击“音乐开/关”按钮,但一无所获。

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

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

有没有人对媒体播放器有类似的问题?我无法弄清楚我正在(或没有在做什么)导致这种情况。

代码

这是我的媒体播放器类:

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();

【问题讨论】:

  • 当你启动你的应用程序并在点击主页按钮后打开音乐仍然播放音乐?
  • 嗨@Abdellah,是的,但前提是应用程序不会停留太久。如果我按回家,然后离开它很长一段时间(比如过夜或至少几个小时),然后回到它,没有音乐,我必须杀死应用程序并从头开始重新启动它。
  • 所以你必须使用服务
  • @Abdellah,请详细说明,我为什么要使用服务?我不希望应用程序在后台播放音乐。我的理解是,如果您确实希望它继续在后台播放(当您的应用不在屏幕上时),您只需要使用该服务。
  • 你的意思是:如果应用程序在后台停留了一段时间..所以你需要在应用程序在后台时播放音乐

标签: android bundle android-mediaplayer


【解决方案1】:

你需要使用

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

在您设置新的 MediaPlayer 播放器时使用它。它将唤醒锁定设置为 MediaPlayer,并且在您自己没有杀死或停止应用程序之前不要让 CPU 进入睡眠状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    相关资源
    最近更新 更多