Android多媒体-MediaPlayer唤醒锁及音频焦点

本文介绍了Android多媒体组件MediaPlayer的高级用法,包括如何设置唤醒锁以保持播放不中断,以及如何管理音频焦点以优化用户体验。通过设定PowerManager的PARTIAL_WAKE_LOCK,确保音乐播放不受设备休眠影响。同时,建议在开发播放器应用时监听AUDIO_BECOMING_NOISY广播,以便在音频输出源变化时及时响应,防止扬声器意外播放。
摘要由CSDN通过智能技术生成
MediaPlayer的唤醒锁


  一般使用MediaPlayer播放音频流,推荐使用一个Service来承载MediaPlayer,而不是直接在Activity里使用。但是Android系统的功耗设计里,为了节约电池消耗,如果设备处于睡眠状态,系统将试图降低或者关闭一些没设备必须的特性,包括CUP和Wifi硬件,然后,如果是一个后台播放音乐的应用,降低CUP可能导致在后台运行的时候干扰音频的正常播放,关闭Wifi将可能导致网络音频流的获取出现错误。

  为了确保MediaPlayer的承载的服务在系统睡眠的时候继续正常运行下去,Android为我们提供了一种唤醒锁(wake locks)的机制。它可以在系统睡眠的,依然保持锁定硬件的正常工作。

  确保在MediaPlayer运行的时候,哪怕系统睡眠了CUP也能正常运行,需要使用MediaPlayer.setWakeMode()为MediaPlayer设定唤醒锁。下面是setWakMode()的签名:
  setWakeMode(Context context, int mode)

  第一个参数是当前上下文,第二个参数为需要加锁的状态,被设定为int类型的常量,定义在PowerManager这个final类中。PowerManager是专门用来管理Android功率消耗的锁定状态,与锁定CUP相关的,有四种,分别设定CUP、屏幕、键盘等的各种保持唤醒的状态,在这里只需要设定为PARTIAL_WAKE_LOCK即可。

mediaPlayer = new MediaPlayer();
// 设定CUP锁定
mediaPlayer.setWakeMod
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值