首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AudioQueueStart在iOS 7上的后台进程中的-16981失败

AudioQueueStart在iOS 7上的后台进程中的-16981失败
EN

Stack Overflow用户
提问于 2013-09-22 19:24:01
回答 1查看 977关注 0票数 4

在我所有以前版本的操作系统上的iOS应用程序中,我们偶尔记录音频,然后睡觉一段时间,然后再记录,然后永远循环(睡眠是为了维护电池)。即使在应用程序处于后台时,iOS 7也能很好地工作。现在,当应用程序处于后台时,对AudioQueueStart的调用无法开始记录错误:-16981。我似乎无法在文档或网络上找到这个错误代码,如果我将其转换为NSError,它会说“操作无法完成。(OSStatus error -16981.)",这并没有多大帮助。

我有一个理论认为,苹果公司正在填补一个漏洞;这个想法是:除非你是在监视,否则你为什么要从背景过程开始录音?好吧,如果用户同意(签名和付费!),这正是我们正在做的事情。

所以,谁能证实或否认这是预期的,或者我能做些什么。这对我们的应用来说是个杀手。我已经把它作为一个bug提交给苹果,并将尝试在这里报告进展情况。

最新情况:2013年10月3日

虽然之前的答案似乎对此适用了一段时间,但它现在已经停止使用-12985,这是因为另一个应用程序打开了音频。这就是为什么我需要使用混合旗子。

更新:

iOS 7.0.3 (及更高版本)似乎完全解决了这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-24 04:45:17

在播放了不同的音频会话属性之后,我发现-16981错误发生在启用kAudioSessionProperty_OverrideCategoryMixWithOthers时(TRUE)。当我将它设置为'0‘时,AudioQueueStart()就会成功地执行。因此,在启动音频会话之前,请尝试:

代码语言:javascript
复制
UInt32 allowMixing = 0;
status = AudioSessionSetProperty (
                      kAudioSessionProperty_OverrideCategoryMixWithOthers,
                      sizeof (allowMixing),
                      &allowMixing);

显然,这是iOS 7中的行为更改。正如前面提到的,文档没有列出-16981错误代码。

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

https://stackoverflow.com/questions/18947837

复制
相关文章

相似问题

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