使用WakeLock保持流播放

| 我在运行Service的MediaPlayer中正在播放来自URL的音频(流)。到目前为止,它似乎运行良好,甚至在我将手机置于待机状态时仍可以继续播放。 我目前没有唤醒锁。我的问题是: 在我的情况下,实际上是否需要获取唤醒锁? 如果有必要,我应该获取哪种类型的唤醒锁? 是的,这是唤醒锁的合法用例,因为我的用户明确希望音频继续播放。     
已邀请:
        默认情况下,MediaPlayer不会自动为您执行此操作。 但是,您不必调用唤醒锁,而是可以调用一种方法来告诉它在播放时为您持有一个: http://developer.android.com/reference/android/media/MediaPlayer.html#setWakeMode(android.content.Context,int) 请注意,如文档所述,仍然是您的应用持有唤醒锁,因此要使用此功能,您需要请求唤醒锁权限。     
         在待机状态下,观看电话约五分钟。如果继续播放,则不需要唤醒锁;它可能表明MediaPlayer实例已经有一个。在Android中,用户闲置约两分钟后,任何没有唤醒锁的非必需内容都会被暂停;五分钟应消除有关两分钟计时器的任何疑问。 尝试部分唤醒锁。它会让您的用户听到音频,因为处理器将保持“清醒”状态。但是,由于允许屏幕进入睡眠状态,因此在显示图像时不会浪费电池。这可能就是您想要的。 编辑:如果您想在安全方面发挥作用,那么您想使用WakeLock。这样,如果MediaPlayer曾经更改过并且在电话暂停时允许您进入睡眠状态,则程序仍然可以正常工作。添加WakeLock确实没有什么可失去的,只要您不再需要它时就正确地释放它即可。如果您不这样做,只会消耗比您预期更多的电量,在最坏的情况下,您将立即看到错误消息,指示您在应用程序终止时未释放锁。添加WakeLock(虽然有可能是多余的)是一个好习惯,因为它使您的应用程序对依赖于它的软件的更改更加健壮。     
        您可能需要WakeLock,因为您不能保证PowerManager在播放期间不会踢入并进入睡眠状态。 PARTIAL_WAKE_LOCK将确保使用最低水平的电池消耗(CPU开启;屏幕/键盘关闭)。您始终可以测试电池电量耗尽的影响,但是我怀疑它会很大,因为无论如何必须打开CPU才能播放音乐。这种方法将确保无论使用哪种手机(或所述手机上的设置),都不会从进入睡眠状态的CPU上切断播放。     
        我认为您不需要WakeLock。刚开始使用MediaPlayer时,我很快发现它不会在待机状态下关闭。我花了一些时间才能克服这个问题,但是我从未见过待机导致流媒体MediaPlayer对象死亡的情况。     
        
  mediaPlayer.setScreenOnWhilePlaying(true);
该文件说: \“这是可能的,而不是'setWakeMode \'的首选方法,因为它不需要应用程序具有低级唤醒锁访问权限。\”     
        您不需要唤醒锁。如果您使用WAKE LOCK,则将迫使用户保持屏幕打开状态,我个人更喜欢在播放媒体时关闭屏幕。 长期运行服务的示例在这里     

要回复问题请先登录注册