音频会话中断通知

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 指示是否应恢复音频播放。 */

所以基本上,如果任何其他应用程序试图接管音频会话,则会发布中断通知。

例如:尝试打开苹果的默认音乐应用或尝试从默认相机应用录制视频。他们接管了音频会话,您将收到相同的通知。

为了安全起见:: 监听通知的实例应该仍然在内存中。

【讨论】:

以上是关于音频会话中断通知的主要内容,如果未能解决你的问题,请参考以下文章

音频会话中断后恢复 twilio 通话

音频会话“闪避”在 iOS 4 中中断...?

在不中断音频的情况下播放视频 - 目标 c

chrome音频分析仪在音频开关上中断

Iphone IOS,从另一个音频会话访问音频数据

Core Audio(音频单元)音频会话和 MPVolumeView