iOS 后台录音
Posted
技术标签:
【中文标题】iOS 后台录音【英文标题】:audio recording in background on iOS 【发布时间】:2012-09-14 02:04:52 【问题描述】:我有一个在后台使用定位服务的应用程序。工作正常。 但在某个时候,我想做的是在应用程序处于后台时检查一些音频电平。由于某种原因,它似乎不起作用。在前台运行时,该功能运行良好,但在后台运行时,录音机平均和峰值输入始终为-120..
这就是我用来做这个把戏的方法(这显然不起作用..)
....
[recorder record];
if (levelTimer == nil)
bgTask = 0;
app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^
[app endBackgroundTask:bgTask];
];
levelTimer = [NSTimer scheduledTimerWithTimeInterval: 0.02 target: self selector: @selector(levelTimerCallback:) userInfo: nil repeats: YES];
...
是的,levelTimerCallback
每 0.02 秒被调用一次,即使在后台也是如此,所以我假设 beginBackgroundTaskWithExpirationHandler
工作正常。
有什么想法或提示吗?
【问题讨论】:
你搞定了吗?我遇到了同样的问题,你能帮忙分享一些想法吗? 【参考方案1】:目前,在 ios 设备上,在后台录制的唯一支持方式是在应用的 plist 中包含 UIBackgroundModes 键的音频,启用适当的音频会话进行录制,并在应用之前开始录制(或播放)音频进入后台。
如果应用使用 Audio Queues 或 RemoteIO Audio Unit API 进行录制,则缓冲区回调可以丢弃所有音频缓冲区,直到感兴趣的时间,然后计算 PCM 样本表示的能量为需要时所需的时间。
【讨论】:
【参考方案2】:我认为 iPhone 不会允许在后台录制。当应用程序进入后台时,只允许少数服务。从逻辑上讲,如果您的应用程序长时间处于后台,它将消耗大量电池以及存储音频的缓冲区,除非您有时间和内存管理这些资源。当您将应用提交到 App Store 时,这也会给您的应用带来问题。
尽管您可以参考此链接以了解可以在后台运行的内容。 我希望这可以帮助你以某种方式解决问题。
iPhone : Running services in the background
祝你好运!!!
【讨论】:
感谢您的回答,有点想它会这样。我只是认为,当您明确告诉应用程序继续在后台运行时,所有服务都会起作用。至于内存管理等,我只需要记录几秒钟就可以了。 实际上,您的决定是记录几秒钟。但并非所有开发人员都希望这样做。也许将来有人会想要它更长时间。这样一来,苹果就不可能在 iOS 中允许这样的事情。【参考方案3】:我知道有一个应用程序有后台记录。 Beatmaker 2。您需要在beatmaker 2下的设备设置中打开后台运行。在beatmaker中创建音轨并开始录制。他们使用设备上的主页按钮退出应用程序,但它仍在录制。您也可以通过不同的界面获得创意。我这样做是为了将 iPhone 4 的线路输出到 beatmaker 2 中的音轨中。您可以录制前台播放的任何内容的音频。 (YouTube 视频应用音乐来自您的 iTunes 库。您也可以在录制后编辑波形。
【讨论】:
以上是关于iOS 后台录音的主要内容,如果未能解决你的问题,请参考以下文章