音频录制应用程序的 iOS 多任务处理
Posted
技术标签:
【中文标题】音频录制应用程序的 iOS 多任务处理【英文标题】:iOS multitasking for an Audio Recording application 【发布时间】:2011-04-20 09:01:25 【问题描述】:我正在编写一个记录音频的应用程序。我正在研究在录音(在后台)时支持多任务处理的可行性。
从我目前所读到的内容来看,答案似乎是否,尤其是因为该程序旨在释放切换时正在使用的任何系统资源。
所以我想知道,是否可以让用户切换到 ios 中的另一个应用程序,而我的应用程序继续在后台捕获音频?
【问题讨论】:
嗨,我正在尝试做同样的事情。您是否按照 tc 所说的方式将其设置为“voip”和“audio”?录制成功了吗? @Namratha 如果您不是 voip 提供商,请不要将其设置为 voip。我们的应用因此被拒绝。事实证明,在后台录制并不是一件坏事。操作系统是知道的,因为你迷上了 AVAudioSession。照原样使用它,一切都很好。 哦。非常感谢您的建议。所以背景录音有效吗?伟大的!请问你是怎么做到的? @Namratha 没什么特别的。 iOS 在后台处理所有事情......编写您的应用程序,就好像它在前台录制一样。当您进入后台时,只需停止所有显示时间已过的计时器等。录制将继续发生。用户在录制时会在顶部看到这个发光的红色条(上面有您的应用程序名称)。如果您想知道如何进行录音,请参考 AVAudioRecorder 类或 AudioQueue API ;) @Dieth:您使用哪个回调来了解应用程序何时进入后台?我知道如何录制,谢谢 :) 这种背景模式是否只能在 iOS4 中使用?另外,iOS 会限制您的后台录制时间吗?或者应用程序会显示一致的行为,即记录到内存不足(如前台记录的情况)? 【参考方案1】:你可以。 Skype 会这样做。
您大概需要在 Info.plist 中设置<key>UIBackgroundModes</key><array><string>audio</string></array>
,并且您需要确保音频会话处于活动状态/正在运行/在切换应用程序之前(假设您不会突然开始录制/播放音乐/无论您的应用何时在后台运行)。
The docs 说“音频”可以让您在后台播放音频,但大概这也适用于录制音频。如果它不起作用,您可以尝试以下几种方法:
同时设置“voip”和“audio”。 播放静音(这可能是使用音频队列 API 最简单的方法)。【讨论】:
“大概这也适用于录制音频”——根据我的经验,这些是您不想做出商业决策的假设。 只是想更新这个答案。如果您的应用不使用 VOIP,请不要使用 VOIP。当应用程序在后台时,它可以启用网络活动。使用“音频”可以解决问题。我们的应用在第一次使用 voip 时就被拒绝了。【参考方案2】:Apple 似乎一直在接受适用于 iOS4 的应用程序,这些应用程序在置于后台时会继续录制音频,因此这可能是存在的证据。该应用程序必须将自己声明为支持后台音频,预先分配所有音频资源并在应用程序进入后台之前开始录音,并且如果前台应用程序需要其内存或音频资源,还需要被终止。所以对系统资源的任何使用都应该是绝对最低限度的。
【讨论】:
如果在 plist 中声明为 3 种特殊类型中的一种,并且有足够的资源可用,则不会。 这是个好消息!你不会碰巧有这个链接吧? 在 Apple 的 UIKit Keys 文档中查找 UIBackgroundModes 音频。【参考方案3】:是的!
您的应用将在将音频发送到后台时继续录制/播放音频。
请勿尝试使用 VOIP,除非您不希望将应用发布到 Apple 商店(例如,您将使用安装配置文件的第三方商店广播您的应用)。
【讨论】:
以上是关于音频录制应用程序的 iOS 多任务处理的主要内容,如果未能解决你的问题,请参考以下文章