2

我在 Android 应用程序中使用 MediaPlayer 对象来播放 Shoutcast Internet Radio Streams,但在长时间播放流时遇到问题

问题是 MediaPlayer 在 20-30 分钟后突然停止播放流。MediaPlayer 侦听器中未捕获任何错误。在各个论坛搜索了很多,这似乎是手机进入睡眠模式的问题

  1. 但是,我怎么知道手机什么时候进入睡眠状态?
  2. 我在某处读到,MediaPlayer 需要获取唤醒锁,以便 CPU 永远不会进入睡眠状态。那是问题吗?如果是,我如何获得唤醒锁?
  3. 通过 WiFi 收听时,问题似乎更多。WiFi上是否也需要一些唤醒锁?

我已经挣扎了很长时间。有人可以帮忙吗?

4

1 回答 1

3

添加到 Manifest.xml:

<uses-permission android:name="android.permission.DEVICE_POWER"></uses-permission>

在您播放流的班级中:

PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
wl.acquire();        
{       
    // Your code here   
    // in this block CPU Will not go to the sleep mode   
} 
wl.release();

更多信息在这里http://developer.android.com/reference/android/os/PowerManager.html

于 2012-03-10T10:53:00.700 回答