三星 Galaxy S6 的 SystemUI 修改与功能添加

文章目录
  1. 1. 电量数字大小修改
  2. 2.移动网络断开时不显示G/E/3G/4G
  3. 3. 隐藏下拉的 S 搜索、快速连接
  4. 4. 隐藏状态栏 卡1 卡2 图标
  5. 5. 添加铃声、修改低电量、截屏等UI声音、禁用音量调节声
  6. 6. 相机声音开关、浏览器谷歌搜索
  7. 7. 状态栏网速
    1. 7.1 SystemUI
    2. 7.2 SecSettings
  8. 8. S助手 长按 home 修改

  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
<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
ro.product.name=zerofltezc
ro.product.device=zerofltechn

改为

1
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
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
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
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
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