Overview
After experiment for about 3 weeks try and try again finally i am success implement it on my stock rom. so if you wanna try to implement it on you stock rom you can read this tutorial, or if you lazy you can download it for this site, but in raw file cause i don't know how to include it on zip file for flashing. But remember this tutorial just only for S5660DXKT8 only and i don't responsible if you brick your phone.this tutorial is continuation of this article
What you have to do ?
- have android tool on your pc, in this tutorial we need apktool, smali-baksmali and android-sdk
- you must have backup of your system, in this case SystemUI.apk dan framework.jar
- know how to use apktool, smali-baksmali and adb command
Result
![]() |
| Swipe Notification |
Lets Begin
- First you have to pull 2 file from your phone, use adb command to pull it. /system/app/SystemUI.apk and /system/framework/framework.jar make backup of this 2 file cause you will update this 2 file.
- Update SystemUI.apk
- decompile SystemUI.apk using APKTool
- navigate to /res/
- create new folder named anim, navigate to /res/anim/
- create 2 file named slide_out_left_basic.xml and slide_out_right_basic.xml
- edit those 2 file file with below code.
slide_out_left_basic.xml<?xml version="1.0" encoding="utf-8"?> <translate android:duration="@android:integer/config_mediumAnimTime" android:fromXDelta="0.0" android:toXDelta="-50.0%p" xmlns:android="http://schemas.android.com/apk/res/android" />
slide_out_right_basic.xml<?xml version="1.0" encoding="utf-8"?> <translate android:duration="@android:integer/config_mediumAnimTime" android:fromXDelta="0.0" android:toXDelta="50.0%p" xmlns:android="http://schemas.android.com/apk/res/android" />
- open and edit /res/layout/status_bar_latest_event.xml, change the bold one
- now save all change and compile your half way SystemUI.apk (lets call SystemUI-part1.apk). merge the result with your copy original SystemUI.apk. leave SystemUI-part1.apk put it on somewhere place in your CPU, now you working with new SystemUI.apk the merging result (i hope you get my point)
- Update SystemUI Smali File
- decompile SystemUI.apk with APKTool
- navigate to /res/value/ open public.xml look at the end off file
- remember those 2 ids
- download LatestItemContainer.smali and LatestItemContainer$1.smali. insert those file to folder /smali/com/android/systemui/statusbar/ open LatestItemContainer$1.smali there is an id references the anim from previous step please edit it if you have different id from public.xml
.line 53 :cond_0 const/high16 v1, 0x7f0a
and
.line 51 const v1, 0x7f0a0001
- download StatusBarService$7.smali. insert to /smali/com/android/systemui/statusbar/
- Update SystemUI - StatusBarService.smali
- navigate to /smali/com/android/systemui/statusbar/. open StatusBarService.smali and find below code
.method makeNotificationView(Lcom/android/internal/statusbar/StatusBarNotification;Landroid/view/ViewGroup;)[Landroid/view/View;
- on line 3149 add below code
- also insert the following bold code
- save it and compile it, merge it with with SystemUI.apk place on different folder cause it finish now.
- Update framework.jar
- decompile framework.jar with smali program
- navigate to /smali/com/android/internal/statusbar/
- open and edit IStatusBarService$Stub.smali, add below code
variable declaration.field static final TRANSACTION_onClearAllNotifications:I = 0xd .field static final TRANSACTION_onNotificationClear:I = 0xe .field static final TRANSACTION_onNotificationClick:I = 0xb .field static final TRANSACTION_onNotificationError:I = 0xc
- find this code, or maybe you can find it at line 134, change the code on line 148 so it look like below code
- find this code, or maybe you can find it at line 572, change it so it look like below code
- open and edit IStatusBarService$Stub$Proxy.smali, insert below function at bottom of file
- find this code on above function
- open and edit IStatusBarService.smali and insert below function at bottom of file
- Finish compile and merge all, copy it to your Samsung Galaxy Gio. this mod based on Samsung Galaxy Gio S5660DXKT8. and i think is not fit with other model so you must adjust it if you wanna use on other model.
- hope this tutorial can help you and if you have problem you can ask me i will glad to help you
<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.LatestItemContainer android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="65.0sp"
xmlns:android="http://schemas.android.com/apk/res/android">
<com.android.systemui.statusbar.LatestItemView android:id="@id/content" android:background="@android:drawable/status_bar_item_background" android:paddingRight="6.0sp" android:focusable="true" android:clickable="true" android:layout_width="fill_parent" android:layout_height="64.0sp" android:shadowColor="#ff000000" android:shadowDx="0.0" android:shadowDy="1.0" android:shadowRadius="2.0" />
<View android:background="@drawable/divider_horizontal_light_opaque" android:layout_width="fill_parent" android:layout_height="wrap_content" />
</com.android.systemui.statusbar.LatestItemContainer>
check-cast v9, Lcom/android/systemui/statusbar/LatestItemContainer;
.local v9, row:Lcom/android/systemui/statusbar/LatestItemContainer;
move-object/from16 v0, v2
iget v0, v0, Landroid/app/Notification;->flags:I
move v4, v0
and-int/lit8 v4, v4, 0x2
if-nez v4, :cond_1
move-object/from16 v0, v2
iget v0, v0, Landroid/app/Notification;->flags:I
move v4, v0
and-int/lit8 v4, v4, 0x20
if-nez v4, :cond_1
new-instance v4, Lcom/android/systemui/statusbar/StatusBarService$7;
move-object v0, v4
move-object/from16 v1, p0
move-object/from16 v7, p1
invoke-direct {v0, v1, v7}, Lcom/android/systemui/statusbar/StatusBarService$7;-><init>(Lcom/android/systemui/statusbar/StatusBarService;Lcom/android/internal/statusbar/StatusBarNotification;)V
move-object/from16 v0, v9
move-object v1, v4
invoke-virtual {v0, v1}, Lcom/android/systemui/statusbar/LatestItemContainer;->setOnSwipeCallback(Ljava/lang/Runnable;)V
.line 735
.line 581
:cond_1
const v1, 0x7f090024
invoke-virtual {v9, v1}, Lcom/android/systemui/statusbar/LatestItemContainer;->findViewById(I)Landroid/view/View;
move-result-object v1
move-object v0, v1
check-cast v0, Landroid/view/ViewGroup;
.method public onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
.registers 14
.parameter "code"
.parameter "data"
.parameter "reply"
.parameter "flags"
.annotation system Ldalvik/annotation/Throws;
value = {
Landroid/os/RemoteException;
}
.end annotation
.prologue
.line 39
sparse-switch p1, :sswitch_data_15a
.line 183
const/4 v0, 0x1
goto/16 :goto_7
.line 187
.end local v1 #_arg0:Ljava/lang/String;
.end local v2 #_arg1:Ljava/lang/String;
.end local v3 #_arg2:I
.end local v4 #_arg3:I
.end loca.line 183
const/4 v0, 0x1
goto/16 :goto_7
.line 187
.end local v1 #_arg0:Ljava/lang/String;
.end local v2 #_arg1:Ljava/lang/String;
.end local v3 #_arg2:I
.end local v4 #_arg3:I
.end local v5 #_arg4:I
.end local v6 #_arg5:Ljava/lang/String;
:sswitch_132
const-string v0, "com.android.internal.statusbar.IStatusBarService"
invoke-virtual {p2, v0}, Landroid/os/Parcel;->enforceInterface(Ljava/lang/String;)V
.line 188
invoke-virtual {p0}, Lcom/android/internal/statusbar/IStatusBarService$Stub;->onClearAllNotifications()V
.line 189
invoke-virtual {p3}, Landroid/os/Parcel;->writeNoException()V
.line 190
const/4 v0, 0x1
goto/16 :goto_7
.end local v1 #_arg0:Ljava/lang/String;
.end local v2 #_arg1:Ljava/lang/String;
.end local v3 #_arg2:I
:sswitch_140
const-string v0, "com.android.internal.statusbar.IStatusBarService"
invoke-virtual {p2, v0}, Landroid/os/Parcel;->enforceInterface(Ljava/lang/String;)V
.line 177
invoke-virtual {p2}, Landroid/os/Parcel;->readString()Ljava/lang/String;
move-result-object v1
.line 178
.restart local v1 #_arg0:Ljava/lang/String;
invoke-virtual {p2}, Landroid/os/Parcel;->readString()Ljava/lang/String;
move-result-object v2
.line 179
.restart local v2 #_arg1:Ljava/lang/String;
invoke-virtual {p2}, Landroid/os/Parcel;->readInt()I
move-result v3
.line 180
.restart local v3 #_arg2:I
invoke-virtual {p0, v1, v2, v3}, Lcom/android/internal/statusbar/IStatusBarService$Stub;->onNotificationClear(Ljava/lang/String;Ljava/lang/String;I)V
.line 181
invoke-virtual {p3}, Landroid/os/Parcel;->writeNoException()V
.line 182
const/4 v0, 0x1
goto/16 :goto_7
.line 39
:sswitch_data_15a
.sparse-switch
0x1 -> :sswitch_f
0x2 -> :sswitch_1c
0x3 -> :sswitch_29
0x4 -> :sswitch_42
0x5 -> :sswitch_5f
0x6 -> :sswitch_7b
0x7 -> :sswitch_8d
0x8 -> :sswitch_9b
0x9 -> :sswitch_a9
0xa -> :sswitch_e3
0xb -> :sswitch_f1
0xc -> :sswitch_10b
0xd -> :sswitch_132
0xe -> :sswitch_140
0x5f4e5446 -> :sswitch_8
.end sparse-switch
.end method
.method public onNotificationClear(Ljava/lang/String;Ljava/lang/String;I)V
.registers 9
.parameter "pkg"
.parameter "tag"
.parameter "id"
.annotation system Ldalvik/annotation/Throws;
value = {
Landroid/os/RemoteException;
}
.end annotation
.prologue
.line 359
invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel;
move-result-object v0
.line 360
.local v0, _data:Landroid/os/Parcel;
invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel;
move-result-object v1
.line 362
.local v1, _reply:Landroid/os/Parcel;
:try_start_8
const-string v2, "com.android.internal.statusbar.IStatusBarService"
invoke-virtual {v0, v2}, Landroid/os/Parcel;->writeInterfaceToken(Ljava/lang/String;)V
.line 363
invoke-virtual {v0, p1}, Landroid/os/Parcel;->writeString(Ljava/lang/String;)V
.line 364
invoke-virtual {v0, p2}, Landroid/os/Parcel;->writeString(Ljava/lang/String;)V
.line 365
invoke-virtual {v0, p3}, Landroid/os/Parcel;->writeInt(I)V
.line 366
iget-object v2, p0, Lcom/android/internal/statusbar/IStatusBarService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
const/16 v3, 0xc
const/4 v4, 0x0
invoke-interface {v2, v3, v0, v1, v4}, Landroid/os/IBinder;->transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
.line 367
invoke-virtual {v1}, Landroid/os/Parcel;->readException()V
:try_end_21
.catchall {:try_start_8 .. :try_end_21} :catchall_28
.line 370
invoke-virtual {v1}, Landroid/os/Parcel;->recycle()V
.line 371
invoke-virtual {v0}, Landroid/os/Parcel;->recycle()V
.line 373
return-void
.line 370
:catchall_28
move-exception v2
invoke-virtual {v1}, Landroid/os/Parcel;->recycle()V
.line 371
invoke-virtual {v0}, Landroid/os/Parcel;->recycle()V
throw v2
.end method
const/16 v3, 0xc
const/4 v4, 0x0
invoke-interface {v2, v3, v0, v1, v4}, Landroid/os/IBinder;->transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
the bold one must same with IStatusBarService$Stub.smali line 43, TRANSACTION_onNotificatioError
.method public abstract onNotificationClear(Ljava/lang/String;Ljava/lang/String;I)V
.annotation system Ldalvik/annotation/Throws;
value = {
Landroid/os/RemoteException;
}
.end annotation
.end method
Download
If you don't like the progress and wanna the result then you can download it here : Swipeyour ROM must be stock rom with S5660DXKT8 baseband.
password : andylah
if you wanna apply this, you must be using adb command cause i don't know how to create flashable update.zip right now :)


