1

我制作了一个基本的收音机播放器,使其播放的代码如下,除了 setWakeMode 方法外,它运行良好。当我将手机置于待机状态时,音频将正常播放长达 2 分钟,然后开始停止和启动。有任何想法吗?

NB 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

4 回答 4

6

您的 MediaPlayer 停止,因为 Wifi 进入睡眠模式,所以您应该尝试使用WifiLock来防止这种情况。

于 2013-06-13T07:30:18.187 回答
1

Android 开发者谷歌+页面重新发布[这个

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

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 之一,系统可以为您管理唤醒锁定,因此您不会出现用户离开您的应用程序并且屏幕仍保持打开状态的错误。

于 2012-02-11T22:56:34.107 回答
-1

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

于 2015-04-30T09:56:04.933 回答
-1

设置 keepScreenOn=true

最简单的事情。

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

而已。它就像一个魅力:)

于 2013-01-17T08:23:32.697 回答