音频会话中断通知
Posted
技术标签:
【中文标题】音频会话中断通知【英文标题】:notification for audio session interruption 【发布时间】:2016-08-08 14:58:41 【问题描述】:在我的应用程序中,我正在运行一个后台服务,如果另一个应用程序正在播放音频,我希望我的服务能够得到通知。电话或音乐应用或收音机应用正在播放音频。
从 AVAudiosession 类文档看来,AVAudioSessionInterruptionNotification 是我需要的东西。
所以,我尝试了:
-(void)initialization
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleAudioSessionInterruption:)
name:AVAudioSessionInterruptionNotification
object:nil];
-(void)handleAudioSessionInterruption:(NSNotification*)notification
NSLog("Get notified for interruption");
我在 iPhone 上运行我的应用程序。当我拨出/拨入电话时,我的应用会收到音频会话中断的通知。效果很好!
但是当我打开一个播放音频的广播/音乐应用时,我的应用没有收到通知。为什么?当音乐/广播应用正在播放音频时,我的应用如何获得通知?
【问题讨论】:
【参考方案1】:如文档中所述::
/* 系统中断音频会话时会通知注册的听众 中断已经结束。检查通知的 userInfo 字典中的中断类型——开始或结束。 在结束中断通知的情况下,检查 userInfo 字典中的 AVAudioSessionInterruptionOptions 指示是否应恢复音频播放。 */
所以基本上,如果任何其他应用程序试图接管音频会话,则会发布中断通知。
例如:尝试打开苹果的默认音乐应用或尝试从默认相机应用录制视频。他们接管了音频会话,您将收到相同的通知。
为了安全起见:: 监听通知的实例应该仍然在内存中。
【讨论】:
以上是关于音频会话中断通知的主要内容,如果未能解决你的问题,请参考以下文章