gpt4 book ai didi

ios - AVAudioSession 中断

转载 作者:技术小花猫 更新时间:2023-10-29 10:36:55 33 4
gpt4 key购买 nike

所以在我的应用程序中,在 iOS 6 上运行,一切似乎都与音频一起工作。我使用旧的 C API 格式通过回调捕获中断;通过以下方式设置:AudioSessionInitialize(NULL, NULL, interruptionListenerCallback, (__bridge void *)self) 非常棒。虽然使用 iOS 7 SDK,但当设备收到调用或警报响起时,我的中断回调似乎永远不会被调用。

环顾四周后,我听说旧的 C api 已被弃用,您应该转向更新的 AVAudioSession 函数。更多阅读表明 AVAudioSession 委托(delegate)已被弃用,您应该使用 NSNotificationAVAudioSessionInterruptionNotification 捕获中断并执行任何需要完成的操作。

对我来说,这个通知似乎从来没有真正触发过,因此我从来没有被正确打断过,然后在通话结束后打断了我所有的音频内容。

我这样注册通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(AudioInterruption:) name:AVAudioSessionInterruptionNotification object:nil];

现在,AudioInterruption: 函数只是记录它被触发了。日志和任何断点均未触发。

需要说明的是,最初的音频播放和录制工作正常。当发生中断时(例如来电或闹钟),不会触发中断通知。如果需要更多周边代码,请告诉我。

最佳答案

您的应用程序中是否有AVCaptureSession 实例?
如果是这样的话,我会建议我对我的链接问题收到的相同答案:
尝试将 NO 设置为 usesApplicationAudioSession 您的 AVCaptureSession 实例的属性。
这是自 iOS 7 起可用的属性。在以前的 iOS 版本中,每个 AVCaptureSession 都使用私有(private) AVAudioSession。从 iOS 7 开始,Capture Session 使用共享应用程序的 AVAudioSession。
usesApplicationAudioSession 属性在默认情况下处于启用状态,因此如果您想保留旧行为,则必须通过设置 NO 来禁用它。

我希望这对你也有用。

关于ios - AVAudioSession 中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19844005/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com