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

* Buka drawables.xml tambahkan codding di bawah ini
    <item type="drawable" name="sf4mix2">#00000000</item>
</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>

* Buka PhoneStatusBar.smali tempatnya di smali/com/android/systemui/statusbar/phone/
** Cari:
# annotations
.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

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

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

* 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

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

* 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

Postingan populer dari blog ini

[JB][GUIDE] 5 Tabs SystemUI with Flip Anim (Bagian-3)

[JB][ICS][GB][GUIDE] CHANGE SETTINGS BACKGROUND

[TUTOR][ICS][JB] Menambahkan Music Lidroid Toggle