首页 关于 微信公众号
欢迎关注我的微信公众号

AVAudioSession(4):响应音频中断事件

本文内容主要来源于 Responding to Interruptions

当一个音频中断到来时,会关闭你的 Audio Session,这通常就意味着停止或暂停你的音频播放。产生中断通常是因为另一个和你的应用存在竞争性音频行为的应用此时被激活,而这个应用设置的 Category 不支持 mix 你的音频。正确的处理音频中断事件能够让你的应用提供给用户更好的体验。

当用户电话响起的时候,你的应用还会因中断而被挂起。当电话结束,你的应用才会被继续运行。这时你的 Audio Session 需要被重新激活。

音频中断处理技术

你可以通过监听音频中断相关的通知 AVAudioSessionInterruptionNotification 来处理中断事件。

当音频中断发生时,你应该做的事情大致如下:

根据使用的音频技术不同,相应的处理中断的技术也会有所差别,大致如下:

中断的生命周期

音频中断发生的过程大致如下图所示:

image

需要注意的是,有一个中断开始消息不一定会有一个中断结束消息,这就意味着你在中断结束的回调里的处理逻辑可能会没有被执行到。所以你的应用需要关注当切到前台运行状态时或者用户点击了播放按钮时,是不是需要重新激活你的 Audio Session,因为有可能这时候你的 Audio Session 还因为一次有开始通知没结束通知的中断给关闭着呢。

Blog

Opinion

Project