如何在后台启动录制iOS音频会话?

时间:2013-05-30 14:38:25

标签: ios core-audio record background-process audioqueueservices

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

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

我收到此错误:

Error: AudioQueueStart failed (-12985)

所以我读到了这一点,但只有建议是将音频会话设置为活动AudioSessionSetActive(YES),但也会因'!cat'错误而失败。显然你可以尝试切换音频会话的活动状态,但这对我没用。

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

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

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

2 个答案:

答案 0 :(得分:4)

事实证明,如果只是将音频多任务标记添加到info.plist并添加适当的重要位置更改API,Apple的SpeakHere示例代码会在后台开始录制音频。您可能会看https://github.com/benvium/SpeakHere获取SpeakHere的更新版本,因为Apple暂时没有更新它。

答案 1 :(得分:0)

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