Android源码与AudioRecord多用

标签 android audio-recording android-source android-build

我目前正在构建一个 Android 自定义 ROM,它只能通过语音控制: 所以我在 android 源代码中发现了这部分代码:

// refuse 2 active AudioRecord clients at the same time except if the active input                         
// uses AUDIO_SOURCE_HOTWORD in which case it is closed.

https://android.googlesource.com/platform/hardware/libhardware_legacy/+/master/audio/AudioPolicyManagerBase.cpp第997行

我想知道这样做的目的是什么?硬件限制?

最佳答案

在播放场景中,多个并发客户端写入同一输出是通过混合的方式处理的,这是在 libaudioflinger 中实现的。

要在录制场景中处理多个并发客户端,您需要某种流分离器来负责消耗来自驱动程序的音频缓冲区并将它们提供给所有客户端,并可能执行重采样、单声道/立体声转换,普通的 Android 实现根本没有流分离器(反正不是我上次看到的)。
当我在索尼工作时,我们在一些手机上使用了专有的流分离器(Xperia P、U、和 Solo、IIRC),这使我们能够支持多个录音客户端。所以这是可以做到的,但它并不是微不足道的。

关于Android源码与AudioRecord多用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25725634/

相关文章:

IOS录音,如何在Mic前检查Mic/Playback是否忙

android - 下载 Android 开源代码时出现 "Error exited sync due to fetch errors android"

java - Android Studio - Android 上的类加载器引用未知路径 : [. ..]/com.google.android.gms/[...]/armeabi

android - 如何检查用户是否刚刚在 Firebase 中首次登录 Google

android - 改造,通用调用类型

c - 将范围 -1 到 1 的 float 转换为短的快速方法?

android - 对 5.0+ 设备使用 Snackbar

android - 如何将音频文件复制到另一个文件

android - 构建 AOSP 后无法启动模拟器

Android AOSP 拦截 KeyEvent.KEYCODE_HOME