音频会话中断通知

3
在我的应用程序中,我正在运行后台服务,如果另一个应用程序正在播放音频,例如电话、音乐或广播应用程序正在播放音频,我希望我的服务能够收到通知。
根据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个回答

0

如文档中所述:

/* 注册的监听器将在系统中断音频会话时被通知,以及在中断结束时被通知。检查通知的userInfo字典以获取中断类型 - 开始或结束。在结束中断通知的情况下,检查userInfo字典以获取指示是否应恢复音频播放的AVAudioSessionInterruptionOptions。 */

因此,如果任何其他应用程序试图接管音频会话,则会发布中断通知。

例如:尝试打开苹果的默认音乐应用程序或尝试从默认相机应用程序录制视频。它们接管了音频会话,并会通知您。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接