Skip to content

[submission] AudioRouterModule #25

@Wang-Anyi

Description

@Wang-Anyi

扬声器禁用与耳机路由模块
模块ID: AudioRouterModule | 版本: v1.0 | 作者: wanganyi
📌 核心功能
本模块专为已获取Root权限(使用APatch或KernelSU管理)的设备设计,旨在解决一个特定需求:完全禁用设备的内置扬声器,并确保当有线耳机插入时,所有媒体音频能自动、强制地从耳机输出。
它通过直接操控设备音频芯片(sprdphone-sc2730)的底层混音器控件来实现,是一种系统级的、持久化的解决方案。
⚙️ 工作原理
1.拦截时机:在系统启动早期(post-fs-data阶段),等待音频服务就绪后,自动执行预设命令。
2.底层控制:调用设备自带的 tinymix 工具,向音频驱动发送精确指令:
· tinymix 144 0 与 tinymix 145 0: 关闭主扬声器和副扬声器的功能开关。
· tinymix 155 1: 启用扬声器的软件静音开关,双重保险。
· tinymix 147 1 与 tinymix 157 0: 开启耳机功能开关,并确保其未被静音。
3.结果:上述设置使音频信号通路在物理上切换至耳机端口,扬声器电路不再接收播放信号,从而实现“插入耳机即有声音,扬声器保持静默”的效果。
🛠️ 技术特性
· 精准控制:针对特定音频芯片型号(sprdphone-sc2730)编写,命令高效且直接。
· 轻量无驻留:仅在开机时执行一次命令,不占用任何后台资源或内存。
· 兼容性强:适用于使用 APatch 或 KernelSU 作为Root方案的设备,尤其适合台电M40 (N9H1) 及刷写相同内核和类原生系统的设备。
· 安全可逆:模块不修改任何系统分区文件,仅运行脚本。禁用或卸载模块后重启,设备音频路由将完全恢复至系统默认状态。
📥 安装与使用
1.前提条件:
· 设备已通过 APatch 或 KernelSU 获取Root权限。
· 已安装对应的模块管理器。
2.安装:
· 下载 AudioRouterModule.zip 包,在APatch/KernelSU管理器中通过“安装模块”或“本地安装”功能刷入。
· 重启设备使模块生效。
3.开关控制:
· 开启:在APatch/KernelSU管理器中启用本模块,然后重启。
· 关闭:在管理器中禁用本模块,然后重启。音频路由将恢复为系统自动管理。
⚠️ 注意事项
· 设备特定性:本模块的命令参数基于台电M40 N9H1 (LineageOS 19.1) 提取。在其他设备上可能无效,甚至导致无声,请勿直接跨设备使用。
· 功能范围:仅控制媒体播放的音频路由,系统提示音、通话音频可能遵循不同的路径,可能不受影响。
· 重启生效:任何模块的启用/禁用操作都必须重启设备后才能生效。
· 问题排查:安装后,可在 /data/local/tmp/audiorouter.log 查看模块运行日志。
🔮 未来可扩展性
此模块框架为未来可能的增强功能奠定了基础:
· 可配置化:可升级为通过配置文件动态调整 tinymix 参数,适配更多设备。
· 状态查询:可集成一个简单的Shell命令或小部件,用于检查当前音频路由状态。
· 蓝牙耳机支持:可扩展脚本逻辑,增加对蓝牙音频设备连接状态检测和路由切换。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions