iOS 中的后台录音

2023-12-02

我广泛搜索了有关如何在后台录制音频的文档,并得出结论:在 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(使用前将#替换为@)

iOS 中的后台录音 的相关文章

随机推荐

  • 如何在java中读取Doc或Docx文件? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我想用java读取word文件 import org apache poi poifs
  • 现代 JVM 实现中,instanceof 是如何实现的?

    由于在其他线程中完成的基准测试 参见https stackoverflow com a 397617 1408611 结果表明 Java 6 中的 instanceof 实际上相当快 这是如何实现的 我知道 对于单继承 最快的想法是进行一些
  • 在 PyQt5 中停止工作线程中的无限循环最简单的方法

    我打算有一个 GUI 其中一个 后来是三个 线程以可调间隔 例如 10 秒 从不同源读取实时数据 并在主窗口中绘制这些数据 我正在使用 PyQt5 和 python 3 6 读取是在工作线程中无限循环中执行的 如下所示 class Read
  • 在 Objective-C 中使用内联汇编对变量进行 ROL / ROR

    我想对 Objective C 程序中的变量执行 ROR 和 ROL 操作 然而 我无法做到这一点 我不是装配专家 这是我到目前为止所做的 uint8 t v1 uint8 t v2 v2 is either 1 2 3 4 or 5 as
  • 更改用户控件的动画

    我有一个简单的自定义窗口 下面的 XAML 首次加载时 它将向 grdContainer Children 集合添加一个用户控件 用户选择 操作将导致其他用户控件添加 删除到子集合中 一次加载一个 我试图做的是在加载新控件时提供一个简单的动
  • 在 Python 中检测两个数据数组的模式

    我正在尝试从中检测模式开盘 高位 低位 收盘 OHLC 数据 所以这就是我所做的 查找数据集上的局部最小值和最大值 通过将局部最小值和最大值数组转换为数字数组来标准化我的数据 其中每个数字都是与前一点的变化 到目前为止 一切正常 但我陷入了
  • 在抛出 OutOfMemoryException 之前调用 GC.Collect

    有什么方法可以在抛出 OutOfMemoryException 之前调用 GC Collect 吗 我想我正在寻找一种方法来执行以下代码流 Try to Allocate Memory On Pass Return Call GC Coll
  • Jenkins 中字符串参数的存储库 URL

    我正在构建一个脚本化的 Jenkins 管道 Jenkins 文件是从 git 存储库中获取的 我想参数化存储库 URL 我创建了一个字符串参数 我尝试访问 存储库 URL 字段中的字符串参数 但不起作用 我收到错误消息 指出该参数不是可识
  • Bing 拼写检查 API 仅适用于英语

    Trying 必应拼写检查 API 但它似乎无法在英语以外的语言中正常工作 拼写检查可用的语言 我尝试检查法语文本 但结果实际上会建议完美文本中的错误 反之亦然 意味着它也不会纠正文本中的错误 我试过检查这段文字 土地是一个内部固体 这就是
  • string.ToLower() 和 string.ToLowerInvariant()

    有什么区别以及何时使用什么 如果我总是使用会有什么风险ToLower 如果我总是使用会有什么风险ToLowerInvariant 根据当前的区域性 ToLower 可能会生成您不期望的特定于区域性的小写字母 比如生产 nfoi 上没有点而不
  • Flask WTForms 在 validate_on_submit() 上总是给出 false

    我使用 wtforms 创建了一个注册表单 我在其中使用 FormField 这样我就不必再次重复表单的某些元素 但每当我单击 提交 按钮时 它总是在 validate on submit 方法调用上给出 false 不明白为什么会发生这种
  • 如何处理与 Google 游戏服务的断开连接?

    我使用 Google 游戏服务作为排行榜 像这样显示它 static public void showLeaderboard String lid if isLogined 1 Log i TAG Showing leaderboard I
  • 使用 awk 或 sed 解析来自 ifconfig 的数据?

    我正在尝试使用 sed 解析 ifconfig 输出中的一些数据 但我无法正确执行此操作 我希望该命令只提取我想要的数字 例如 我有兴趣提取发送的字节 eth1 Link encap Ethernet HWaddr 00 00 00 09
  • CUDA 支持的 Windows 编译器

    我是一个正在尝试入门的 CUDA 程序员新手 我在 5 5 版本中遇到了这里提到的问题 Visual Studio 2010 Express 中 CUDA 5 5 出现 干净 错误 谁能确认这只是 5 5 版本的问题吗 是否有我可以安装的早
  • Firebase 推送通知添加操作按钮

    我正在服务器端发送推送通知 并且我正在使用这个 http 协议 https firebase google com docs cloud messaging http server ref 并且我想添加像这样的操作按钮https githu
  • 函数未定义

    我的 jquery 脚本出现函数未定义错误 我不知道为什么 jQuery 代码 http maps google com maps file api v 2 key ABQIAAAAhTrgZ5jvdqcEQouEpPcZ hS81NmJw
  • 如何通过CSS或javascript给句子赋予句首字母? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 如何通过CSS或javascript给句子赋予句首字母 我已经尝试过这些 CSS 属性
  • 为 jax rs 客户端设置超时

    我想为 jax rs 客户端设置连接超时 ClientConfig configuration new ClientConfig configuration property ClientProperties CONNECT TIMEOUT
  • 将 GestureOverlayView 添加到我的 SurfaceView 类,如何添加到视图层次结构?

    在后来的回答中我被告知 我必须将我在代码中创建的 GestureOverlayView 添加到我的视图层次结构中 但我并不 100 知道如何做到这一点 以下是为了完整性而提出的原始问题 我希望我的游戏能够识别手势 我有一个很好的 Surfa
  • iOS 中的后台录音

    我广泛搜索了有关如何在后台录制音频的文档 并得出结论 在 plist 文件中指定 音频 可能有效 但是 由于 iOS 4 在内存不足时会终止后台应用程序 因此当我们转换到后台时 我们还必须采取一些措施来减少内存使用量 我们如何减少内存使用