Android MediaPlayer WakeLock无法运行

时间:2012-02-11 22:51:13

标签: android media-player wakelock

我已经制作了一个基本的广播播放器,除了setWakeMode方法之外,使其播放的代码在下面并且工作正常。当我将手机转为待机状态时,音频最长可播放2分钟,然后开始停止并开始播放。有什么想法吗?

N.B。 radioPlayer是MediaPlayer的一个实例。

public boolean startRadio()
{   
    try
    {
        String url = getString(R.string.radioURL); // Radio url.
        radioPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        radioPlayer.setDataSource(url);
        radioPlayer.prepare(); // might take long! (for buffering, etc)

        radioPlayer.setWakeMode(this.getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);
        radioPlayer.start();
        return true;
    }
    catch(Exception e)
    {
        showAlert(getString(R.string.error), getString(R.string.radioError));
        radioPlayer.release();
        radioPlayer = new MediaPlayer();
        return false;
    }
}

更新:在查看了其他地方的另一个帖子之后,我发现这个问题似乎是HTC手机独有的,事实上,即使没有唤醒锁,我的三星Galaxy Tab仍能存活。有什么想法吗?

4 个答案:

答案 0 :(得分:5)

您的MediaPlayer因为Wifi进入睡眠模式而停止,所以您应该尝试使用WifiLock来阻止它。

答案 1 :(得分:1)

Android开发者Google +页面重新发布[此

小提示:如果您想在用户进入应用程序时保持屏幕开启(例如玩游戏或观看视频),最好的方法是使用以下方法之一:

http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_KEEP_SCREEN_ON

http://developer.android.com/reference/android/view/View.html#setKeepScreenOn(boolean

http://developer.android.com/reference/android/media/MediaPlayer.html#setScreenOnWhilePlaying(boolean

除非必须,否则请勿使用http://developer.android.com/reference/android/os/PowerManager.WakeLock.html,因为这需要您申请WAKE_LOCK权限(因此向用户显示了一项权限,使他们不太可能安装您的应用)。此外,使用以前的API之一允许系统为您管理唤醒锁定,因此您不会有用户离开您的应用程序并且屏幕仍然保持打开的错误。

答案 2 :(得分:-1)

设置keepScreenOn = true

最简单的事情。

  

*在其中一个视图中,找到名为 keepScreenOn 的属性并设置它*   的 真。

就是这样。它就像一个魅力:)

答案 3 :(得分:-1)

首先你应该使用prepareAsync()而不是prepare(),因为缓冲可能需要一段时间,并且使用这种方法,整个工作将在一个单独的线程中完成...... 您还可以添加一些肯定有助于组织代码和方法的侦听器;)。