首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVAudioSession中断

AVAudioSession中断
EN

Stack Overflow用户
提问于 2013-11-08 02:39:03
回答 3查看 10.6K关注 0票数 12

因此,在我的iOS 6上运行的应用程序中,音频似乎一切正常。我使用旧的catch格式通过回调来捕获中断;通过:AudioSessionInitialize(NULL, NULL, interruptionListenerCallback, (__bridge void *)self)进行设置,效果非常好。不过,使用iOS 7SDK时,我的中断回调似乎永远不会在设备接到呼叫或闹钟响起时调用。

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

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

我按如下方式注册通知:

代码语言:javascript
复制
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(AudioInterruption:) name:AVAudioSessionInterruptionNotification object:nil];

现在,AudioInterruption:函数只是简单地记录它被触发了。日志和任何断点都没有触发。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-18 05:55:50

您的应用程序中是否有AVCaptureSession实例?

如果是这样的话,我会建议我在链接的问题上得到相同的答案:

尝试将AVCaptureSession实例的属性设置为NO。

这是从iOS 7开始提供的属性。在以前的iOS版本中,每个AVCaptureSession都使用一个私有AVAudioSession。从iOS 7开始,捕获会话使用共享应用程序的AVAudioSession。

默认情况下,属性处于启用状态,因此,如果要保留旧行为,则必须通过设置NO将其禁用。

我希望这也能为你工作。

票数 9
EN

Stack Overflow用户

发布于 2013-12-21 20:56:44

您没有在addObserver调用中将AVAudioSession实例作为最后一个参数传递。

试试这个:

代码语言:javascript
复制
AVAudioSession *session = [AVAudioSession sharedInstance];

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(AudioInterruption:)
                                             name:AVAudioSessionInterruptionNotification
                                           object:session];
票数 2
EN

Stack Overflow用户

发布于 2016-12-01 01:20:09

对我来说,激活音频会话并在用户实际按下播放按钮时添加观察者已经解决了这个问题;通知已触发。我想苹果公司的医生说了一些关于here的事情。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19844005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档