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
2
3
<dimen name="battery_text_marginStart">0.0dip</dimen>
<dimen name="battery_text_size">9.0dip</dimen>

2.移动网络断开时不显示G/E/3G/4G

修改 /System/build.prop

1
2
ro.product.name=zerofltezc
ro.product.device=zerofltechn

改为

1
2
ro.product.name=zeroflte
ro.product.device=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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
.method public showHideQConnectLayout()V
.locals 13

.prologue
const/16 v12, 0x64

const/4 v11, 0x1

const/16 v10, 0x8

const/4 v9, 0x0

.line 7422
iget-boolean v6, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mShowSFinderQConnectView:Z

if-eqz v6, :cond_6

iget-object v6, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mQconnectSfinderView:Lcom/android/systemui/statusbar/QconnectSfinderView;

if-nez v6, :cond_0 //0改为6

iget-object v6, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mQsQConnectView:Landroid/view/View;

if-eqz v6, :cond_6

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 SystemUISecSettings 两个系统 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
2
3
4
5
0x7f0c00c9    <public type="dimen" name="net_traffic_single_text_size"
0x7f0c00ca <public type="dimen" name="net_traffic_multi_text_size"
0x7f02042a <public type="drawable" name="stat_sys_network_traffic_updown"
0x7f020429 <public type="drawable" name="stat_sys_network_traffic_up"
0x7f020428 <public type="drawable" name="stat_sys_network_traffic_down"

完成后编译之,替换 resources 文件。

7.2 SecSettings

基本步骤同上,再次反编译后替换如下 smali 中相应 ID:
NetworkTraffic.smali

1
2
3
4
5
6
7
8
9
10
11
0x7f0e000f    <public type="integer" name="maskUp"
0x7f0e0010 <public type="integer" name="maskDown"
0x7f0e0011 <public type="integer" name="maskUnit"
0x7f0e0012 <public type="integer" name="maskPeriod"
0x7f09188a <public type="string" name="network_traffic_color_reset"
0x7f09188b <public type="string" name="network_traffic_color_reset_message"
0x7f091677 <public type="string" name="ok"
0x7f090198 <public type="string" name="cancel"
0x7f0700ef <public type="xml" name="network_traffic"
0x7f09188a <public type="string" name="network_traffic_color_reset"
0x7f02021d <public type="drawable" name="ic_settings_backup"

SeekBarPreference.smali

1
2
3
4
5
0x7f0b0696    <public type="id" name="seekBarPrefBarContainer"
0x7f040229 <public type="layout" name="seek_bar_preference"
0x7f0b0694 <public type="id" name="seekBarPrefValue"
0x7f0b0693 <public type="id" name="seekBarPrefUnitsRight"
0x7f0b0695 <public type="id" name="seekBarPrefUnitsLeft"

ColorPickerDialog.smali

1
2
3
4
5
6
7
8
9
10
11
12
13
14
0x7f04022b    <public type="layout" name="dialog_color_picker”
0x7f091920 <public type="string" name="dialog_color_picker"
0x7f0b069f <public type="id" name="color_picker_view"
0x7f0b06a2 <public type="id" name="old_color_panel"
0x7f0b069a <public type="id" name="new_color_panel"
0x7f0b069b <public type="id" name="white_panel"
0x7f0b069d <public type="id" name="black_panel"
0x7f0b069c <public type="id" name="cyan_panel"
0x7f0b069e <public type="id" name="red_panel"
0x7f0b06a0 <public type="id" name="green_panel"
0x7f0b06a1 <public type="id" name="yellow_panel"
0x7f0b06a5 <public type="id" name="hex"
0x7f0b06a6 <public type="id" name="enter"
0x7f0b069a <public type="id" name="new_color_panel"

最后将以下代码添加到 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