我在固定的Android盒子上有一个联网的应用程序/服务,可以从远程手持设备接收音频。
我需要Android box的语音识别应用程序(例如Google App)来处理此音频。这些应用程序从麦克风中读取音频。
如何在我的应用/服务中路由可用的音频,以便它似乎是从麦克风进来的?
我相信AudioSystem中的DEVICE_OUT_REMOTE_SUBMIX与它有关,但我找不到任何相关的文档。
答案 0 :(得分:1)
语音应用正在从AUDIO_DEVICE_IN_BUILTIN_MIC
读取音频(或Android从实现此设备的HAL路由其输入音频)
(更新:这是在音频策略管理器中实现的。有些APM不这样做,例如Nexus播放器。对于它们,APM也需要修改。)
我为Android编写了一个Audio HAL,并将其配置为实现AUDIO_DEVICE_IN_BUILTIN_MIC
,同时我为此输入删除了主要HAL的conf。这足以让其他麦克风输入应用程序从我的HAL读取音频。
我通过我的HAL实现的另一个AudioTrack
到AUDIO_DEVICE_OUT_LINE
将音频提供给HAL,但如果将来需要,我也可以将其切换到unix-socket。
讨论了有关配置的更多详情here
[UPDATE2]
如果使用AudioTrack提供音频,则系统的音频输出也将输入到hal。 后来我转而使用unix socket向我的HAL提供音频以避免这种情况。