如何从 REMOTE_SUBMIX 中排除 STREAM_SYSTEM
How to exclude STREAM_SYSTEM from REMOTE_SUBMIX
我正在编写一个应用程序来录制来自设备的音频,使用 REMOTE_SUBMIX。
根据这个PAGE,据说
某些流从远程子混合中排除,包括 STREAM_RING、STREAM_ALARM 和 STREAM_NOTIFICATION。这些流将继续像往常一样在本地呈现。
现在我也想排除 STREAM_SYSTEM,但是我找不到这个 policy/strategy 在 AOSP 源代码或任何配置文件中定义的位置。
有人知道这件事的线索吗?非常感谢。
它在audiopolicy服务代码中(除非您使用的是使用基于Parameter Framework的路由代码的Intel设备,否则它在配置文件中)。
我认为您感兴趣的代码在这里:
audiopolicy 以这种方式工作:首先它使用 Engine::getStrategyForStream
函数为流找到 "strategy",然后它进入 Engine::getDeviceForStrategyInt
以为此策略选择设备。
似乎STREAM_SYSTEM
和STREAM_MUSIC
都使用相同的STRATEGY_MEDIA
:
因此,如果您想排除系统声音,但将音乐播放保留在远程子混音上,则必须进行一些更改。
我正在编写一个应用程序来录制来自设备的音频,使用 REMOTE_SUBMIX。 根据这个PAGE,据说
某些流从远程子混合中排除,包括 STREAM_RING、STREAM_ALARM 和 STREAM_NOTIFICATION。这些流将继续像往常一样在本地呈现。
现在我也想排除 STREAM_SYSTEM,但是我找不到这个 policy/strategy 在 AOSP 源代码或任何配置文件中定义的位置。
有人知道这件事的线索吗?非常感谢。
它在audiopolicy服务代码中(除非您使用的是使用基于Parameter Framework的路由代码的Intel设备,否则它在配置文件中)。
我认为您感兴趣的代码在这里:
audiopolicy 以这种方式工作:首先它使用 Engine::getStrategyForStream
函数为流找到 "strategy",然后它进入 Engine::getDeviceForStrategyInt
以为此策略选择设备。
似乎STREAM_SYSTEM
和STREAM_MUSIC
都使用相同的STRATEGY_MEDIA
:
因此,如果您想排除系统声音,但将音乐播放保留在远程子混音上,则必须进行一些更改。