需求修改系统,至于是root还是magisk模块等骚操作把文件换掉都可以

把系统中 /etc/mixer_paths_mtp.xml 文件拷出来编辑

先来说一些基础的,这是一个xml文件,那么数据都是又头有尾的,比如

<path>
</path>

这就是他的头和尾

找到 <path name="handset"> 的节点,然后把里面的内容复制到 <path name="speaker"> 的节点中
另外,在听筒(handset)的参数中, 拥有一个 Digital Volume 的参数,可以改大来增大听筒的音量(百分比),但是写到扬声器(speaker)中会限制音量

举个例子

<path name="speaker">
<ctl name="RX3 MIX1 INP1" value="RX1" />
<ctl name="LINE_OUT" value="Switch" />
</path>
<path name="handset">
<ctl name="RX1 MIX1 INP1" value="RX1" />
<ctl name="RDAC2 MUX" value="RX1" />
<ctl name="RX1 Digital Volume" value="84" />
<ctl name="EAR PA Gain" value="POS_6_DB" />
<ctl name="EAR_S" value="Switch" />
</path>

那么就应该把speaker的那一个修改为

<path name="speaker">
<ctl name="RX3 MIX1 INP1" value="RX1" />
<ctl name="LINE_OUT" value="Switch" />
<ctl name="RX1 MIX1 INP1" value="RX1" />
<ctl name="RDAC2 MUX" value="RX1" />
<ctl name="EAR PA Gain" value="POS_6_DB" />
<ctl name="EAR_S" value="Switch" />
</path>

保存,放回系统中去或者放到magisk模块中,重启系统即可生效

要是没声音,换个编辑器来编辑,VsCode我也不知道为什么是不行的


修改一台ZTE 701zt的日本儿童手机,听筒音质实在是太好了声音还大,他的配置是在 /system/etc/mixer_paths_msm8909_pm8916.xml 具体怎么知道是哪一个呢,就几个 mixer_paths 开头的,都备份了挨个删掉试一下有没有声音就知道了,
也有可能在 /system/vendor/etc/

除了可以重启手机,在一次bootloop的时候找到了办法

killall audioserver
killall android.hardware.audio.service
killall -9 com.sec.android.app.soundalive

这样就应用了最新的配置了,那么我恰好adb有root,只要写一个脚本,点一下就能应用

adb push mixer_paths_msm8909_pm8916.xml /system/etc/
adb shell killall audioserver
adb shell killall android.hardware.audio.service
adb shell killall -9 com.sec.android.app.soundalive

使用上面的方式将 handset 的内容放到 speaker 中已经没有效果了,因为音频是使用i2s输出的,完全就没有用 speaker 中的内容,经过测试,注释掉deep-buffer-playback-zte-smart-pa里面的内容就没有声音了,说明外放就是这部分,通过多次尝试,上方的 deep-buffer-playback 中使用的 PRI_MI2S_RX 即为听筒,那我们就加一行,将 PRI_MI2S_RX 也加入 MultiMedia1

<path name="deep-buffer-playback-zte-smart-pa">
        <ctl name="QUAT_MI2S_RX Audio Mixer MultiMedia1" value="1" />
        <ctl name="PRI_MI2S_RX Audio Mixer MultiMedia1" value="1" />
    </path>    

但是发现没声音,是因为听筒的 RX1 需要打开,因此从 handset 复制过来

    <path name="deep-buffer-playback-zte-smart-pa">
        <ctl name="QUAT_MI2S_RX Audio Mixer MultiMedia1" value="1" />
        <ctl name="PRI_MI2S_RX Audio Mixer MultiMedia1" value="1" />
        <ctl name="RX1 MIX1 INP1" value="RX1" />
        <ctl name="RDAC2 MUX" value="RX1" />
        <ctl name="RX1 Digital Volume" value="82" />
        <ctl name="EAR PA Gain" value="POS_6_DB" />
        <ctl name="EAR_S" value="Switch" />
    </path>    

其中 <ctl name="RDAC2 MUX" value="RX1" /> 这会进行数模转换降低音质,但是方便放大到更大的音量,关闭后把 RX1 Digital Volume 从82改到87也能发出相同的响度,你可以自行修改,反正应用非常容易