如何为其他应用程序路由音频

时间:2016-09-01 05:59:22

标签: android audio audiorecord

我在固定的Android盒子上有一个联网的应用程序/服务,可以从远程手持设备接收音频。

我需要Android box的语音识别应用程序(例如Google App)来处理此音频。这些应用程序从麦克风中读取音频。

如何在我的应用/服务中路由可用的音频,以便它似乎是从麦克风进来的?

我相信AudioSystem中的DEVICE_OUT_REMOTE_SUBMIX与它有关,但我找不到任何相关的文档。

1 个答案:

答案 0 :(得分:1)

语音应用正在从AUDIO_DEVICE_IN_BUILTIN_MIC读取音频(或Android从实现此设备的HAL路由其输入音频) (更新:这是在音频策略管理器中实现的。有些APM不这样做,例如Nexus播放器。对于它们,APM也需要修改。)

我为Android编写了一个Audio HAL,并将其配置为实现AUDIO_DEVICE_IN_BUILTIN_MIC,同时我为此输入删除了主要HAL的conf。这足以让其他麦克风输入应用程序从我的HAL读取音频。

我通过我的HAL实现的另一个AudioTrackAUDIO_DEVICE_OUT_LINE将音频提供给HAL,但如果将来需要,我也可以将其切换到unix-socket。

讨论了有关配置的更多详情here

[UPDATE2]

如果使用AudioTrack提供音频,则系统的音频输出也将输入到hal。 后来我转而使用unix socket向我的HAL提供音频以避免这种情况。