我目前正在构建一个 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.
我想知道这样做的目的是什么?硬件限制?
最佳答案
在播放场景中,多个并发客户端写入同一输出是通过混合的方式处理的,这是在 libaudioflinger 中实现的。
要在录制场景中处理多个并发客户端,您需要某种流分离器来负责消耗来自驱动程序的音频缓冲区并将它们提供给所有客户端,并可能执行重采样、单声道/立体声转换,普通的 Android 实现根本没有流分离器(反正不是我上次看到的)。
当我在索尼工作时,我们在一些手机上使用了专有的流分离器(Xperia P、U、和 Solo、IIRC),这使我们能够支持多个录音客户端。所以这是可以做到的,但它并不是微不足道的。
关于Android源码与AudioRecord多用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25725634/