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

P i*_*P i 7 audio android real-time microphone low-level

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

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

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

android上的类似过程是什么?

我怎样才能接通电线?

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

Lar*_*fer 3

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