如何将Android设备内部音频设为麦克风输入?配置遇阻求助
Android 内部音频转麦克风输入(Remote Submix In配置问题)
设备环境
- 设备:Galaxy A24(SM-A245N,Android 13)
- Root权限:已获取
- Magisk版本:v27.0
- 已装模块:AML(Audio Modification Library,Ryuki Mod)
已尝试的配置操作
- 修改
audio_policy.conf:在inputs primary devices下添加AUDIO_DEVICE_IN_REMOTE_SUBMIX。 - 修改优先级更高的
audio_policy_configuration_sec.xml:- 在
attachedDevices和devicePort中添加Remote Submix In; - 更新
route sink="primary-in",仅保留"Remote Submix In"并移除其他输入选项。
- 在
当前问题结果
修改后通过dumpsys media.audio_policy检查,输入设备数量变为0,Remote Submix In未成功启用(修改前为后置麦克风)。
问题解答
1. 是否可完全通过配置文件激活Remote Submix In?
不行。Remote Submix In是虚拟音频输入设备,单纯修改音频策略配置文件无法完成激活——系统需要音频服务的初始化绑定、权限校验等步骤,仅改配置会导致系统无法识别设备,出现输入设备数为0的情况。
2. Remote Submix In似乎需要准备步骤,如何在ADB shell中操作?
先确保配置文件修改正确,再通过Root权限的ADB shell执行以下操作:
- 重启音频服务,加载新配置:
su -c setprop ctl.restart audioserver - 手动初始化Remote Submix输入设备(不同设备节点名称可能有差异):
# 方法1:通过音频策略指令启用 su -c media.audio_policy set-input-remote-submix enable # 方法2:通过tinymix控制节点启用 su -c tinymix 'Audio Input Remote Submix' 1 - 验证设备状态:
dumpsys media.audio_policy | grep "Remote Submix"
如果tinymix找不到对应节点,先用tinymix | grep Submix查找正确的节点名称。
3. 若系统应用使用Remote Submix In,能否在其他应用中生效?(比如切换应用时输入能否持续?)
可以,但需要满足两个条件:
- 在音频策略配置中,将Remote Submix In设为全局可用的默认输入设备,而非绑定单一应用;
- 切换的目标应用需持有
RECORD_AUDIO权限,且未强制指定物理麦克风。如果出现中断,可通过AML模块的全局音频路由规则覆盖应用的自定义路由设置。
4. 是否还有其他需考虑的步骤或配置?(不限于上述方法)
还有几个关键环节:
- AML模块配置:打开AML模块设置,在「音频输入路由」中设置Remote Submix In为默认输入,AML会自动处理不同应用的路由冲突,避免物理麦克风抢占;
- 权限补充:给目标应用授予
RECORD_AUDIO权限,同时给系统音频服务添加必要权限:su -c pm grant com.android.mediarecorder android.permission.MODIFY_AUDIO_SETTINGS - 替代方案:如果手动配置困难,可直接使用Magisk模块如
Audio Router或Internal Audio Capture,这类模块已封装Remote Submix的初始化逻辑,无需手动修改配置文件; - SELinux适配:三星Galaxy A系列设备的SELinux可能限制虚拟音频设备,可先用
su -c setenforce 0临时关闭测试,确认有效后添加SELinux规则到Magisk模块实现永久生效。
内容的提问来源于stack exchange,提问作者양동국




