Android APP休眠状态下无法联网和播放音频解决方案

https://developer.android.google.cn/guide/topics/media/mediaplayer?hl=zh-cn

使用唤醒锁定

当设计在后台播放媒体内容的应用时,设备可能会在您的 Service 运行时进入休眠状态。由于 Android 系统尝试在设备处于休眠状态时节省电量,因此系统会尝试关闭手机上任何不必要的功能,包括 CPU 和 WLAN 硬件。不过,如果您的 Service 正在播放或流式传输音乐,则您需要防止系统干扰播放。

为了确保您的 Service 在这些情况下能继续运行,您必须使用“唤醒锁定”。唤醒锁定可以告诉系统:您的应用正在使用一些即使在手机处于闲置状态时也应该可用的功能。

注意:您应始终谨慎使用唤醒锁定,并只使其保留必要的时长,因为它们会显著缩短设备的电池续航时间。

为确保 CPU 在 MediaPlayer 播放时继续运行,请在初始化 时调用 setWakeMode() 方法。完成该操作后,MediaPlayer 会在播放时保持指定的锁定状态,并在暂停或停止播放时释放锁定:

    mediaPlayer = new MediaPlayer();// ... other initialization here ...

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

不过,此示例中获取的唤醒锁定只能保证 CPU 保持唤醒状态。如果您使用 WLAN 并通过网络流式传输媒体内容,则您可能也希望保持 WifiLock,该锁定必须手动获取和释放。因此,当您开始使用远程网址准备 MediaPlayer 时,您应创建并获取 WLAN 锁定。例如:

    WifiLock wifiLock = ((WifiManager) getSystemService(Context.WIFI_SERVICE)).createWifiLock(WifiManager.WIFI_MODE_FULL, "mylock");

wifiLock.acquire();

当您暂停或停止媒体内容,或者当您不再需要网络时,应释放该锁定:

    wifiLock.release();

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 后台定位权限 AndroidQ新引入了后台定位权限,是危险权限需要代码动态申请 这个权限必须配合下面两个权限使用,...
    zzj丶阅读 7,416评论 2赞 8
  • Android 9.0 (API 28) 适配 针对所有API级别的应用 电源管理 帮助确保系统资源被提供给最需要...
    lim0610阅读 2,120评论 0赞 1
  • 为了提高文件的规整程度并让用户可以更好地控制他们的文件,Android 10 为应用引入了名为 "分区存储[htt...
    谷歌开发者阅读 1,261评论 0赞 8
  • 渐变的面目拼图要我怎么拼? 我是疲乏了还是投降了? 不是不允许自己坠落, 我没有滴水不进的保护膜。 就是害怕变得面...
    闷热当乘凉阅读 4,624评论 0赞 13
  • 感觉自己有点神经衰弱,总是觉得手机响了;屋外有人走过;每次妈妈不声不响的进房间突然跟我说话,我都会被吓得半死!一整...
    章鱼的拥抱阅读 2,527评论 4赞 5

友情链接更多精彩内容