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

9

我试图在我的应用程序被唤醒但不在前台时(比如在重大位置更改期间),启动kAudioSessionCategory_RecordAudio,我已经看到了商店中的其他应用程序这样做,所以我知道这是可能的。然而,每当我尝试像这样启动音频会话

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

我会得到这个错误:

Error: AudioQueueStart failed (-12985)

所以我查阅了相关资料,但唯一的建议是将音频会话设置为活动状态AudioSessionSetActive(YES),但这也失败了,并显示一个'!cat'错误。显然,您可以尝试切换音频会话的活动状态,但这对我没有起作用。

我已经设置了音频后台模式Plist标志,并且在我的应用程序处于前台时启动音频会话,然后切换到另一个应用程序是可以工作的(显示它正在录制的红色条)。只是在应用程序不在前台时启动音频会话是个问题。

有没有人有一个演示在后台启动录音音频会话的示例项目

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

2个回答

4
如果您在info.plist中添加音频多任务标志并添加适当的重大位置更改API,则可以通过对Apple的SpeakHere示例代码进行一些修改来开始在后台记录音频。您可以查看更新后的SpeakHere版本,以便获得更好的使用体验,因为苹果公司已经很长时间没有更新它了。具体信息请见https://github.com/benvium/SpeakHere

2
音频多任务标志是什么?请解释一下。 - nr5

0

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


2
如果像GPS导航这样的应用程序在某种情况下没有播放方向,然后用户切换到音乐应用程序并播放音乐,直到GPS导航应用程序再次播放新方向,那么它是如何工作的?我认为,如果您可以在后台启动播放,则可以开始录制。 - audioBackgrounder
@hotpaw2,“睡眠录音机”的实时应用程序完美地工作,并支持在后台记录整个一天。因此,应该有一种方法允许在整个一天内在后台进行记录。这是实时应用程序链接:https://itunes.apple.com/en/app/sleep-talk-recorder/id391767653?mt=8 - LiangWang
也许这些应用程序在前台和整天进入后台之前启用其音频会话。 - hotpaw2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接