10 精华 • 平行世界plwd 6小时前 173次点击
读屏声道守护
一个修复安卓12及以上系统,读屏播报插着耳机却跳到扬声器外放的APP。插着耳机用微信、抖音之后读屏声音窜出来的,可以试试。
下载地址:https://update.wd02.com/a11y-audio-guard/app-release.apk (如果链接打不开,可在评论区留言补新链接)
这是个什么问题
昨天早上好奇,为什么插着耳机的时候,读屏的声道声音有时候会从手机里窜出来,于是就趁它窜出来的时机,抓了一段手机的运行日志。
日志显示,国内很多大厂应用存在乱用手机音频设置的情况。具体来说,这些应用在播放语音消息等场景下,会把手机的声音输出切到扬声器,但存在两个问题:
1. 用完不恢复。 播放结束后不把声音设置改回去,残留的设置一直留在系统里。
2. 不看耳机状态。 插着耳机的时候音频本来就不走听筒,这个设置完全多余,但它们不管有没有插耳机都会乱改。
残留的声音设置会影响系统对读屏声道的输出判断——本来读屏的声音应该跟着耳机走,现在被这个残留设置带到了扬声器。而且诡异的是,音乐、视频这些媒体音还在耳机里,只有读屏播报跑到了外放,不仔细听还以为是自己幻觉。
目前已确认的触发场景包括:微信播放语音消息、播放视频、朋友圈刷视频,抖音播放语音消息,美团APP点击视频选项卡甚至在首页什么都不动,豆包结束视频通话等等。除此之外,很多大厂应用的相关功能可能都存在类似问题。但需要说明的是,触发这个诡异问题的路径不止这一条,目前已验证的是这条最常见的,如果后续发现其他成因,也会跟进更新。
APP怎么解决的
原理不复杂:你戴着耳机的情况下,一旦有应用把声音输出切到了扬声器或听筒,APP会通过系统状态监听捕获这个变化,然后立刻把声音输出设回耳机。
不戴耳机的时候,应用就安静待着,不占用任何资源。等你插入耳机后,会自动唤醒检测逻辑,如果发现声音输出还停留在手机扬声器上,就执行一次修复。
修复之后还有一个6秒的恢复观察窗口,会短时间多次检测,防止刚修完又被抢回去。如果连续3次检测都稳定在耳机上,就停止额外检测。平时不会一直后台扫描,不费电。
所有功能用的都是安卓系统自带的公开功能,不需要root,不需要额外的特殊权限。
关于增强守护模式
APP里有一个"增强守护"开关,默认关闭,一般情况下不建议打开。
它的原理是主动申请手机的通信模式,让系统认为当前正在通话,从而加强对耳机声音输出的控制力。检测到声音被抢时,它不会像普通模式那样直接修正,而是先释放自身的设置占用,给系统一点时间看它能不能自己恢复到耳机,恢复不了再强制接管。打电话的时候会自动暂停守护,挂断后自动恢复,不影响正常通话。
但这个模式的副作用是:开启后系统会认为你一直处于通话状态,可能导致部分应用的声音行为异常,比如有些应用会检测到通话状态而改变自己的声音设置。所以除非你发现普通模式守不住、声音反复被抢到外放,否则不要开。
怎么用
1. 安装后打开,把"启用声道守护"的开关打开
2. 按照提示授权相关权限(就是让APP能后台运行、不被手机系统清理的权限,APP内有一步步的引导)
3. 可以在下拉通知栏的快捷设置面板添加"声道修复"按钮,随时手动触发一次修复
4. 然后就不用管了,APP会在后台自动守护
支持有线耳机、Type-C耳机、蓝牙耳机(包括低延迟蓝牙耳机、助听器耳机)。
当前状态
我自己使用了一天,感觉效果还是可以的。但我手里只有一台破红米,发给过几个朋友使用,不过大家大概率都是破红米,在破红米上稳定性挺好的,其他手机咱就不知道了。
如果有人想要试试的话,下载地址在最上面,用着有问题的多顶顶帖、提个问题,或者直接在楼里说一声都行,看看效果到底怎么样,值不值得将它继续更新下去。毕竟它值得完善的地方还是很多的,比如说读屏声道被扬声器抢走这件事,成因不止这一个;再比如说既然实现了对音频路由的调整,是不是可以增加更多的玩法,一切都还不知道。
我起初只是好奇这个问题,让 AI 写了一段 Java 来复现,然后想着把这个逻辑做成 APP 挂在后台,帮我修声道,没想到它的复杂性以及未来可能有的机遇会不小,那就发出来大家一起乐呵乐呵吧。
最后说两句
这个工具是我免费做给大家用的,没有任何广告和收费,放心用。
但是安装包不要乱改乱发。 我在安装包里做了双重防篡改校验,改过的安装包会直接拒绝运行,虽然这个校验不是万能的,随便找个逆向工具就能去掉,但至少能挡住一部分乱改的人。圈子里什么人都有,我见过太多拿别人的东西改俩字就当成自己做的发出来的,还有往里面塞乱七八糟东西的。把话说在前面:大家自己用完全没问题,别随便改这个安装包拿去乱发,坑了其他朋友。要是你觉得我做的不好,想改的话仓库是开元的,自己去仓库源码编译去,别乱改我的安装包到处发,谢谢理解。
没想到这个居然可以在控制中心添加功能块。很不可思议,第一次见。
蓝牙 • 现在 已提醒 “无障碍声道守护”正在使用蓝牙通话音频 若没有使用“无障碍声道守护”进行通话,建议释放通道,以免影响媒体音质
你帮我测试一下呗,如果说关闭增强功能之后还会有这个问题吗?
官方呢?管理员呢?那么好的东西不给个精华吗?
好奇以后可以实现把读屏的声音切到不同的设备的功能吗?表示可以接受在root权限下运行。
好像免root都可以,但是这样操作会和读屏的无障碍声道本身打架,
缺点就是没有立体声了剩下的都很好
抱歉大家,研究了半个下午,发现对蓝牙设备目前这样的实现几乎已经是最好的了,暂时没有更好的办法保证蓝牙音质不下降的情况下还能让软件起作用了,
前排啊