爲Android2.3添加下拉通知欄的快捷開關

 

對於2.3的rom而言,應該修改SystemUI.apk

修改過程如下:

1、添加相關圖片。

2、res\layout\文件夾下添加quickpanel_quick_settings.xml文件

3、在res\values\strings.xml裏添加值:


<string name="quickpanel_wifi_text">Wi-Fi</string>
<string name="quickpanel_bluetooth_text">Bluetooth</string>
<string name="quickpanel_gps_text">GPS</string>
<string name="quickpanel_sound_text">Sound</string>
<string name="quickpanel_sound_vibration_text">"SoundVibration"</string>
<string name="quickpanel_silent_text">Silent</string>
<string name="quickpanel_vibration_text">Vibration</string>
<string name="quickpanel_error_text">Error</string>
<string name="quickpanel_data_text">Data</string>

在res\values-zh-rCN\strings.xml裏添加值:

<string name="quickpanel_bluetooth_text">藍牙</string>
<string name="quickpanel_sound_text">聲音</string>
<string name="quickpanel_sound_vibration_text">聲音振動</string>
<string name="quickpanel_silent_text">靜音</string>
<string name="quickpanel_vibration_text">振動</string>
<string name="quickpanel_error_text">錯誤</string>
<string name="quickpanel_data_text">數據</string>

4、在res\values\ids.xml里加入以下代碼:

<item type="id" name="quickpanel_quick_settings">false</item>
<item type="id" name="quickpanel_wifi_btn_icon">false</item>
<item type="id" name="quickpanel_wifi_btn_text">false</item>
<item type="id" name="quickpanel_wifi_btn_status_icon">false</item>
<item type="id" name="quickpanel_bt_btn_icon">false</item>
<item type="id" name="quickpanel_bt_btn_text">false</item>
<item type="id" name="quickpanel_bt_btn_status_icon">false</item>
<item type="id" name="quickpanel_gps_btn_icon">false</item>
<item type="id" name="quickpanel_gps_btn_text">false</item>
<item type="id" name="quickpanel_gps_btn_status_icon">false</item>
<item type="id" name="quickpanel_sound_btn_icon">false</item>
<item type="id" name="quickpanel_sound_btn_text">false</item>
<item type="id" name="quickpanel_sound_btn_status_icon">false</item>
<item type="id" name="quickpanel_data_btn_icon">false</item>
<item type="id" name="quickpanel_data_btn_text">false</item>
<item type="id" name="quickpanel_data_btn_status_icon">false</item>


5、在mali\com\android\systemui\statusbar\文件夾下添加quickpanel文件夾,並修改16進制數值所對應的新id。

6、在smali\com\android\systemui\R$drawable.smali加入:(排序方式爲英語字母)

此處定義的是19個圖標文件

.field public static final quickpanel_icon_bluetooth_ing:I = 0x7f0200e7
.field public static final quickpanel_icon_bluetooth_off:I = 0x7f0200e8
.field public static final quickpanel_icon_bluetooth_on:I = 0x7f0200e9
.field public static final quickpanel_icon_gps_off:I = 0x7f0200ea
.field public static final quickpanel_icon_gps_on:I = 0x7f0200eb
.field public static final quickpanel_icon_ing:I = 0x7f0200ec
.field public static final quickpanel_icon_off:I = 0x7f0200ed
.field public static final quickpanel_icon_on:I = 0x7f0200ee
.field public static final quickpanel_icon_rotation_off:I = 0x7f0200ef
.field public static final quickpanel_icon_rotation_on:I = 0x7f0200f0
.field public static final quickpanel_icon_silent_off:I = 0x7f0200f1
.field public static final quickpanel_icon_sound_on_on:I = 0x7f0200f2
.field public static final quickpanel_icon_sound_vibration_on:I = 0x7f0200f3
.field public static final quickpanel_icon_vibration_off:I = 0x7f0200f4
.field public static final quickpanel_icon_wifi_ing:I = 0x7f0200f5
.field public static final quickpanel_icon_wifi_off:I = 0x7f0200f6
.field public static final quickpanel_icon_wifi_on:I = 0x7f0200f7
.field public static final quickpanel_quick_settings_background:I = 0x7f0200f8
.field public static final quickpanel_title_background:I = 0x7f0200f9

7、smali\com\android\systemui\R$id.smali中加入\res\values\ids.xml中加入的新id

