如何为其他应用路由音频
How to route audio for other apps
我有一个联网的 app/service 在一个固定的 Android 盒子上,它接收来自远程手持设备的音频。
我需要 Android 盒子的语音识别应用程序(例如 Google 应用程序)来处理此音频。这些应用程序从麦克风读取音频。
如何路由我的 app/service 中可用的音频,使其看起来像是从麦克风传来的?
我相信 AudioSystem 中的 DEVICE_OUT_REMOTE_SUBMIX 与此有关,但我找不到任何相关文档。
语音应用正在从 AUDIO_DEVICE_IN_BUILTIN_MIC
读取音频(或 Android 从实现此设备的 HAL 路由其输入音频)
(更新:这是在音频策略管理器中实现的。一些 APM 不这样做,例如 Nexus 播放器。对于他们来说,APM 也需要修改。)
我为 Android 编写了一个音频 HAL,并将其配置为实现 AUDIO_DEVICE_IN_BUILTIN_MIC
,同时我为此输入删除了主 HAL 的 conf。这足以让其他麦克风输入应用程序从我的 HAL 读取音频。
我通过我的 HAL 实现的另一个 AudioTrack
到 AUDIO_DEVICE_OUT_LINE
将音频提供给 HAL,但如果将来需要,我也可以将其切换到 unix-socket。
讨论了有关配置的更多详细信息
[更新2]
如果使用AudioTrack来馈送音频,那么系统的音频输出也会馈送到hal。
我后来改用 unix 套接字将音频馈送到我的 HAL 以避免这种情况。
我有一个联网的 app/service 在一个固定的 Android 盒子上,它接收来自远程手持设备的音频。
我需要 Android 盒子的语音识别应用程序(例如 Google 应用程序)来处理此音频。这些应用程序从麦克风读取音频。
如何路由我的 app/service 中可用的音频,使其看起来像是从麦克风传来的?
我相信 AudioSystem 中的 DEVICE_OUT_REMOTE_SUBMIX 与此有关,但我找不到任何相关文档。
语音应用正在从 AUDIO_DEVICE_IN_BUILTIN_MIC
读取音频(或 Android 从实现此设备的 HAL 路由其输入音频)
(更新:这是在音频策略管理器中实现的。一些 APM 不这样做,例如 Nexus 播放器。对于他们来说,APM 也需要修改。)
我为 Android 编写了一个音频 HAL,并将其配置为实现 AUDIO_DEVICE_IN_BUILTIN_MIC
,同时我为此输入删除了主 HAL 的 conf。这足以让其他麦克风输入应用程序从我的 HAL 读取音频。
我通过我的 HAL 实现的另一个 AudioTrack
到 AUDIO_DEVICE_OUT_LINE
将音频提供给 HAL,但如果将来需要,我也可以将其切换到 unix-socket。
讨论了有关配置的更多详细信息
[更新2]
如果使用AudioTrack来馈送音频,那么系统的音频输出也会馈送到hal。 我后来改用 unix 套接字将音频馈送到我的 HAL 以避免这种情况。