[JB][GUIDE] Pasang Omni Header di JB 4.1.2
Syarat:
* Brain
* Teliti & ulet
* Mengerti Decompile Recompile
* Mengerti edit xml & smali
### EDIT SystemUI.apk ###
* Decompile SystemUI.apk
* Extrak bahan yg di download, lalu copas ke folder sesuai tempatnya
* Buka ids.xml tambahkan codding di bawah ini
<item type="id" name="sf4mix_header">false</item>
</resources>
</resources>
* Buka drawables.xml tambahkan codding di bawah ini
<item type="drawable" name="sf4mix2">#00000000</item>
</resources>
</resources>
* Buka status_bar_expanded_header.xml lalu compare sama yg di bawah ini: Perhatikan penempatan tulisan warna merah
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:orientation="vertical" android:id="@id/sf4mix_header" android:background="@drawable/sf4mix2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:baselineAligned="false"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/header" android:layout_width="fill_parent" android:layout_height="wrap_content" android:baselineAligned="false">
<View android:id="@id/systemui_preferences_menu_anchor" android:layout_width="1.0dip" android:layout_height="fill_parent" android:layout_alignParentLeft="true" />
<ImageView android:id="@id/menus_button" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginLeft="4.0dip" android:src="@drawable/ic_notify_menus" android:scaleType="center" android:layout_alignParentLeft="true" android:contentDescription="@string/accessibility_menu" />
<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Clock" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4.0dip" android:singleLine="true" />
<com.android.systemui.statusbar.policy.DateView android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Date" android:id="@id/date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4.0dip" android:layout_marginRight="4.0dip" />
<com.android.systemui.statusbar.RotationToggle android:id="@id/rotation_lock_button" android:clickable="true" android:layout_width="32.0dip" android:layout_height="32.0dip" android:layout_margin="4.0dip" android:button="@drawable/ic_notify_rotation" android:contentDescription="@string/accessibility_rotation_lock_off" />
<ImageView android:id="@id/settings_button" android:layout_width="48.0dip" android:layout_height="48.0dip" android:src="@drawable/ic_notify_quicksettings" android:scaleType="center" android:contentDescription="@string/accessibility_settings_button" />
<ImageView android:id="@id/tasklistSwitch" android:layout_width="48.0dip" android:layout_height="48.0dip" android:src="@drawable/ic_notify_clear" android:scaleType="center" />
<Space android:layout_width="0.0dip" android:layout_height="0.0dip" android:layout_weight="1.0" />
<View android:layout_gravity="right|center" android:background="@drawable/divider_horizontal_dark_opaque" android:layout_width="2.0dip" android:layout_height="34.0px" />
<LinearLayout android:layout_gravity="right|center" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginLeft="4.0dip" android:layout_marginRight="3.0dip" android:layout_alignParentRight="true">
<com.spacecaker.ButtonBurst android:layout_gravity="center_vertical" android:id="@id/spacebuttonburst" android:layout_width="30.0dip" android:layout_height="34.0dip" android:layout_marginRight="1.0dip" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
<RelativeLayout android:orientation="vertical" android:id="@id/sf4mix_header" android:background="@drawable/sf4mix2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:baselineAligned="false"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/header" android:layout_width="fill_parent" android:layout_height="wrap_content" android:baselineAligned="false">
<View android:id="@id/systemui_preferences_menu_anchor" android:layout_width="1.0dip" android:layout_height="fill_parent" android:layout_alignParentLeft="true" />
<ImageView android:id="@id/menus_button" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginLeft="4.0dip" android:src="@drawable/ic_notify_menus" android:scaleType="center" android:layout_alignParentLeft="true" android:contentDescription="@string/accessibility_menu" />
<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Clock" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4.0dip" android:singleLine="true" />
<com.android.systemui.statusbar.policy.DateView android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Date" android:id="@id/date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4.0dip" android:layout_marginRight="4.0dip" />
<com.android.systemui.statusbar.RotationToggle android:id="@id/rotation_lock_button" android:clickable="true" android:layout_width="32.0dip" android:layout_height="32.0dip" android:layout_margin="4.0dip" android:button="@drawable/ic_notify_rotation" android:contentDescription="@string/accessibility_rotation_lock_off" />
<ImageView android:id="@id/settings_button" android:layout_width="48.0dip" android:layout_height="48.0dip" android:src="@drawable/ic_notify_quicksettings" android:scaleType="center" android:contentDescription="@string/accessibility_settings_button" />
<ImageView android:id="@id/tasklistSwitch" android:layout_width="48.0dip" android:layout_height="48.0dip" android:src="@drawable/ic_notify_clear" android:scaleType="center" />
<Space android:layout_width="0.0dip" android:layout_height="0.0dip" android:layout_weight="1.0" />
<View android:layout_gravity="right|center" android:background="@drawable/divider_horizontal_dark_opaque" android:layout_width="2.0dip" android:layout_height="34.0px" />
<LinearLayout android:layout_gravity="right|center" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginLeft="4.0dip" android:layout_marginRight="3.0dip" android:layout_alignParentRight="true">
<com.spacecaker.ButtonBurst android:layout_gravity="center_vertical" android:id="@id/spacebuttonburst" android:layout_width="30.0dip" android:layout_height="34.0dip" android:layout_marginRight="1.0dip" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
* Buka PhoneStatusBar.smali tempatnya di smali/com/android/systemui/statusbar/phone/
** Cari:
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
.annotation system Ldalvik/annotation/MemberClasses;
value = {
*** Tambahkan codding ini di bawahnya
Lcom/android/systemui/statusbar/phone/PhoneStatusBar$OmniMachineHeader;,
** Cari .method private trackMovement(Landroid/view/MotionEvent;)V
*** Tambahkan codding ini di atasnya:
.method private setupOmniMachineHeader()V
.locals 2
.prologue
.line 22
new-instance v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$OmniMachineHeader;
new-instance v1, Landroid/os/Handler;
invoke-direct {v1}, Landroid/os/Handler;-><init>()V
invoke-direct {v0, p0, v1}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$OmniMachineHeader;-><init>(Lcom/android/systemui/statusbar/phone/PhoneStatusBar;Landroid/os/Handler;)V
invoke-virtual {v0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$OmniMachineHeader;->observe()V
.line 23
new-instance v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$OmniMachineHeader;
new-instance v1, Landroid/os/Handler;
invoke-direct {v1}, Landroid/os/Handler;-><init>()V
invoke-direct {v0, p0, v1}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$OmniMachineHeader;-><init>(Lcom/android/systemui/statusbar/phone/PhoneStatusBar;Landroid/os/Handler;)V
invoke-virtual {v0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$OmniMachineHeader;->update()V
.line 24
return-void
.end method
.method private trackMovement(Landroid/view/MotionEvent;)V
.locals 2
.prologue
.line 22
new-instance v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$OmniMachineHeader;
new-instance v1, Landroid/os/Handler;
invoke-direct {v1}, Landroid/os/Handler;-><init>()V
invoke-direct {v0, p0, v1}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$OmniMachineHeader;-><init>(Lcom/android/systemui/statusbar/phone/PhoneStatusBar;Landroid/os/Handler;)V
invoke-virtual {v0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$OmniMachineHeader;->observe()V
.line 23
new-instance v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$OmniMachineHeader;
new-instance v1, Landroid/os/Handler;
invoke-direct {v1}, Landroid/os/Handler;-><init>()V
invoke-direct {v0, p0, v1}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$OmniMachineHeader;-><init>(Lcom/android/systemui/statusbar/phone/PhoneStatusBar;Landroid/os/Handler;)V
invoke-virtual {v0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$OmniMachineHeader;->update()V
.line 24
return-void
.end method
.method private trackMovement(Landroid/view/MotionEvent;)V
** Cari .method protected makeStatusBarView()Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;
*** scroll ke bawah lalu cari:
.line 803
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;
return-object v0
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;
return-object v0
*** Jadikan seperti di bawah ini:
.line 803
invoke-direct {p0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->setupOmniMachineHeader()V
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;
return-object v0
invoke-direct {p0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->setupOmniMachineHeader()V
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;
return-object v0
* Save
* Recompile & sign
* Push ke system lalu reboot
### EDIT Settings.apk ###
*** Langkah Pertama ***
* Decompile Settings.apk
* Copas bahan ke folder sesuai tempatnya
* Buka settings_headers.xml tempatnya di res/xml/
* Tambahkan codding di bawah ini: (Penempatan di sesuaikan dengan keinginan)
<header android:icon="@drawable/omni_header" android:title="Omni Header Machine" android:key="omni_header_machine" android:fragment="com.android.settings.OmniMachineHeader" />
* Save & Recompile
*** Langkah Kedua ***
* Decompile Settings.apk hasil dari langkah pertama
* Buka public.xml dan biarkan terbuka untuk mencari public id baru
* Buka OmniMachineHeader.smali tempatnya di smali/com/android/settings/
* Ganti id publinya
0x7f050055 <public type="xml" name="omni_header" id="0x7f050???" />
* Save
* Recompile & Sign
* Push ke system
### Catatan Tambahan ###
Buat yg fc uinya karena blom pasang .field mHandler:Landroid/os/Handler;
* Buka PhoneStatusBar.smali tempatnya di smali/com/android/systemui/statusbar/phone/
* Cari .field mHomeSearchActionListener:Landroid/view/View$OnTouchListener;
** Tambahkan codding ini di atasnya
.field mHandler:Landroid/os/Handler;
* Scroll ke bawah cari .method public constructor <init>()V
** Cari baris codding ini:
.line 295
iput v1, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mSystemUiVisibility:I
.line 297
new-instance v0, Landroid/util/DisplayMetrics;
invoke-direct {v0}, Landroid/util/DisplayMetrics;-><init>()V
iput v1, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mSystemUiVisibility:I
.line 297
new-instance v0, Landroid/util/DisplayMetrics;
invoke-direct {v0}, Landroid/util/DisplayMetrics;-><init>()V
** Jadikan seperti ini:
.line 295
iput v1, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mSystemUiVisibility:I
.line 297
new-instance v0, Landroid/os/Handler;
invoke-direct {v0}, Landroid/os/Handler;-><init>()V
iput-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mHandler:Landroid/os/Handler;
new-instance v0, Landroid/util/DisplayMetrics;
invoke-direct {v0}, Landroid/util/DisplayMetrics;-><init>()V
iput v1, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mSystemUiVisibility:I
.line 297
new-instance v0, Landroid/os/Handler;
invoke-direct {v0}, Landroid/os/Handler;-><init>()V
iput-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mHandler:Landroid/os/Handler;
new-instance v0, Landroid/util/DisplayMetrics;
invoke-direct {v0}, Landroid/util/DisplayMetrics;-><init>()V
* Save
* Recompile & Sign
Bahan:
http://www.4shared.com/zip/Vi4k3HPrba/Tutor_Omni_Header.html
mirror:
https://www.dropbox.com/s/wcojjcb5b9omjcj/Tutor%20Omni%20Header.zip?dl=0
Credit to:
* Omni Rom Developer
* xda forum & para mastahnya
* Para mastah group android di FB
* Me (SF4MIX Rom Developer)
* Um Agus Kurniawan (Sugus Rom Developer)
* Um Ryan Febriyadi Gunawan (miniRom Developer)
* archiveandroid.blogspot
* Maaad Group
* Andromax Modding Theming and Dev Group
* SFA Big Family (No Limit SFA Big Family Forever)
* Dan yg lainnya... (Maaf dan silahkan pm kalo namanya gak ke sebut :) )
*** Happy Modding ***

Komentar
Posting Komentar