我广泛搜索了有关如何在后台录制音频的文档,并得出结论:在 plist 文件中指定“音频”可能有效。但是,由于 iOS 4 在内存不足时会终止后台应用程序,因此当我们转换到后台时,我们还必须采取一些措施来减少内存使用量。我们如何减少内存使用?
另外,有人知道在 iOS 上在后台录制音频的可靠方法吗?
我取消选中 Info.plist 文件中显示“应用程序不在后台运行”的框,并添加了
<key> UIBackgroundModes </ key> < array> < string> audio</ string></ array>
in Info.plist
。但是,一旦我按下“HOME”按钮,录音就会停止。
我们要实现哪些回调才能知道应用程序已进入后台?
请指教。
为了防止其他人在这里寻找答案,我通过将 UIBackgroundModes 数组添加到 plist 中,将“音频”添加为 Item 0 来完成我的工作。
我在退出时释放了所有内存/控制器,就像退出应用程序一样,所以剩下的就是应用程序使用的缓冲区(我已经分配了大约 1Mb,虽然这让我有点紧张,但它似乎有效!)我想降低保真度也会有帮助,但它似乎按原样工作。
在我的核心音频设置中,我必须将缓冲区大小从 1024 更改为 4096,或者明确设置缓冲区大小...我选择了后者,因为延迟是一个问题。
NSTimeInterval iobuffersize = (float)1024.0f/SAMPLE_RATE);
sizeofdata = sizeof(iobuffersize);
AudioSessionSetProperty(kAudioSessionProperty_PreferredHardwareIOBufferDuration, &sizeofdata, &iobuffersize);
我还必须确保它不会在退出时通过不启用“不在后台运行”选项来杀死应用程序,但是无论如何,默认情况下这应该是关闭的。
所以我想我回答这个问题是为了让其他人安心,毕竟它不需要太多设置就可以工作。
然而,我在蓝牙设置方面遇到了问题,我猜这是因为缓冲区大小再次发生变化,但无法弄清楚这一点...通过记录回调渲染数据时,只需得到 -50 = 无效属性警告。我猜这是频率/样本大小,但谁知道......稍后会查看,但似乎背景现在有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)