Doc*_*Doc 12 audio interruption ios avaudiosession
所以在我的应用程序中,在iOS 6上运行,一切似乎都可以正常使用音频.我使用旧的C API格式来捕获使用回调的中断; 通过设置:AudioSessionInitialize(NULL, NULL, interruptionListenerCallback, (__bridge void *)self)它很棒.但是,使用iOS 7 SDK时,似乎在设备接到呼叫或闹钟响起时,我的中断回调永远不会被调用.
经过一番环顾,我听说旧的C api已被弃用,你应该转向更新的AVAudioSession功能.更多阅读显示AVAudioSession委托已被弃用,您应该使用NSNotificationfor AVAudioSessionInterruptionNotification来捕获中断并做任何需要完成的事情.
对我来说,似乎这个通知从未被实际触发,因此我从未得到适当的中断,然后在通话结束后打破了我的所有音频内容.
我这样注册通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(AudioInterruption:) name:AVAudioSessionInterruptionNotification object:nil];
Run Code Online (Sandbox Code Playgroud)
现在,该AudioInterruption:函数只是记录它被触发了.日志和任何断点都没有触发.
要清楚,最初音频播放和录制工作正常.发生中断时(例如来电或闹钟),不会触发中断通知.如果需要更多周围代码,请告诉我.
您的应用程序中是否有AVCaptureSession实例?
如果是这种情况,我会建议我收到的链接问题的答案相同:
尝试将NO设置为AVCaptureSession实例的usesApplicationAudioSession属性.
它是iOS 7以来的一个属性.在之前的iOS版本中,每个AVCaptureSession都使用了私有的AVAudioSession.从iOS 7开始,Capture Sessions使用共享应用程序的AVAudioSession.
该usesApplicationAudioSession属性是默认启用的,所以如果你想保留旧的行为,你必须将其禁用,设置NO.
我希望这对你也有用.