在我的应用中,我正在运行后台服务,如果其他应用播放音频,我希望我的服务得到通知,例如电话或音乐应用或广播应用正在播放音频。
从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上运行我的应用程序。当我拨打电话或拨打电话时,我的应用会收到有关音频会话中断的通知。它运作良好!
但是当我打开一个播放音频的收音机/音乐应用时,我的应用不会得到通知。为什么?当音乐/广播应用播放音频时,我的应用如何获得通知?
答案 0 :(得分:0)
如docs ::
中所述/ *系统中断音频会话时以及何时通知已注册的侦听器 中断已经结束。检查通知的userInfo字典中的中断类型 - 开始还是结束。 在结束中断通知的情况下,检查userInfo字典中的AVAudioSessionInterruptionOptions 指示是否应恢复音频播放。 * /
所以基本上如果任何其他应用程序试图接管音频会话,那么将发布中断通知。
例如:尝试打开Apple的默认音乐应用程序或尝试录制默认相机应用程序中的视频。他们接管音频会话,你会收到同样的通知。
为了安全起见:: 听取通知的实例应该仍然在内存中存活。