在Android上访问实时麦克风数据的最低级别

我刚刚编写了一些使用Audio Units的iOS代码,以硬件采样率从麦克风获取单声道浮点流。

它最终成了很多代码! 首先,我必须设置一个音频会话,指定所需的48kHz采样率。 然后我必须启动会话并检查实际返回的采样率。 这将是实际的硬件采样率。 然后我必须设置一个音频单元,实现渲染回调。

但我至少能够使用硬件采样率(因此我可以确定通过软件重新采样没有信息丢失)。 而且我还能够设置尽可能小的缓冲区大小,以便实现最小的延迟。

android上的类似过程是什么?

我怎样才能find电线?

PS目前还没有提到它,但似乎可以在JNI级别工作。

AudioRecord类应该能够帮助您从Java / Kotlin方面做到所需。 这将以您请求的采样率为您提供原始PCM数据(假设硬件支持它。)由您的应用程序以高效和及时的方式从AudioRecord类中读取数据,因此它不会溢出缓冲区并丢弃数据。

我怎样才能find电线?

但我觉得这个问题很模糊,所以下面的答案也很广泛。

以下概述简要介绍了从嵌入式软件开发人员的角度来看Android OS媒体堆栈的外观。 概述提供了应用程序开发人员可以使用的框架API ,您可以从中了解哪些API适合。