音频焦点监听,听着似乎是一个很高大上的名字。但其实呢,就是当自己的APP播放时,这里主要是能开后台Service的播放,比如说FM播放时,去打开例如爱奇艺这样的视频播放,你的fm必须停止播放,所需要用到的技术。
但也有几点是我们在用的时候需要注意的问题:
首先,你自己的APP内部,去播放视频和音乐是自己用service就能控制的。
其次,在这篇文章中音频焦点有四个值, AUDIOFOCUS_GAIN(你已获得了音频焦点) 和 AUDIOFOCUS_LOSS (你已经丢失了音频焦点比较长的时间了.你必须停止所有的音频播放.因为预料到你可能很长时间也不能再获音频焦点,所以这里是清理你的资源的好地方.比如,你必须释放MediaPlayer.)作者都已经详细举例了。这里讲下AUDIOFOCUS_LOSS_TRANSIENT (你临时性的丢掉了音频焦点,很快就会重新获得.你必须停止所有的音频播放,但是可以保留你的资源,因为你可能很快就能重新获得焦点.) 这点。这其实是运用很多的一点。就是你的fm播放的时候,去爱奇艺看视频,这个时间段是很短的,所以你的操作可以在这里做,在完全失去焦点的时候是做不到的。至于AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:你临时性的丢掉了音频焦点,但是你被允许继续以低音量播放,而不是完全停止。这一点我还用不到,小伙伴们可以自己去尝试下。
最后,当第三方播放器也使用了这个机制的话,当你的应用获取声音焦点之后,第三方播放器失去焦点,做了暂停处理,即会停止播放。这样就不会出现两个播放器同时播放音乐的情况了。而如果第三方播放器没有经过处理,不管有没有焦点都一直播放,那就没有办法了。