.field public static final quickpanel_quick_settings:I = 0x7f090016
.field public static final quickpanel_wifi_btn_icon:I = 0x7f090017
.field public static final quickpanel_wifi_btn_text:I = 0x7f090018
.field public static final quickpanel_wifi_btn_status_icon:I = 0x7f090019
.field public static final quickpanel_bt_btn_icon:I = 0x7f09001a
.field public static final quickpanel_bt_btn_text:I = 0x7f09001b
.field public static final quickpanel_bt_btn_status_icon:I = 0x7f09001c
.field public static final quickpanel_gps_btn_icon:I = 0x7f09001d
.field public static final quickpanel_gps_btn_text:I = 0x7f09001e
.field public static final quickpanel_gps_btn_status_icon:I = 0x7f09001f
.field public static final quickpanel_sound_btn_icon:I = 0x7f090020
.field public static final quickpanel_sound_btn_text:I = 0x7f09001
.field public static final quickpanel_sound_btn_status_icon:I = 0x7f09002
.field public static final quickpanel_data_btn_icon:I = 0x7f09003
.field public static final quickpanel_data_btn_text:I = 0x7f09004
.field public static final quickpanel_data_btn_status_icon:I = 0x7f09005


7、smali\com\android\systemui\R$layout.smali中加入\res\layout中新加入的quickpanel_quick_settings.xml所對應的16進制id

.field public static final quickpanel_quick_settings:I = 0x7f030006



8、smali\com\android\systemui\R$string.smali中加入\res\values\string.xml中新加入的新id所對應的id值

.field public static final quickpanel_wifi_text:I = 0x7f070010
.field public static final quickpanel_bluetooth_text:I = 0x7f070011
.field public static final quickpanel_gps_text:I = 0x7f070012
.field public static final quickpanel_sound_text:I = 0x7f070013
.field public static final quickpanel_sound_vibration_text:I = 0x7f070014
.field public static final quickpanel_silent_text:I = 0x7f070015
.field public static final quickpanel_vibration_text:I = 0x7f070016
.field public static final quickpanel_error_text:I = 0x7f070017
.field public static final quickpanel_data_text:I = 0x7f070018


9、smali\com\android\systemui\statusbar\StatusBarService.smali中找到如下代碼:

iget-object v6, p0, Lcom/android/systemui/statusbar/StatusBarService;->mBroadcastReceiver:Landroid/content/BroadcastReceiver;

invoke-virtual {p1, v6, v2}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;

.line 327
return-void
.end method



修改爲:

iget-object v6, p0, Lcom/android/systemui/statusbar/StatusBarService;->mBroadcastReceiver:Landroid/content/BroadcastReceiver;

invoke-virtual {p1, v6, v2}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;

const v6, 0x7f030006

const/4 v9, 0x0

invoke-static {p1, v6, v9}, Landroid/view/View;->inflate(Landroid/content/Context;ILandroid/view/ViewGroup;)Landroid/view/View;

move-result-object v5

check-cast v5, Lcom/android/systemui/statusbar/quickpanel/QuickSettingsView;

.local v5, qsv:Lcom/android/systemui/statusbar/quickpanel/QuickSettingsView;
iget-object v6, p0, Lcom/android/systemui/statusbar/StatusBarService;->mExpandedView:Lcom/android/systemui/statusbar/ExpandedView;

const/4 v2, 0x0

invoke-virtual {v6, v5, v2}, Lcom/android/systemui/statusbar/ExpandedView;->addView(Landroid/view/View;I)V

return-void
.end method


上面0x7f030006爲\res\layout\quickpanel_quick_settings.xml所對應的16進制id

如要修改相關透明,也可修改如下代碼:

.local v7, view:Lcom/android/systemui/statusbar/StatusBarView;
new-instance v0, Landroid/view/WindowManager$LayoutParams;

const/4 v1, -0x1

const/16 v3, 0x7d0

const/16 v4, 0x48

const/4 v5, 0x2


改爲:

.local v7, view:Lcom/android/systemui/statusbar/StatusBarView;
new-instance v0, Landroid/view/WindowManager$LayoutParams;

const/4 v1, -0x1

const/16 v3, 0x7d0

const/16 v4, 0x48

const/4 v5, -0x3


這是修改狀態欄背景透明,要修改狀態欄透明的時候這是必改項!

找到:

.line 1207
const/4 v5, 0x2


修改爲:

.line 1207
const/4 v5, -0x3


這是下拉菜單快捷按鈕背景透明。


10、編譯,並解出classes.dex、resources.arsc、quickpanel_quick_settings.xml和相關圖片,放入SystemUI.apk中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章