8

我正在尝试kAudioSessionCategory_RecordAudio在我的应用程序在后台而不是最前沿唤醒之后启动一个(例如在重大位置更改期间,我已经看到商店中的其他应用程序这样做,所以我知道这是可能的)。但是,每当我尝试像这样开始音频会话时

CheckError(AudioQueueStart(queue, NULL), "AudioQueueStart failed");

我收到此错误:

Error: AudioQueueStart failed (-12985)

因此,我阅读了该内容,但唯一的建议是将音频会话设置为活动状态AudioSessionSetActive(YES),但这也因'!cat'错误而失败。显然您可以尝试切换音频会话的活动状态,但这对我不起作用。

我设置了音频背景模式 plist 标志并在我的应用程序位于最前端时开始音频会话,然后切换到另一个应用程序工作(显示红色条表示它正在录制)。它只是在应用程序不在最前沿时开始音频会话是问题所在。

有没有人有一个示例项目,我可以看看在后台开始录制音频会话?

注意:我正在寻找一种使用音频队列的解决方案,因为我需要缓冲区中的音频,而不是文件。

4

2 回答 2

4

事实证明,如果您只需将音频多任务标志添加到 info.plist 并添加适当的重要位置更改 API,Apple 的 SpeakHere 示例代码经过一些修改就会开始在后台录制音频。您可能会在https://github.com/benvium/SpeakHere上查看 SpeakHere 的更新版本,因为 Apple 已经有一段时间没有更新它了。

于 2013-06-03T14:04:45.810 回答
0

目前,iOS 不允许在后台启动音频会话或录音。应用程序必须在前台启动音频,但可以在需要时丢弃任何录制的音频数据,当使用适当的后台模式和音频会话时,这些数据可能在后台。

于 2013-05-30T22:20:51.943 回答