三星 Galaxy S6 的 SystemUI 修改与功能添加
5.0系统下 xposed 框架不稳定且对三星 TouchWiz 支持不佳,故手动反编译并修改 SystemUI 添加部分常用功能。
部分内容源于 xda 论坛等。用 apktool 反编译。
注意,使用 apktool 2.0 版本无法正常回编译 SystemUI.apk,此处使用 2.0 RC3 版本,可正常编译。
基于 SM-G9200 大陆公开版 G9200ZCU1AOE4 固件。
1. 电量数字大小修改
默认电量百分比的数字字号太大了,占用过多空间。SystemUI\res\values\dimens.xml
971行
1 | <dimen name="battery_text_marginStart">0.0dip</dimen> |
2.移动网络断开时不显示G/E/3G/4G
修改 /System/build.prop
1 | ro.product.name=zerofltezc |
改为
1 | ro.product.name=zeroflte |
如此可达到最初目的,即断开移动网络时隐藏网络类型指示器。但似乎并不稳定,更改机型可能导致某些专用软件的兼容性问题,也可能影响 Smart Switch 的识别。故修改布局与图片资源使网络类型指示器与信号重叠变通解决。
systemui\layout\msim_signal_cluster_view.xml
将 separate_mobile 下的 inout 和 mobiletype 移动到 mobile_combo 下。
注意,卡1有两个 mobile_combo ,第一个 sub3 平时并不显示,怀疑是电信卡的双信号格,移动的时候注意放到不带 sub 的 frame 中,卡2无此问题,只有一个 sub2
改动后替换 png 资源防止文字重叠。覆盖即可。
png图标包:http://pan.baidu.com/s/1i3F2YiD
3. 隐藏下拉的 S 搜索、快速连接
SystemUI.apk\smali\com\android\systemui\statusbar\phone\PhoneStatusBar.smali
找到并修改如下内容
1 | .method public showHideQConnectLayout()V |
4. 隐藏状态栏 卡1 卡2 图标
systemui\layout\msim_signal_cluster_view.xml
1 | <ImageView android:id="@id/sim_icon_chn" android:layout_width="0px" android:layout_marginRight="0dip" /> |
5. 添加铃声、修改低电量、截屏等UI声音、禁用音量调节声
铃声包:http://pan.baidu.com/s/1eQfHqAQ
解压替换/System/Media/
6. 相机声音开关、浏览器谷歌搜索
/System/csc/others.xml
添加 ShutterSoundMenu
项为 True
谷歌搜索记不住了,看着英文改就好,很简单的。
或使用 CSC Feature Expert
地址:http://pan.baidu.com/s/1jGrewUa 密码:m5ui
7. 状态栏网速
参考这个教程 http://forum.xda-developers.com/android/general/mod-status-bar-network-traffic-separate-t3024878
首先 deodex SystemUI
和 SecSettings
两个系统 apk。
下载 http://pan.baidu.com/s/1dDpSC1N 这里的文件包。
7.1 SystemUI
首先将压缩包里的 smali 文件和 png 图放到反编译后相应的路径下。
打开压缩包里的 values 文件夹,将其中 xml 文件的内容添加到反编译后相应文件中。
打开 layout/status_bar.xml
文件添加以下内容:
1 | <com.android.systemui.statusbar.policy.NetworkTraffic android:id="@id/networkTraffic" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="false" /> |
编译 SystemUI 再反编译,打开 res/values/public.xml
,再打开 smali/com/android/systemui/statusbar/policy/NetworkTraffic.smali
搜索以下 ID 并用 xml 文件中的值替换 smali 文件中的对应值。压缩包内有相应文件。
1 | 0x7f0c00c9 <public type="dimen" name="net_traffic_single_text_size" |
完成后编译之,替换 resources 文件。
7.2 SecSettings
基本步骤同上,再次反编译后替换如下 smali 中相应 ID:NetworkTraffic.smali
1 | 0x7f0e000f <public type="integer" name="maskUp" |
SeekBarPreference.smali
1 | 0x7f0b0696 <public type="id" name="seekBarPrefBarContainer" |
ColorPickerDialog.smali
1 | 0x7f04022b <public type="layout" name="dialog_color_picker” |
最后将以下代码添加到 res/layout
下合适的设置大项中
1 | <PreferenceScreen android:title="@string/network_traffic_title" android:key="network_traffic_state " android:summary="@string/network_traffic_summary" android:fragment="com.android.settings.temasek.NetworkTraffic" /> |
编译替换,完工。
8. S助手 长按 home 修改
framework-res/value/integers/config_holdHomeButton - 1
by Sykie Chen 2015.7.10