转载请注明出处和网址链接:
http://blog.csdn.net/syhost/article/details/31419749
此篇本是在Z5S的官方4.4内測版出来时写的, 主要是看到其在audio的配置文件中没有es325的相关配置, 因此断定不支持z5sn的一些audio特性,本想喷一下, 结果第二天官方自己写了..
本人先前在安智论坛也发过一篇通过改动snd_soc_msm的audio配置文件来调整一些音量的方法, 但本人4月之后编译的Z5S的Android4.4的ROM已经採用了新的audio架构,这点跟Nubia Z5S官方4.4的是一样的, 因此先前的文章提到的方法已经不适用于Z5S的官方4.4以及本人4月之后公布的Android4.4 ROM.
从曾经我公布的Z5S的Android4.4的ROM的反馈情况来看, 应该能够推断Z5S的扬声器或者audio相关的器件的质量批次一致性太差, 同一个配置文件 在不同人的手机上出来不同的效果, 有的人反馈声音小了, 有的人还反馈已经破音! 预计扬声器质量问题的可能性比較大, 由于即使audio部分採用的电容电阻是5%或者10%精度的(手机上的器件没有这么差精度的吧!)也不可能区别大到这样的程度!
接下来看看Android4.4里高通的音频配置文件, 这个文件是 system/etc/mixer_paths.xml, 这个跟之前4.2里的audio配置文件system/etc/snd_soc_msm/snd_soc_msm_xxxx
看似区别非常大, 实际含义以及功能是一样的,无非是把曾经的文本格式转成了xml格式的,(这种改变实际上让这配置文件看起来更清晰了) 都是通过对应字段来配置audio的參数来架起HAL层和内核的桥梁, 也能够通过对应字段的參数来设置内核中audio的參数比方音量打开通道啥的!
从曾经移植Z5S的4.4内核的经验以及官方4.4的audio配置文件来推断此次Nubia Z5S的官方4.4 公測版H202的audio部分内核中应该没有加入不论什么Nubia的特性(当然耳机检測肯定加了), 只是这里指的Nubia的特性无非是Z5Sn的es325音频调理芯片而已, 对于z5s来说倒是没啥影响. 曾经官方4.2的audio配置文件snd_soc_msm_Taiko中能够找到es325的相关配置. 我之前移植的z5s的4.4内核后来也移除了es325相关的代码!
可是就算z5s上没有es325芯片, 就连双MIC中的后相机mic(dmic3) 从官方音频配置文件里也没看到对应的配置, 这里我就不确定了是不是z5s上本来就没有双mic.
再来对照下官方的音频配置文件跟我改动的版本号的差异, 来分析下假设调整一些音量,调大音量或者防止破音.
从上面几处对照发现官方的配置跟我改动的基本的区别在蓝牙 incall music 和 listen-voice-wakeup 几个方面 其它的差异基本就是音量相关的了. 这里的listen-voice-wakeup 曾经还没在别的机型看到过,难道是声纹解锁之类的?
这里就是上面所说的官方4.4里没有后MIC的配置部分, 右边是我改动的dmic3的配置部分, 只是后面的字段里我也没调用这个mic, 由于经測试发现会影响通话质量造成回声啥的, 这样用录音软件录音时也不能打开双MIC了.
这是主mic的參数配置, 我的配置跟官方的一样, 或者说都是高通caf默认的參数!
我之前改动音频配置文件调整音量的原则是在尽量大声的条件下不破音, 和官方的音量配置对照下看看:
speaker这个字段就是设置主扬声器(对z5s来说就是后扬声器)的參数的, 右边我的配置文件中音量设置的是85, 假设刷官方4.4 UI2.0出现破音的同学能够尝试把左边官方的配置文件音量这个88改成85或者80等更小的数字试试!
handset 这个字段是配置听筒參数的, 右边我的配置里加了个设置RX1通道音量的參数, 只是好像确实也没起作用, 因此右边官方的就没有, 也能够自己尝试在官方4.4里加上这个看能不能调整听筒音量, 注意 这里的听筒不是在通话时起作用的, 通话时的听筒设置在另外一个字段里,以下有介绍!
handset-mic 这个字段 是设置主话筒的參数的, 右边我加了一个设置话筒音量的參数, 只是不确定是否起作用了!
headphones这个字段是设置耳机的音频參数的,能够调打开通道,每一个通道的音量之类的, 右边我的配置參数里加了调整音量的部分, 实測是能够起到调整耳机音量的效果的, 注意实际起音量调节作用的是 <ctl name="RX1 Digital Volume" value="65" /> <ctl name="RX2 Digital Volume" value="65" /> 这两句
voice-handset 这个字段 才是真正的用来设定通话时听筒參数的, 左边官方的配置跟上面handset没差别, 右边我的配置里加入了调整音量 <ctl name="RX1 Digital Volume" value="99" />这句 和 添加滤波调整通话质量<path name="sidetone-handset" />这句,详细的滤波參数在sidetone-handset字段里设置.
voice-speaker字段是用来设置通话时外放的參数的, 右边我的配置里加了设置音量的部分.
voice-headphones 顾名思义, 就是设置插耳机时通话耳机的參数了, 右边我加了滤波相关!
voice-headset-mic 这是是设置插耳机时通话mic的參数, 注意跟上面主mic不同的是 这里的耳机mic是 模拟mic 而不是上面的dmic(数字mic), 所以有了adc调节音量的參数!
<ctl name="ADC2 Volume" value="64" /> 注意这里 右边我的音量设置跟官方的音量设置区别大是由于我加了数字音量调整<ctl name="DEC5 Volume" value="70" />, 实际二者应该出来的效果是差点儿相同的!
要注意 headset 跟 handset 是两个不同的概念, 后者是听筒, 前者是耳机,
另外headphones也是耳机只是跟headset区别在mic上!
最后要特别强调一点, 依据上面的介绍来改动音频參数时, 上面各个字段里引號中的字符要一模一样, 包含空格都不能有不同!