This is a porting for s advance of the known mod "23 Statusbar toggles to Samsung Jelly Bean Roms" by Wanam.
His thread: http://forum.xda-developers.com/showthread.php?p=35093377#post35093377
Here is how it looks like :
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Tested on XXLQG and UBLPH
Problems: flashlight not working (we have a widget for that)
Reboot doesn't work
What you need:
Deodexed firmware;
Custom recovery
How to:
Download
Flash from recovery
Download!?
See attachments
Credits:
Wanam for his awesome work;
Unknownforce for advices I found in Wanam's thread
dema121 for his tool http://forum.xda-developers.com/showthread.php?t=1876685 (had to change update-binary but your tool is awesome )
XDA community, of course
Ok, let's start the guide!
Decompile your SystemUI.apk
"red color" means that line(s) has been added, search the line before the one in red to find where you have to add or change something
Make sure your "tw_status_bar_expanded.xml" looks like this:
Code:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:id="@id/notification_panel" android:background="@drawable/notification_panel_bg" android:paddingTop="@dimen/notification_panel_padding_top" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginLeft="@dimen/notification_panel_margin_left"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
<FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginBottom="@dimen/tw_close_handle_underlap">
<include android:layout_width="fill_parent" android:layout_height="@dimen/tw_notification_panel_header_height" layout="@layout/tw_status_bar_expanded_header" />
<TextView android:gravity="center" android:id="@id/emergency_calls_only" android:paddingBottom="4.0dip" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" />
<View android:background="#ff091a24" android:layout_width="fill_parent" android:layout_height="1.0dip" android:layout_marginTop="@dimen/tw_notification_panel_header_height" />
<ScrollView android:id="@id/scroll" android:fadingEdge="none" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginTop="@dimen/tw_notification_panel_header_line_height" android:overScrollMode="ifContentScrolls">
<LinearLayout android:orientation="vertical" android:id="@id/scrollCart" android:layout_width="fill_parent" android:layout_height="wrap_content">
<HorizontalScrollView android:id="@id/quicksetting_scroller" [color=red]android:visibility="gone"[/color] android:scrollbars="none" android:layout_width="wrap_content" android:layout_height="@dimen/quick_setting_button_height">
<com.android.systemui.statusbar.policy.quicksetting.QuickSettingPanel android:orientation="horizontal" android:id="@id/quicksetting_container" android:layout_width="wrap_content" android:layout_height="wrap_content" android:divider="@drawable/tw_black_bg" android:showDividers="middle" />
</HorizontalScrollView>
[color=red]<com.wanam.systemui.quickpanel.PowerWidget android:id="@id/exp_power_stat" android:layout_width="wrap_content" android:layout_height="@dimen/quick_setting_button_height" android:layout_marginTop="@dimen/notification_divider_height" />[/color]
<LinearLayout android:orientation="vertical" android:id="@id/brightness_controller" android:background="#ff000000" android:layout_width="fill_parent" android:layout_height="56.0dip">
<LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="55.0dip">
<ImageView android:id="@id/brightness_icon" android:clickable="true" android:layout_width="25.0dip" android:layout_height="fill_parent" android:layout_marginLeft="13.0dip" android:src="@drawable/ic_sysbar_brightness" android:contentDescription="@string/accessibility_brightness_icon" />
<FrameLayout android:id="@id/brightness_group" android:layout_width="fill_parent" android:layout_height="fill_parent">
<com.android.systemui.statusbar.policy.ToggleSlider android:id="@id/brightness" android:layout_width="fill_parent" android:layout_height="fill_parent" systemui:text="@string/status_bar_settings_auto_brightness_label" />
<com.android.systemui.statusbar.policy.ToggleSlider android:id="@id/auto_brightness" android:layout_width="fill_parent" android:layout_height="fill_parent" systemui:text="@string/status_bar_settings_auto_brightness_label" />
</FrameLayout>
</LinearLayout>
<View android:background="#ff091a24" android:layout_width="fill_parent" android:layout_height="1.0dip" />
</LinearLayout>
<LinearLayout android:orientation="vertical" android:id="@id/noNotificationsTitle" android:focusable="true" android:layout_width="fill_parent" android:layout_height="wrap_content">
<TextView android:textSize="@dimen/status_bar_expanded_notification_category_text_size" android:textColor="@color/notification_category_color" android:gravity="left|center" android:id="@id/noNotificationsText" android:paddingLeft="11.0dip" android:layout_width="fill_parent" android:layout_height="@dimen/status_bar_expanded_notification_category_height" android:text="@string/status_bar_no_notifications_title" />
</LinearLayout>
<LinearLayout android:orientation="vertical" android:id="@id/onGoingCart" android:background="#ff293945" android:focusable="true" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="@dimen/status_bar_expanded_notification_category_height">
<TextView android:textSize="@dimen/status_bar_expanded_notification_category_text_size" android:textColor="@color/notification_category_color" android:gravity="left|center" android:id="@id/onGoingNotificationText" android:paddingLeft="11.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="@string/status_bar_ongoing_events_title" />
</LinearLayout>
<com.android.systemui.statusbar.policy.NotificationRowLayout android:id="@id/onGoingItems" android:layout_width="fill_parent" android:layout_height="wrap_content" systemui:rowHeight="@dimen/tw_notification_row_min_height" />
<LinearLayout android:orientation="vertical" android:id="@id/notificationCart" android:background="#ff293945" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="@dimen/status_bar_expanded_notification_category_height">
<RelativeLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content">
<TextView android:textSize="@dimen/status_bar_expanded_notification_category_text_size" android:textColor="@color/notification_category_color" android:gravity="left|center" android:id="@id/latestNotificationText" android:paddingLeft="11.0dip" android:layout_width="180.0dip" android:layout_height="fill_parent" android:text="@string/status_bar_latest_events_title" android:layout_alignParentLeft="true" />
<TextView android:textSize="@dimen/status_bar_expanded_notification_clear_button_text_size" android:textColor="@color/tw_status_bar_clear_btn_text" android:gravity="center" android:id="@id/clear_all_button" android:background="@drawable/tw_btn_default_small" android:padding="0.100000024dip" android:focusable="true" android:clickable="true" android:layout_width="@dimen/status_bar_expanded_clear_button_width" android:layout_height="fill_parent" android:layout_marginRight="4.0dip" android:text="@string/status_bar_clear_all_button" android:layout_alignParentRight="true" android:contentDescription="@string/accessibility_clear_all" />
</RelativeLayout>
</LinearLayout>
<com.android.systemui.statusbar.policy.NotificationRowLayout android:id="@id/notificationItems" android:layout_width="fill_parent" android:layout_height="wrap_content" systemui:rowHeight="@dimen/tw_notification_row_min_height" />
<com.android.systemui.statusbar.policy.NotificationRowLayout android:id="@id/latestItems" android:layout_width="fill_parent" android:layout_height="wrap_content" systemui:rowHeight="@dimen/tw_notification_row_min_height" />
</LinearLayout>
</ScrollView>
</FrameLayout>
<com.android.systemui.statusbar.phone.CloseDragHandle android:layout_gravity="bottom" android:orientation="vertical" android:id="@id/close" android:layout_width="fill_parent" android:layout_height="@dimen/tw_close_handle_height">
<RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent">
<ImageView android:layout_gravity="bottom" android:layout_width="fill_parent" android:layout_height="@dimen/tw_close_handle_height" android:src="@drawable/tw_status_bar_close" android:scaleType="fitXY" />
<TextView android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Network" android:ellipsize="marquee" android:gravity="center" android:layout_gravity="bottom" android:id="@id/carrier_label" android:layout_width="fill_parent" android:layout_height="@dimen/tw_close_handle_height" android:layout_marginBottom="10.0dip" android:singleLine="true" />
</RelativeLayout>
</com.android.systemui.statusbar.phone.CloseDragHandle>
</FrameLayout>
Edit "dimens.xml"
Code:
<dimen name="quick_setting_button_height">[color=red]95.0dip[/color]</dimen>
Edit "SystemUI.apk\res\values\ids.xml" and add this Id:
Code:
<item type="id" name="exp_power_stat">false</item>
Edit "SystemUI.apk\smali\com\android\systemui\statusbar \phone\PhoneStatusBar.smali":
1-
Code:
.field mPostCollapseCleanup:Ljava/lang/Runnable;
[COLOR="Red"].field mPowerWidget:Lcom/wanam/systemui/quickpanel/PowerWidget;[/COLOR]
.field mQueueLock:Ljava/lang/Object;
2-
Code:
invoke-virtual {v1, v0, p3, v2}, Landroid/widget/LinearLayout;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V
.line 1120
[COLOR="red"]iget-object v1, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mPowerWidget:Lcom/wanam/systemui/quickpanel/PowerWidget;
invoke-virtual {v1}, Lcom/wanam/systemui/quickpanel/PowerWidget;->updateWidget()V[/COLOR]
return-void
3-
Code:
invoke-virtual {v9, v10}, Landroid/widget/ScrollView;->setVerticalScrollBarEnabled(Z)V
[COLOR="red"]move-object/from16 v0, p0
iget-object v9, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarWindow:Lcom/android/systemui/statusbar/phone/StatusBarWindowView;
const v10, [COLOR="Black"]0x7f0d010e[/COLOR]
invoke-virtual {v9, v10}, Lcom/android/systemui/statusbar/phone/StatusBarWindowView;->findViewById(I)Landroid/view/View;
move-result-object v9
check-cast v9, Lcom/wanam/systemui/quickpanel/PowerWidget;
move-object/from16 v0, p0
iput-object v9, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mPowerWidget:Lcom/wanam/systemui/quickpanel/PowerWidget;[/COLOR]
.line 698
new-instance v9, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$MyTicker;
4-
Code:
invoke-virtual {v1, v9, v2}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
[COLOR="Red"]move-object/from16 v0, p0
iget-object v9, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mPowerWidget:Lcom/wanam/systemui/quickpanel/PowerWidget;
invoke-virtual {v9}, Lcom/wanam/systemui/quickpanel/PowerWidget;->setupWidget()V[/COLOR]
.line 826
sget-boolean v9, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->useTouchWizGUI:Z
Extract attached "wanam.zip" and copy both folders "com" & "wanam" to your "SystemUI.apk\smali\".
That's all, recompile your SystemUI.
After building, make sure your Id "exp_power_stat" got the public id "0x7f0d010e", if you got a different Id, use your new public Id in the "makeStatusBarView" method.
Download attached "system.zip" , you need to copy Toggle buttons resources "lidroid-res.apk" to "system/framework", and "LidroidSettings.apk" to "/system/app" (with permissions 644).
So i only have to download the zip. And install it through twrp or cwm?
Sent from my GT-I9070 using xda app-developers app
Works on lp8! Thanks a lot! The only thing i noticed is that i'm unable to press settings button in notification panel but it's not important for me!
Thanks
Phoneboot said:
So i only have to download the zip. And install it through twrp or cwm?
Sent from my GT-I9070 using xda app-developers app
Click to expand...
Click to collapse
Yep
m i n a r said:
Works on lp9! Thanks a lot! The only thing i noticed is that i'm unable to press settings button in notification panel but it's not important for me!
Click to expand...
Click to collapse
Mmm..I hadn't noticed..I'll look into that
Sent from my N73 using Tapa
deopeall distance
m i n a r said:
The only thing i noticed is that i'm unable to press settings button in notification panel :
Click to expand...
Click to collapse
Idem in my case :silly:
Someone already tryed it on xlqe?
Hmm but then im missing my harsh jelly v2.1 battery icon.
Sent from my GT-I9070 using xda app-developers app
Does the reboot work? Just wonderin...
sent from my phone cause i can
bobfrantic said:
Does the reboot work? Just wonderin...
sent from my phone cause i can
Click to expand...
Click to collapse
Reboot doesn't work
is possible to use dormant mode! Just long press on the toggle and its settings will appear!
Nice work,, Working on LQ4 but setting icon not work and when on flash light nothing happen and systemui "unfortunately stopped" then re launched again after few second. do I unstalled.
m i n a r said:
Reboot doesn't work
is possible to use dormant mode! Just long press on the toggle and its settings will appear!
Click to expand...
Click to collapse
Now all that is need to be done: multiwindow
Verstuurd van mijn GT-I9070 met Tapatalk
Settings button now works (searched for the problem all the morning then discovered it was a stupid error )
Phoneboot said:
Someone already tryed it on xlqe?
Hmm but then im missing my harsh jelly v2.1 battery icon.
Sent from my GT-I9070 using xda app-developers app
Click to expand...
Click to collapse
Follow guide on post #2 and add this to that rom :good:
Jeroenvk94 said:
Now all that is need to be done: multiwindow
Verstuurd van mijn GT-I9070 met Tapatalk
Click to expand...
Click to collapse
come in man, we know you can do it
Jeroenvk94 said:
Now all that is need to be done: multiwindow
Verstuurd van mijn GT-I9070 met Tapatalk
Click to expand...
Click to collapse
I hope someone will do it :fingers-crossed: is the only thing that was tried and tried but never done i can be a tester or help, but i'm still a noob in mod. Anyway thank you for all your work!
Toni5830 said:
Settings button now works (searched for the problem all the morning then discovered it was a stupid error )
Click to expand...
Click to collapse
What we have to do?
Inviato dal mio S Advance HarshJelly + CoCore 7.6
maldex said:
What we have to do?
Inviato dal mio S Advance HarshJelly + CoCore 7.6
Click to expand...
Click to collapse
Download and flash
Sent from my N73 using Tapa
If you want can you do a transparent statusbar version? I'm trying to do it by myself but i don't have enough time this month
Toni5830 said:
Download and flash
Sent from my N73 using Tapa
Click to expand...
Click to collapse
Right , but setting button on notification pannel dosn' t work.
I ask for that.
Inviato dal mio S Advance HarshJelly + CoCore 7.6
maldex said:
Right , but setting button on notification pannel dosn' t work.
I ask for that.
Inviato dal mio S Advance HarshJelly + CoCore 7.6
Click to expand...
Click to collapse
The version I uploaded this morning?!? I hope I didn't upload the wrong file :banghead:
Sent from my N73 using Tapa
Ok, I downloaded it again and now it's ok .thanx .
Inviato dal mio S Advance HarshJelly + CoCore 7.6
Related
Swipe-to-remove Notification for Froyo
Well I finally figure it all out. It looks simple, but it took me nearly two months to finish this. This should work in other Froyo phones as well.
Disclaimer: I take no responsibility whatsoever. This is based on stock XXJPS framework, but it should also work with others.
To developers and themers, you are free to use this in your ROM, but please post a link to this thread and give proper credits to me and hansip87.
Credits/Thanks:
Big thanks to hansip87 for the original guide and for helping me.
Big thanks to marcellusbe for porting CM6. Can't make this without those codes.
Thanks to Arjav23 and kyrillos13 for some help.
Step 1
Click to expand...
Click to collapse
a. Decompile "framework-res.apk"
b. Download "swipe-framework-res.zip" and extract those two files to "/res/anim/"
c. Open "/res/layout/status_bar_latest_event.xml"
Now change the "<LinearLayout" to "<com.android.server.status.LatestItemContainer" like this:
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="65.0sp"
xmlns:android="http://schemas.android.com/apk/res/android">
<com.android.server.status.LatestItemView android:id="@id/content" android:background="@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" />
<View android:background="@drawable/divider_horizontal_bright" android:layout_width="fill_parent" android:layout_height="1.0sp" />
</LinearLayout>
to this:
Code:
<?xml version="1.0" encoding="utf-8"?>
<[B]com.android.server.status.LatestItemContainer [/B]android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="65.0sp"
xmlns:android="http://schemas.android.com/apk/res/android">
<com.android.server.status.LatestItemView android:id="@id/content" android:background="@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" />
<View android:background="@drawable/divider_horizontal_bright" android:layout_width="fill_parent" android:layout_height="1.0sp" />
</[B]com.android.server.status.LatestItemContainer[/B]>
d. Now the IDs for "slide_out_left_basic.xml" and "slide_out_right_basic.xml", so basically, compile it and then decompile it again.
e. Open "/res/value/public.xml" in Notepad++ and you should get something like this:
Code:
<public type="anim" name="slide_out_left_basic" id="[B]0x010a0048[/B]" />
<public type="anim" name="slide_out_right_basic" id="[B]0x010a0049[/B]" />
You may have a different ID depending on the ROM you're using, so just keep a note of it.
Step 2
Click to expand...
Click to collapse
a. Decompile "services.jar"
b. Download "swipe-services.zip" and extract all three files to "/out/com/android/server/status/"
(If you already have the JB mods installed, then change "StatusBarService$41.smali" to "StatusBarService$42.smali".)
c. Open "LatestItemContainer$1.smali" and find this line:
Code:
.line 47
const v1,[B] 0x10a0049[/B]
(This code refers to the "slide_out_right_basic.xml" ID, so if you have a different one, just change it)
And this line:
Code:
.line 49
:cond_3c
const v1, [B]0x10a0048[/B]
(This one refers to the "slide_out_left_basic.xml" ID, so if you have a different one, just change it)
Save and close.
d. Open "/out/com/android/server/status/StatusBarService.smali"
Find this line:
Code:
invoke-virtual {v0, v1, v2, v3}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;Z)Landroid/view/View;
and below "move-result-object v17", remove these following line:
Code:
.line 1346
.local v17, row:Landroid/view/View;
then paste these lines:
Code:
[B] check-cast v17, Lcom/android/server/status/LatestItemContainer;
.line 1346
.local v17, row:Lcom/android/server/status/LatestItemContainer;
iget-boolean v4, v15, Lcom/android/server/status/NotificationData;->clearable:Z
if-eqz v4, :cond_ae
.line 1600
new-instance v4, Lcom/android/server/status/StatusBarService$41;
move-object v0, v4
move-object/from16 v1, p0
move-object v2, v15
invoke-direct {v0, v1, v2}, Lcom/android/server/status/StatusBarService$41;-><init>(Lcom/android/server/status/StatusBarService;Lcom/android/server/status/NotificationData;)V
move-object/from16 v0, v17
move-object v1, v4
invoke-virtual {v0, v1}, Lcom/android/server/status/LatestItemContainer;->setOnSwipeCallback(Ljava/lang/Runnable;)V
.line 1606
:cond_ae[/B]
const v4, 0x1020002
move-object/from16 v0, v17
move v1, v4
[B]invoke-virtual {v0, v1}, Lcom/android/server/status/LatestItemContainer;->findViewById(I)Landroid/view/View;[/B]
(remember, "StatusBarService$41")
Find this line:
Code:
invoke-virtual {v0, v1}, Landroid/view/View;->setDrawingCacheEnabled(Z)V
change to:
Code:
invoke-virtual {v0, v1}, Lcom/android/server/status/LatestItemContainer;->setDrawingCacheEnabled(Z)V
e. Open "/out/com/android/server/status/StatusBarService$NotificationCallbacks.smali" and add this code above "onNotificationClick"
Code:
.method public abstract onNotificationClear(Ljava/lang/String;Ljava/lang/String;I)V
.end method
f. Open "/out/com/android/server/NotificationManagerService$1.smali" and also add these codes above "onNotificationClick"
Code:
.method public onNotificationClear(Ljava/lang/String;Ljava/lang/String;I)V
.registers 10
.parameter "pkg"
.parameter "tag"
.parameter "id"
.prologue
.line 346
iget-object v0, p0, Lcom/android/server/NotificationManagerService$1;->this$0:Lcom/android/server/NotificationManagerService;
const/4 v4, 0x0
const/16 v5, 0x40
move-object v1, p1
move-object v2, p2
move v3, p3
#calls: Lcom/android/server/NotificationManagerService;->cancelNotification(Ljava/lang/String;Ljava/lang/String;III)V
invoke-static/range {v0 .. v5}, Lcom/android/server/NotificationManagerService;->access$500(Lcom/android/server/NotificationManagerService;Ljava/lang/String;Ljava/lang/String;III)V
.line 347
return-void
.end method
g. Save everything, compile, and you're finished
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
NOTE (if you have JB mod installed): Tricky part is the smali numbering. You can't only change the file number, you also need to change the codes inside StatusBarService.smali to refer to it. Remember, $41 to $42. DO NOT GET BOTH MIXED UP!
JellyBean Styled Notification Drawer
Disclaimer: I take no responsibility whatsoever. Please note that this tutorial is for "deodex-ed" frameworks only. If your current ROM is "odex-ed", then deodex it using this method or just grab a copy of a deodex-ed theme. And if you want this in a custom ROM you like, then I suggest you to ask the developer to apply these features themselves.
To developers and themers, you are free to use this in your ROM or Theme, but please give proper credits.
Credits/Thanks:
AChep & petrukgrinder for developing and creating a guide.
Jason-EX (me) for changing the code for Galaxy 3.
Requirement:
APK Multi-Tool for de-compiling and compiling APKs.
Smali/Baksmali for de-compiling and compiling JARs.
Notepad++ for editing XML and SMALI files.
Adobe Photoshop or GIMP for editing framework images (optional).
A copy of "twframework-res.apk" and "services.jar" from "/system/framework/".
And a backup copy of those two framework files.
How to de-compile and compile APK and JAR files
Click to expand...
Click to collapse
For APKs,
1. Download APK Multi-Tool from here. (Skip this part if you already have "APK Manager" or APKTool".)
2. Extract and run "Setup.exe". (Skip this part if you already have "APK Manager" or APKTool".)
3. Place the file needed for this mod in "place-apk-here-for-modding".
4. Decompile it (no.9), and start editing files needed.
5. After that, set compression level to "0" (no.21), then compile (no.11).
For JARs,
1. Download Smali/Baksmali from here.
2. Cut and paste them to a directory that is easy to get access (I recommend "C:/").
3. Place the required file to be edit to the same directory.
4. Now type in command prompt: "cd\" (enter) "cd /directory/".
5. To de-compile, type: "java -jar baksmali.jar -x for-modding.jar -o out".
6. To compile, type: "java -jar smali.jar -x out -o classes.dex".
7. Then replace the classes.dex with the original JAR file that you want to edit.
Adding Time and Date
Click to expand...
Click to collapse
1. De-compile "services.jar".
2. Download "JB-time-date.zip" from attachment, then extract both files to "/out/com/android/server/status/".
3. Compile "services.jar".
4. De-compile "twframework-res.apk" then open "twframework-res/res/layout/status_bar_expanded.xml".
Add this code above the first "<LinearLayout"
Code:
<RelativeLayout android:orientation="horizontal" android:background="@color/tw_color002" android:layout_width="fill_parent" android:layout_height="47.0dip">
<LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true">
<com.android.server.status.StatusBarJellyHeaderView android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
</RelativeLayout>
6. Save and compile "twframework-res.apk"
Adding Clear button
Click to expand...
Click to collapse
1. Download "JB-clear-btn.zip" from attachment below.
2. Decompile "twframework-res.apk"
3. Extract "JB-clear-btn.zip" and copy those two images to "/res/drawable-ldpi/"
4. Copy "btn_clear.xml" to "/res/drawable"
5. Open "/res/layout/status_bar_expanded.xml"
Find this code added from the Time and Date:
Code:
<RelativeLayout android:orientation="horizontal" android:background="@color/tw_color002" android:layout_width="fill_parent" android:layout_height="47.0dip">
<LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true">
<com.android.server.status.StatusBarJellyHeaderView android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
</RelativeLayout>
Then add this code:
Code:
<RelativeLayout android:orientation="horizontal" android:background="@color/tw_color002" android:layout_width="fill_parent" android:layout_height="47.0dip">
<LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true">
<com.android.server.status.StatusBarJellyHeaderView android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
[B]<LinearLayout android:orientation="horizontal" android:paddingRight="6.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true">
<Button android:textColor="@android:color/transparent" android:layout_gravity="center_vertical" android:id="@id/clear_all_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_clear_all_button" style="@style/Btn.Clear" />
</LinearLayout>[/B]
</RelativeLayout>
And remove this code:
Code:
<Button android:textSize="14.0sp" android:layout_gravity="center_vertical" android:id="@id/clear_all_button" android:layout_width="75.0dip" android:layout_height="wrap_content" android:layout_marginTop="5.0dip" android:layout_marginRight="6.0dip" android:text="@string/status_bar_clear_all_button" style="?android:attr/buttonStyleSmall" />
6. Open "/res/value/styles.xml"
Paste this code at the end of the file:
Code:
<style name="Btn.Clear" parent="@*android:style/Widget.Button">
<item name="android:textColor">#ffffffff</item>
<item name="android:gravity">center</item>
<item name="android:background">@drawable/btn_clear</item>
<item name="android:clickable">true</item>
</style>
7. Save everything and compile "twframework-res.apk"
Adding Settings shortcut button
Click to expand...
Click to collapse
1. Download "JB-settings-btn.zip" from attachment below.
2. Decompile "twframework-res.apk" and open "/res/layout/status_bar_expanded.xml"
Find the code added from Clear button
Code:
<RelativeLayout android:orientation="horizontal" android:background="@color/tw_color002" android:layout_width="fill_parent" android:layout_height="47.0dip">
<LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true">
<com.android.server.status.StatusBarJellyHeaderView android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:paddingRight="6.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true">
<Button android:textColor="@android:color/transparent" android:layout_gravity="center_vertical" android:id="@id/clear_all_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_clear_all_button" style="@style/Btn.Clear" />
</LinearLayout>
</RelativeLayout>
Then add these two lines:
Code:
<RelativeLayout android:orientation="horizontal" android:background="@color/tw_color002" android:layout_width="fill_parent" android:layout_height="47.0dip">
<LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true">
<com.android.server.status.StatusBarJellyHeaderView android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:paddingRight="6.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true">
<Button android:textColor="@*android:color/transparent" android:layout_gravity="center_vertical" android:id="@id/clear_all_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_clear_all_button" style="@style/Btn.Clear" />
[B]<View android:visibility="invisible" android:layout_width="1.0dip" android:layout_height="wrap_content" />
<ImageView android:layout_gravity="center_vertical" android:id="@id/settings_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_notify_quicksettings" android:contentDescription="@string/accessibility_settings_button" />[/B]
</LinearLayout>
</RelativeLayout>
3. Open "/res/value/ids.xml" and add this code at the end of the file:
Code:
<item type="id" name="settings_button">false</item>
4. Open "/res/value/strings.xml" and add this code at the end of the file:
Code:
<string name="accessibility_settings_button">System settings.</string>
4. Extract the two images from "JB-settings-btn.zip" and paste it in "/res/drawable-ldpi/", then extract "ic_notify_quicksettings.xml" and paste it in "/res/drawable/".
5. Now you'll have to compile "twframework-res.apk" and decompile it again
6. Open "/res/value/public.xml" and find this line:
Code:
<public type="id" name="settings_button" id="[B]0x02040061[/B]" />
(Keep a note of the ID value)
7. Decompile "services.jar" and open "/out/com/android/server/status/StatusBarServices.smali"
8. Find this line:
Code:
.field mScrollView:Landroid/widget/ScrollView;
Then paste these two lines below:
Code:
.field mSettingsBut:Landroid/view/View;
.field private mSettingsButListener:Landroid/view/View$OnClickListener;
9. Find this line:
Code:
iput-object v0, p0, Lcom/android/server/status/StatusBarService;->mStopTracing:Ljava/lang/Runnable;
Then paste these lines below:
Code:
.line 4000
new-instance v0, Lcom/android/server/status/StatusBarService$41;
invoke-direct {v0, p0}, Lcom/android/server/status/StatusBarService$41;-><init>(Lcom/android/server/status/StatusBarService;)V
iput-object v0, p0, Lcom/android/server/status/StatusBarService;->mSettingsButListener:Landroid/view/View$OnClickListener;
10. Find this line:
Code:
iput v7, p0, Lcom/android/server/status/StatusBarService;->mEdgeBorder:I
Then paste these lines below:
Code:
.line 611
const v7, 0x2040061
invoke-virtual {v1, v7}, Lcom/android/server/status/ExpandedView;->findViewById(I)Landroid/view/View;
move-result-object v7
iput-object v7, p0, Lcom/android/server/status/StatusBarService;->mSettingsBut:Landroid/view/View;
.line 612
iget-object v7, p0, Lcom/android/server/status/StatusBarService;->mSettingsBut:Landroid/view/View;
iget-object v8, p0, Lcom/android/server/status/StatusBarService;->mSettingsButListener:Landroid/view/View$OnClickListener;
invoke-virtual {v7, v8}, Landroid/view/View;->setOnClickListener(Landroid/view/View$OnClickListener;)V
(Change the ID if you got a different one)
Code:
.line 611
const v7, [B]0x2040061[/B]
11. Now extract "StatusBarServices$41" from "JB-settings-btn" and paste it in "/out/com/android/server/status/"
12. Compile both "twframework-res.apk" and "services.jar"
Hiding the Status Bar when expanded
Click to expand...
Click to collapse
1. Grab a "framework-res.apk" and de-compile it
2. Go to "/res/layout/status_bar.xml"
3. Find the "DateView" code at the bottom of the file:
Code:
<com.android.server.status.DateView
Remove the whole line and replace it with this code:
Code:
<com.android.server.status.DateView android:textSize="0.00999999dip" android:textStyle="normal" android:textColor="#ff000000" android:gravity="center" android:id="@id/date" android:background="@color/black" android:paddingLeft="6.0px" android:paddingRight="6.0px" android:layout_width="fill_parent" android:layout_height="fill_parent" android:singleLine="true" />
Adding Carrier Label
Click to expand...
Click to collapse
1. Decompile "services.jar"
2. Download "JB-carrier-label.zip" from attachment and extract those files to "/out/com/android/server/status/"
3. Save and compile "services.jar"
4. Decompile "twframework-res.apk" and open "/res/layout/status_bar_tracking.xml"
5. Find this line:
Code:
<com.android.server.status.CloseDragHandle android:orientation="vertical" android:id="@id/close" android:layout_width="fill_parent" android:layout_height="wrap_content">
Then paste this line below:
Code:
<com.android.server.status.CarrierLabel android:textSize="15.0dip" android:textColor="#ffffffff" android:gravity="center_horizontal" android:background="@drawable/status_bar_background" android:paddingBottom="4.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content" />
6. Then open "/res/layout/status_bar_expanded.xml" and find this code:
Code:
<LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content">
<LinearLayout android:layout_gravity="center_vertical" android:orientation="vertical" android:paddingBottom="1.0dip" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_marginLeft="5.0dip" android:layout_marginTop="1.0dip" android:layout_weight="1.0">
<TextView android:textAppearance="?android:textAppearanceMedium" android:textColor="@color/tw_color001" android:layout_gravity="center_vertical" android:id="@id/plmnLabel" android:paddingLeft="4.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<TextView android:textAppearance="?android:textAppearanceMedium" android:textColor="@color/tw_color001" android:layout_gravity="center_vertical" android:id="@id/spnLabel" android:paddingLeft="4.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
<Button android:textSize="14.0sp" android:layout_gravity="center_vertical" android:id="@id/clear_all_button" android:layout_width="75.0dip" android:layout_height="wrap_content" android:layout_marginTop="5.0dip" android:layout_marginRight="6.0dip" android:text="@string/status_bar_clear_all_button" style="?android:attr/buttonStyleSmall" />
</LinearLayout>
And change the height of the first "Linear Layout" to "0.0dip":
Code:
<LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="[B]0.0dip[/B]">
<LinearLayout android:layout_gravity="center_vertical" android:orientation="vertical" android:paddingBottom="1.0dip" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_marginLeft="5.0dip" android:layout_marginTop="1.0dip" android:layout_weight="1.0">
<TextView android:textAppearance="?android:textAppearanceMedium" android:textColor="@color/tw_color001" android:layout_gravity="center_vertical" android:id="@id/plmnLabel" android:paddingLeft="4.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<TextView android:textAppearance="?android:textAppearanceMedium" android:textColor="@color/tw_color001" android:layout_gravity="center_vertical" android:id="@id/spnLabel" android:paddingLeft="4.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
<Button android:textSize="14.0sp" android:layout_gravity="center_vertical" android:id="@id/clear_all_button" android:layout_width="75.0dip" android:layout_height="wrap_content" android:layout_marginTop="5.0dip" android:layout_marginRight="6.0dip" android:text="@string/status_bar_clear_all_button" style="?android:attr/buttonStyleSmall" />
</LinearLayout>
7. Save and compile "twframework-res.apk"
Making the Tracking Bar clickable
Click to expand...
Click to collapse
1. Decompile "twframework-res.apk" and open "/res/layout/status_bar_tracking.xml"
2. Replace the whole "<ImageView" code with:
Code:
<ImageView android:layout_gravity="bottom" android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/status_bar_tracker" android:scaleType="fitXY" style="@style/Closer.bar" />
3. Download "JB-pressed-tracker.zip" from attachment below, and extract "status_bar_tracker.xml" to "/res/drawable/"
4. Open "/res/value/styles.xml" and add these code at the end of the file:
Code:
<style name="Closer.bar" parent="@android:style/Widget.Button">
<item name="android:gravity">center</item>
<item name="android:background">@drawable/status_bar_close_on</item>
<item name="android:clickable">true</item>
</style>
5. Now create a image in "/res/drawable-ldpi/" and name it "status_bar_close_pressed.png"
Examples:
"status_bar_close_on.png"
"status_bar_close_pressed.png"
Adding that little space between the notifications
Click to expand...
Click to collapse
1. Decompile "framework-res.apk"
2. Open "/res/layout/status_bar_latest_event.xml"
3. You'll see this:
Code:
<?xml version="1.0" encoding="utf-8"?>
<com.android.server.status.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.server.status.LatestItemView android:id="@id/content" android:background="@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" />
<View android:background="@drawable/something" android:layout_width="fill_parent" android:layout_height="1.0sp" />
</com.android.server.status.LatestItemContainer>
change it to this:
Code:
<?xml version="1.0" encoding="utf-8"?>
<com.android.server.status.LatestItemContainer android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="68.0sp"
xmlns:android="http://schemas.android.com/apk/res/android">
<View android:background="@null" android:layout_width="fill_parent" android:layout_height="4.0sp" />
<com.android.server.status.LatestItemView android:id="@id/content" android:background="@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" />
</com.android.server.status.LatestItemContainer>
Optional Customization
Click to expand...
Click to collapse
Moving Time and Date layout below the Toggle Buttons
Click to expand...
Click to collapse
If you've finish all the guide from the first post, then you should end up with something like this in "/res/layout/status_bar_expanded.xml":
Code:
<RelativeLayout android:orientation="horizontal" android:background="@color/tw_color002" android:layout_width="fill_parent" android:layout_height="47.0dip">
<LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true">
<com.android.server.status.StatusBarJellyHeaderView android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:paddingRight="6.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true">
<Button android:textColor="@*android:color/transparent" android:layout_gravity="center_vertical" android:id="@id/clear_all_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_clear_all_button" style="@style/Btn.Clear" />
<View android:visibility="invisible" android:layout_width="1.0dip" android:layout_height="wrap_content" />
<ImageView android:layout_gravity="center_vertical" android:id="@id/settings_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_notify_quicksettings" android:contentDescription="@string/accessibility_settings_button" />
</LinearLayout>
</RelativeLayout>
<LinearLayout android:orientation="vertical" android:id="@id/quickpanel_container" android:layout_width="fill_parent" android:layout_height="wrap_content">
<LinearLayout android:orientation="horizontal" android:background="@drawable/status_bar_background" android:layout_width="fill_parent" android:layout_height="50.0dip" android:layout_weight="1.0">
<TextView android:textSize="0.0dip" android:textColor="@color/tw_color002" android:gravity="center" android:id="@id/quickpanel_wifi_btn" android:background="@null" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawableTop="@drawable/quick_panel_icon_wifi_off" android:layout_weight="1.0" />
<TextView android:textSize="0.0dip" android:textColor="@color/tw_color002" android:gravity="center" android:id="@id/quickpanel_data_btn" android:background="@null" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawableTop="@drawable/quick_panel_icon_data_off" android:layout_weight="1.0" />
<TextView android:textSize="0.0dip" android:textColor="@color/tw_color002" android:gravity="center" android:id="@id/quickpanel_bt_btn" android:background="@null" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawableTop="@drawable/quick_panel_icon_bluetooth_off" android:layout_weight="1.0" />
<TextView android:textSize="0.0dip" android:textColor="@color/tw_color002" android:gravity="center" android:id="@id/quickpanel_gps_btn" android:background="@null" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawableTop="@drawable/quick_panel_icon_gps_off" android:layout_weight="1.0" />
<TextView android:textSize="0.0dip" android:textColor="@color/tw_color002" android:gravity="center" android:id="@id/quickpanel_sound_btn" android:background="@null" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawableTop="@drawable/quick_panel_icon_silent_off" android:layout_weight="1.0" android:soundEffectsEnabled="false" />
<TextView android:textSize="0.0dip" android:textColor="@color/tw_color002" android:gravity="center" android:id="@id/quickpanel_orientation_btn" android:background="@null" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawableTop="@drawable/quick_panel_icon_orientation_off" android:layout_weight="1.0" />
</LinearLayout>
</LinearLayout>
Now, to move it below the Toggle Buttons, just move the whole "Relative Layout" below the "Linear Layout".
Code:
<LinearLayout android:orientation="vertical" android:id="@id/quickpanel_container" android:layout_width="fill_parent" android:layout_height="wrap_content">
<LinearLayout android:orientation="horizontal" android:background="@drawable/status_bar_background" android:layout_width="fill_parent" android:layout_height="50.0dip" android:layout_weight="1.0">
<TextView android:textSize="0.0dip" android:textColor="@color/tw_color002" android:gravity="center" android:id="@id/quickpanel_wifi_btn" android:background="@null" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawableTop="@drawable/quick_panel_icon_wifi_off" android:layout_weight="1.0" />
<TextView android:textSize="0.0dip" android:textColor="@color/tw_color002" android:gravity="center" android:id="@id/quickpanel_data_btn" android:background="@null" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawableTop="@drawable/quick_panel_icon_data_off" android:layout_weight="1.0" />
<TextView android:textSize="0.0dip" android:textColor="@color/tw_color002" android:gravity="center" android:id="@id/quickpanel_bt_btn" android:background="@null" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawableTop="@drawable/quick_panel_icon_bluetooth_off" android:layout_weight="1.0" />
<TextView android:textSize="0.0dip" android:textColor="@color/tw_color002" android:gravity="center" android:id="@id/quickpanel_gps_btn" android:background="@null" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawableTop="@drawable/quick_panel_icon_gps_off" android:layout_weight="1.0" />
<TextView android:textSize="0.0dip" android:textColor="@color/tw_color002" android:gravity="center" android:id="@id/quickpanel_sound_btn" android:background="@null" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawableTop="@drawable/quick_panel_icon_silent_off" android:layout_weight="1.0" android:soundEffectsEnabled="false" />
<TextView android:textSize="0.0dip" android:textColor="@color/tw_color002" android:gravity="center" android:id="@id/quickpanel_orientation_btn" android:background="@null" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawableTop="@drawable/quick_panel_icon_orientation_off" android:layout_weight="1.0" />
</LinearLayout>
</LinearLayout>
[B] <RelativeLayout android:orientation="horizontal" android:background="@color/tw_color002" android:layout_width="fill_parent" android:layout_height="47.0dip">
<LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true">
<com.android.server.status.StatusBarJellyHeaderView android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:paddingRight="6.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true">
<Button android:textColor="@*android:color/transparent" android:layout_gravity="center_vertical" android:id="@id/clear_all_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_clear_all_button" style="@style/Btn.Clear" />
<View android:visibility="invisible" android:layout_width="1.0dip" android:layout_height="wrap_content" />
<ImageView android:layout_gravity="center_vertical" android:id="@id/settings_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_notify_quicksettings" android:contentDescription="@string/accessibility_settings_button" />
</LinearLayout>
</RelativeLayout>[/B]
Moving the Settings Shortcut Button to the right
Click to expand...
Click to collapse
If you follow the Settings Shortbut Button guide from the first post, you'll end up with this in "/res/layout/status_bar_expanded.xml":
Code:
<RelativeLayout android:orientation="horizontal" android:background="@color/tw_color002" android:layout_width="fill_parent" android:layout_height="47.0dip">
<LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true">
<com.android.server.status.StatusBarJellyHeaderView android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:paddingRight="6.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true">
<Button android:textColor="@*android:color/transparent" android:layout_gravity="center_vertical" android:id="@id/clear_all_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_clear_all_button" style="@style/Btn.Clear" />
<View android:visibility="invisible" android:layout_width="1.0dip" android:layout_height="wrap_content" />
<ImageView android:layout_gravity="center_vertical" android:id="@id/settings_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_notify_quicksettings" android:contentDescription="@string/accessibility_settings_button" />
</LinearLayout>
</RelativeLayout>
To move it to the left (like in JB 4.1.x), just change it like the following:
Code:
<RelativeLayout android:orientation="horizontal" android:background="@color/tw_color002" android:layout_width="fill_parent" android:layout_height="47.0dip">
<LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true">
<com.android.server.status.StatusBarJellyHeaderView android:layout_width="wrap_content" android:layout_height="wrap_content" />
[B]<ImageView android:layout_gravity="center_vertical" android:id="@id/settings_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_notify_quicksettings" android:contentDescription="@string/accessibility_settings_button" /> [/B]
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:paddingRight="6.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true">
<Button android:textColor="@*android:color/transparent" android:layout_gravity="center_vertical" android:id="@id/clear_all_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_clear_all_button" style="@style/Btn.Clear" />
</LinearLayout>
</RelativeLayout>
Note: If you're a developer or a themer, you can change it however you like. And if you find more optional tweaks, please feel free to post it here.
could you pls also post a short tut on how to decompile services.jar and twframework-res.apk
Arjav23 said:
could you pls also post a short tut on how to decompile services.jar and twframework-res.apk
Click to expand...
Click to collapse
Done!
Great work jason
Gonna implement this in pkh.
Everything ready
shwetanklal said:
Great work jason
Gonna implement this in pkh.
Click to expand...
Click to collapse
That would be fantastic
you read my mind!
good one jason puru.... nice guide
You Sir - are keeping this community alive! SUPER THANKS!
Update. Some short guides for optional customization
noob here. i am not able to decompile jar. its showing some error.
srgudhka said:
noob here. i am not able to decompile jar. its showing some error.
Click to expand...
Click to collapse
Put your Smali/Baksmali de-compiler and compiler with "services.jar", then in command prompt, type:
cd\
cd /directory/
java -jar baksmali.jar -x services.jar -o out
You shouldn't get any problem.
i did just that... gonna try everything again.
again. it saying unexpected top level exception. zip file services.jar does not contain dex file.
srgudhka said:
i did just that... gonna try everything again.
again. it saying unexpected top level exception. zip file services.jar does not contain dex file.
Click to expand...
Click to collapse
Every services.jar has a classes.dex in it.
EDIT: You have to install Java JDK
Jason-EX said:
Every services.jar has a classes.dex in it.
EDIT: You have to install Java JDK
Click to expand...
Click to collapse
i already had that installed. am getting still same errors.
srgudhka said:
i already had that installed. am getting still same errors.
Click to expand...
Click to collapse
Alright, check this one: http://www.youtube.com/watch?v=9h8kzHTp6fA
there is not classes.dex inside services.jar.
srgudhka said:
there is not classes.dex inside services.jar.
Click to expand...
Click to collapse
which rom are you using? and from where did you get the service.jar?
Hi Guys, I saw that evanlocked have not yet updated his guide
FlyMeOS StatusBar Mod as he is busy with his life. So I have made a guide on it.
Preview:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Requirements:
ApkTool
NotePad++
SystemUI.apk
framework-res.apk
SystemUI.zip
So let's start..
1. Decompile SystemUI.apk using ApkTool
2. Extract SystemUI.zip and copy the smali files in their respective folders
3. Navigate to SystemUI\res\layout and open status_bar.xml
with NotePad++
4. Compare your status_bar.xml with this
Code:
<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.StatusBarView android:orientation="vertical" android:background="#00000000" android:focusable="true" android:descendantFocusability="afterDescendants"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout android:orientation="horizontal" android:id="@id/icons" android:paddingLeft="2.0dip" android:paddingRight="2.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent">
<RelativeLayout android:orientation="horizontal" android:id="@id/clock_panel" android:layout_width="wrap_content" android:layout_height="wrap_content">
<com.b16h22.statusbar.ClockHolo android:textSize="10.0sp" android:layout_gravity="center_vertical" android:id="@id/clock" android:paddingLeft="3.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />
<com.b16h22.statusbar.Day android:textSize="0.0px" android:gravity="center_vertical" android:id="@id/dayView" android:layout_width="0.0px" android:layout_height="0.0px" android:layout_marginLeft="0.0dip" android:layout_marginTop="0.0dip" android:layout_toRightOf="@id/clock" />
<com.b16h22.statusbar.Date android:textSize="1.0sp" android:gravity="center_vertical" android:id="@id/dateView" android:paddingTop="16.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4.0dip" android:layout_marginTop="5.0dip" android:layout_toRightOf="@id/clock" />
<LinearLayout android:orientation="vertical" android:paddingLeft="6.0dip" android:paddingRight="0.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:gravity="right" android:paddingLeft="2.0dip" android:paddingRight="2.0dip" android:layout_width="fill_parent" android:layout_height="0.0dip" android:layout_weight="1.0">
<com.android.systemui.statusbar.IconMerger android:gravity="right" android:orientation="horizontal" android:id="@id/notificationIcons" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1.0" android:layout_alignParentLeft="true" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:paddingRight="2.0dip" android:layout_width="fill_parent" android:layout_height="0.0dip" android:layout_weight="1.0">
<LinearLayout android:gravity="right" android:layout_width="fill_parent" android:layout_height="wrap_content">
<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/statusIcons" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentRight="true" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:id="@id/ticker" android:background="#ff000000" android:animationCache="false" android:layout_width="fill_parent" android:layout_height="fill_parent">
<ImageSwitcher android:id="@id/tickerIcon" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginRight="8.0dip">
<com.android.systemui.statusbar.AnimatedImageView android:layout_width="25.0dip" android:layout_height="25.0dip" />
<com.android.systemui.statusbar.AnimatedImageView android:layout_width="25.0dip" android:layout_height="25.0dip" />
</ImageSwitcher>
<com.android.systemui.statusbar.TickerView android:id="@id/tickerText" android:paddingTop="2.0dip" android:paddingRight="7.0dip" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_weight="1.0">
<TextView android:textAppearance="@*android:style/Animation.LockScreen" android:textColor="#ffffffff" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" />
<TextView android:textAppearance="@*android:style/Animation.LockScreen" android:textColor="#ffffffff" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" />
</com.android.systemui.statusbar.TickerView>
</LinearLayout>
<com.android.systemui.statusbar.DateView android:textAppearance="@*android:style/TextAppearance.StatusBar.Icon" android:textColor="#00000000" android:gravity="left|center" android:id="@id/date" android:background="#ff000000" android:paddingLeft="0.0px" android:paddingRight="0.0px" android:layout_width="fill_parent" android:layout_height="fill_parent" android:singleLine="true" />
</com.android.systemui.statusbar.StatusBarView>
5. Open SystemUI\res\values\ids.xml and add these ids
Code:
<item type="id" name="clock">false</item>
<item type="id" name="dayView">false</item>
<item type="id" name="dateView">false</item>
<item type="id" name="clock_panel">false</item>
6. Recompile SystemUI and again Decompile it.
7. Open SystemUI\res\values\public.xml
8. Note public ids of these
Code:
<public type="id" name="dayView"
<public type="id" name="dateView"
9. Open SystemUI\smali\com\b16h22\statusbar\Day.smali
Find this code
Code:
const v7, [color="red"]0x7f09002b[/color]
Replace the highlighted text with public id of dayView
10. Open SystemUI\smali\com\b16h22\statusbar\Date.smali
Find these codes
Code:
const v4, [color="red"]0x7f09002c[/color]
Code:
const v7, [color="red"]0x7f09002c[/color]
Replace the highlighted text with public id of dateView
11. Recompile SystemUI.apk
12. Decompile framework-res.apk
13. Open framework-res\res\values\dimens.xml
14. Find this code
Code:
<dimen name="status_bar_height">25.0dip</dimen>
Change it to
Code:
<dimen name="status_bar_height">40.0dip</dimen>
15. Now find this code
Code:
<dimen name="status_bar_icon_size">25.0dip</dimen>
Change it to
Code:
<dimen name="status_bar_icon_size">20.0dip</dimen>
16. Recompile framework-res.apk
17. Push SystemUI.apk to system\app and
framework-res.apk to system\framework and
set proper permissions (rw-r--r--)
Change StatusBar Color
To change statusbar color
Decompile SystemUI
open res/layout/statusbar.xml
find this line
Code:
<com.android.systemui.statusbar.StatusBarView android:orientation="vertical" android:background="[COLOR="Red"]#00000000[/COLOR]"
change the highlighted hex code with your color hex code
Recompile SystemUI
push it to system/app
set proper permissions(rw-r--r--)
Add Day over Date
Preview:
To add day over the date
Decompile SystemUI
open res/layout/statusbar.xml
find this line
Code:
<com.b16h22.statusbar.Day android:textSize="0.0px" android:gravity="center_vertical" android:id="@id/dayView" android:layout_width="0.0px" android:layout_height="0.0px" android:layout_marginLeft="0.0dip" android:layout_marginTop="0.0dip" android:layout_toRightOf="@id/clock" />
change it to
Code:
<com.b16h22.statusbar.Day android:textSize="1.0sp" android:gravity="center_vertical" android:id="@id/dayView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4.0dip" android:layout_toRightOf="@id/clock" />
then find this line
Code:
<com.b16h22.statusbar.Date android:textSize="1.0sp" android:gravity="center_vertical" android:id="@id/dateView" android:paddingTop="16.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4.0dip" android:layout_marginTop="5.0dip" android:layout_toRightOf="@id/clock" />
change it to
Code:
<com.b16h22.statusbar.Date android:textSize="1.0sp" android:gravity="center_vertical" android:id="@id/dateView" android:paddingTop="16.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4.0dip" android:layout_toRightOf="@id/clock" android:layout_alignParentBottom="true" />
Recompile SystemUI
Push it to system\app
set proper permissions(rw-r--r--)
Remove Date
Preview:
To remove date
Decompile SystemUI
open res/layout/statusbar.xml
find this line
Code:
<com.b16h22.statusbar.Date android:textSize="1.0sp" android:gravity="center_vertical" android:id="@id/dateView" android:paddingTop="16.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4.0dip" android:layout_marginTop="5.0dip" android:layout_toRightOf="@id/clock" />
change it to
Code:
<com.b16h22.statusbar.Date android:textSize="0.0px" android:gravity="center_vertical" android:id="@id/dateView" android:paddingTop="0.0dip" android:layout_width="0.0px" android:layout_height="0.0px" android:layout_marginLeft="0.0dip" android:layout_marginTop="0.0dip" />
Recompile SystemUI
Push it to system\app
set proper permissions(rw-r--r--)
24-hour format clock(Thanks to Minions_Army)
Preview:
To use 24-hour format clock
Download 24Hours_Smali.zip
MediaFire Link
DevHost Link
Extract it
Decompile SystemUI
Navigate to smali\b16h22\statusbar\
Copy and Paste the Extracted ClockHolo.smali there
if asked to replace, click yes
Recompile SystemUI
Push it to system\app
set proper permissions(rw-r--r--)
Credits:
MatZ69
Minions_Army
evanlocked
b16h22
great,thats what im waiting for,evan and you done a good job!!!!!thanx bro :good:
Was waiting for this.......
nice guide. gonna try it. btw plz disable smileys in the op.
Galaxy Pop Plus'ımdan Tapatalk 2 ile gönderildi.
Very difficult to implement on lenox statusbar. It`s coding are all different. Can u help me @op to implement it in Lenox statusbar.
KnightlyNinja said:
Very difficult to implement on lenox statusbar. It`s coding are all different. Can u help me @op to implement it in Lenox statusbar.
Click to expand...
Click to collapse
Ya...Sure!
how to implement this systemUI on Hyperion 8 GM Final without Date at center ?
kevin_tn said:
how to implement this systemUI on Hyperion 8 GM Final without Date at center ?
Click to expand...
Click to collapse
Find this line
Code:
<com.b16h22.statusbar.Date android:textSize="1.0sp" android:gravity="center_vertical" android:id="@id/dateView" android:paddingTop="16.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4.0dip" android:layout_marginTop="5.0dip" android:layout_toRightOf="@id/clock" />
change it to
Code:
<com.b16h22.statusbar.Date android:textSize="0.0px" android:gravity="center_vertical" android:id="@id/dateView" android:paddingTop="0.0dip" android:layout_width="0.0px" android:layout_height="0.0px" android:layout_marginLeft="0.0dip" android:layout_marginTop="0.0dip" />
MuSaddiq1410 said:
Ya...Sure!
Click to expand...
Click to collapse
Wait i think i got it. Will report after sometime..............
Edit : Finally got it to work on Lenox. haha
KnightlyNinja said:
Wait i think i got it. Will report after sometime..............
Edit : Finally got it to work on Lenox. haha
Click to expand...
Click to collapse
Cool Bro! :good:
Oi op would you created this for hype 8 gm ? I mean flashable or apks one
And another one
Can you share your systemui ? :highfive:
Mranggapo said:
Oi op would you created this for hype 8 gm ? I mean flashable or apks one
Click to expand...
Click to collapse
Sorry Bro, I am busy now. WIll make flashable zips for H8GM, LE v2.1, etc etc later...
MuSaddiq1410 said:
Sorry Bro, I am busy now. WIll make flashable zips for H8GM, LE v2.1, etc etc later...
Click to expand...
Click to collapse
Im waiting bro :good::cyclops:
Mranggapo said:
Im waiting bro :good::cyclops:
Click to expand...
Click to collapse
i tried in H8 GM and it worked.why don't you try it ?
Good!
But i think, @MatZ69 can be in credits too
Sent from my GT-S5830i using xda premium
misha1996 said:
Good!
But i think, @MatZ69 can be in credits too
Sent from my GT-S5830i using xda premium
Click to expand...
Click to collapse
Oh Yes, You're right! I totally forgot about him. Will add him in credits asap!
Edit: Done.
kevin_tn said:
i tried in H8 GM and it worked.why don't you try it ?
Click to expand...
Click to collapse
I dont hav apktool beside my brother didnt allow me, would you like to share your systemui ?
@op this mod can be applied on cm7?
Galaxy Pop Plus'ımdan Tapatalk 2 ile gönderildi.
burak144 said:
@op this mod can be applied on cm7?
Galaxy Pop Plus'ımdan Tapatalk 2 ile gönderildi.
Click to expand...
Click to collapse
I think this is only for Stock Based Roms...
Sent from my y-Phone
MuSaddiq1410 said:
I think this is only for Stock Based Roms...
Sent from my y-Phone
Click to expand...
Click to collapse
hello sir. how to add the day(ex. Sunday) over the date? thanks for this guide..
Hello floks! Whats up?
You all Must be know about my Xperia-Z-ized ROM.
WHAT! You Don't Know? So Check it NOW
Well Here i am Gonna Share one of my work and a friendly guide for all the developers too.
But What is that work? The work is to merge WiFi Signal and Mobile DATA icon with Mobile Signal icon.
Didnt get it? See it yourself here!
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
GOT it Now?
Not yet? Dude, go 'N' Watch POGO! -_-
-:DOWNLOADS:-
1.Touch Wizard Theme
2.Xperia-Z-ized Theme
3.Elegant Theme
This Will Work on any ROM, Custom or Stock but only for TW, No for CM
If you like it, then Hit Thanks or Buy me a coffee.
If You are a developer and want to port this mod with your Existing Moded systemUI resources then Follow this Guide.
Requirements-1. Apktool(official or custom- - Use Google)
2. Notepad++(Use Google Again)
3.A Active Mind :laugh:
Steps to port!
1.First of all download my MOD from First post(for png resources)
2.Decompile your SystemUI.apk(I dont know how nor ask me -_- )
3.After Decompilation complete, Go to res/layouts/signal_cluster_view.xml. Here you will find these codes.
Code:
<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.SignalClusterView android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
[COLOR="Blue"]<FrameLayout android:gravity="center" android:id="@id/wifi_combo" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/wifi_signal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="center" android:layout_alignParentRight="true" android:layout_centerVertical="true" />
<ImageView android:layout_gravity="center" android:id="@id/wifi_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>[/COLOR]
[COLOR="Yellow"]<FrameLayout android:gravity="center" android:id="@id/ethernet_combo" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/ethernet_signal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="center" android:layout_alignParentRight="true" android:layout_centerVertical="true" />
<ImageView android:layout_gravity="center" android:id="@id/ethernet_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>[/COLOR]
<View android:id="@id/spacer" android:visibility="gone" android:layout_width="6.0dip" android:layout_height="6.0dip" />
<LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/new_mobile_combo" android:layout_width="wrap_content" android:layout_height="wrap_content">
[COLOR="Red"]<FrameLayout android:id="@id/separate_mobile" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/separate_mobile_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/separate_mobile_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>[/COLOR]
<FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
[COLOR="Lime"]<FrameLayout android:gravity="center" android:id="@id/mobile_combo" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/mobile_signal" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/mobile_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:layout_gravity="bottom|right|center" android:id="@id/mobile_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/mobile_roaming" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>[/COLOR]
</FrameLayout>
</LinearLayout>
<ImageView android:id="@id/airplane" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</com.android.systemui.statusbar.SignalClusterView>
<--Let me explain About these codes-->
Blue text is for Wi-Fi Signal icons
Yellow text indicate ethernet icon which our device doesn't support.
Red text is for Mobile DATA icon
Green text is for Mobile Signal icons
5.Now let me tell you, Samsung use same inout indicators for Wifi And Mobile Data so we have to mod them both.
6.Here is my moded codes. You will understand them, Just look into text colour's
Code:
<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.SignalClusterView android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
[COLOR="Yellow"]<FrameLayout android:gravity="center" android:id="@id/ethernet_combo" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/ethernet_signal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="center" android:layout_alignParentRight="true" android:layout_centerVertical="true" />
<ImageView android:layout_gravity="center" android:id="@id/ethernet_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>[/COLOR]
<View android:id="@id/spacer" android:visibility="gone" android:layout_width="6.0dip" android:layout_height="6.0dip" />
<LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/new_mobile_combo" android:layout_width="wrap_content" android:layout_height="wrap_content">
<FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
[COLOR="Lime"]<FrameLayout android:gravity="center" android:id="@id/mobile_combo" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/mobile_signal" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/mobile_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:layout_gravity="bottom|right|center" android:id="@id/mobile_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/mobile_roaming" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>[/COLOR]
</FrameLayout>
[COLOR="Red"]<FrameLayout android:id="@id/separate_mobile" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/separate_mobile_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/separate_mobile_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>[/COLOR]
[COLOR="Blue"]<FrameLayout android:gravity="center" android:id="@id/wifi_combo" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/wifi_signal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="center" android:layout_alignParentRight="true" android:layout_centerVertical="true" />
<ImageView android:layout_gravity="center" android:id="@id/wifi_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>[/COLOR]
</LinearLayout>
<ImageView android:id="@id/airplane" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</com.android.systemui.statusbar.SignalClusterView>
You must be understand according to color that how i move these icons!
If need any help you can ask me here.
7.Now put res/drawable-xhdpi folder from my downloaded resources to your decompiled SystemUI.apk, And compile it back.
8.Now Its done, Enjoy.
If you use this in your theme or mod or ROm, Then don't forgot to giva a little credit to me to respect my work.
Thanks,
Regards
-AmniX
Guide added to POST #3, Seems People were not intrested about this mod
AmniX said:
Guide added to POST #3, Seems People were not intrested about this mod
Click to expand...
Click to collapse
somehow i got that feeling too.. hahaha
its interesting mate, specially for learning-noob like me.. thanks for your sharing..
Regards..
Thanks AmniX...
Enviado desde mi GT-N7105 mediante Tapatalk
Will try this on Hurricane v11
Sent from my GT-N7100 using Tapatalk
nice bro
Nice!...can you make it for the new 4.4.2 leak based roms? Or maybe make a xposed module .
And I there any way to make stock tw notification bar like aosp? I mean, I just want the toggle drawer and in the notification side just nothing...only clock and no toggles...
Edit...I made it myself....thanks for the info.....
Nice!!.... but you can make "H" letter?
Gửi từ GT-N7100 của tôi bằng cách sử dụng Tapatalk
thanks for this maybe add a guide on how to move gsm signal and wifi signal to the left? it will be great tia
hoaxdream said:
thanks for this maybe add a guide on how to move gsm signal and wifi signal to the left? it will be great tia
Click to expand...
Click to collapse
I will add a guide on same soon whenever i will get time
AmniX said:
I will add a guide on same soon whenever i will get time
Click to expand...
Click to collapse
thanks mate, i'll wait for your guide
Error compiling -____-
AmniX said:
7.And compile it back.
Click to expand...
Click to collapse
Can someone please help me? I'm getting this error...
D:\Gadgets\Phone\Samsung Galaxy Note 2\Tools\APKTool\apktool1.5.2>apktool b stock SystemUI1.apk
I: Checking whether sources has changed...
I: Smaling...
I: Checking whether resources has changed...
I: Building resources...
D:\Gadgets\Phone\Samsung Galaxy Note 2\Tools\APKTool\apktool1.5.2\stock\res\layout\system_bar_notification_panel_title.xml:14: error:Error:No resource found that matches the given name (at 'style' with value '@style/SystemBarNotificationText').
and many more after.
Thank you.
Worked!
I finally had the time to look into it.
It already worked. Thank you for the wonderful guide op.
-Hurricane v12
Does anyone know how to get this working in 4.4? =)
Sent from my GT-N7100 using XDA Premium 4 mobile app
:good:
@AmniX try it on kitkat but wifi signal small
Thanks
Thanx
[MOD][Guide]How to change lockscreen clock position in real time
Before modding do a Nandroid Backup
With this mod you can change lockscreen weather widget position too if activated
Thanks to @Goldie for his special threadhttp://forum.xda-developers.com/galaxy-s2/development-derivatives/guide-understanding-creating-smali-mods-t2488033
To achieve you need:
SecSettings.apk
framework-res.apk
android.policy.jar
tool for decompile and compile like apktool 1.5.2;
tool for text edit like notepad++:
Start with SecSettings.apk:
Decompile SecSettings.apk ,go in res/xml ,open with text editor display_settings.xml and add the red lines
Code:
<CheckBoxPreference android:persistent="false" android:title="@string/display_saving" android:key="power_saving_mode" android:summary="@string/display_saving_mode_summary" />
<CheckBoxPreference android:persistent="false" android:title="@string/notification_pulse_title" android:key="notification_pulse" />
[COLOR="Red"]<PreferenceCategory android:title="@string/lockscreen_options">
<PreferenceScreen android:title="@string/lockscreen_clock_position">
<ListPreference android:entries="@array/lockscreen_clock_position_entries" android:title="@string/lockscreen_clock_position" android:key="clock_position" android:summary="@string/lockscreen_clock_position_summary" android:widgetLayout="@layout/round_more_icon" android:entryValues="@array/lockscreen_clock_position_values" />
</PreferenceScreen>
</PreferenceCategory>[/COLOR]
Go in res/value open with text editor arrays.xml and add at the end the red lines
Code:
[COLOR="Red"] <string-array name="lockscreen_clock_position_entries">
<item>At Top-Left</item>
<item>At Center-Left</item>
<item>At Bottom-Left</item>
<item>At Top-Center</item>
<item>At Center-Center</item>
<item>At Top-Right</item>
</string-array>
<string-array name="lockscreen_clock_position_values">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
</string-array>[/COLOR]
Go in res/value open with text editor strings.xml and add at the end this lines
Code:
<string name="lockscreen_options">Lockscreen Options</string>
<string name="lockscreen_clock_position">Clock Position</string>
<string name="lockscreen_clock_position_summary">Choose the position of the clock</string>
Go in smali\com\android\settings\DisplaySettings.smali file and add the following lines in RED
Code:
.field private final mIntentReceiver:Landroid/content/BroadcastReceiver;
.field private mKeyBacklightmode:Landroid/preference/CheckBoxPreference;
[COLOR="Red"]
.field private mLockClockPos:Landroid/preference/ListPreference;
[/COLOR]
field private mMultiWindowModeObserver:Landroid/database/ContentObserver;
.field private mMultiWindowPref:Landroid/preference/CheckBoxPreference;
In the same file find .method public onCreate and add the following lines in RED
Code:
iput-object v12, p0, Lcom/android/settings/DisplaySettings;->mFontSizePref:Landroid/preference/ListPreference;
.line 424
iget-object v12, p0, Lcom/android/settings/DisplaySettings;->mFontSizePref:Landroid/preference/ListPreference;
invoke-virtual {v12, p0}, Landroid/preference/ListPreference;->setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V
[COLOR="Red"]
const-string v12, "clock_position"
invoke-virtual {p0, v12}, Lcom/android/settings/DisplaySettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
move-result-object v12
check-cast v12, Landroid/preference/ListPreference;
iput-object v12, p0, Lcom/android/settings/DisplaySettings;->mLockClockPos:Landroid/preference/ListPreference;
const-string v12, "clock_position"
const/4 v13, 0x0
invoke-static {v8, v12, v13}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v12
iget-object v13, p0, Lcom/android/settings/DisplaySettings;->mLockClockPos:Landroid/preference/ListPreference;
invoke-static {v12}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
move-result-object v12
invoke-virtual {v13, v12}, Landroid/preference/ListPreference;->setValue(Ljava/lang/String;)V
iget-object v13, p0, Lcom/android/settings/DisplaySettings;->mLockClockPos:Landroid/preference/ListPreference;
invoke-virtual {v13, p0}, Landroid/preference/SwitchPreferenceScreen;->setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V [/COLOR]
.line 426
In the same file find .method public onPreferenceChange then find this code and add the red lines ,in blue line some explanation
Code:
const-string v2, "contextualpage_settings"
invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, [COLOR="Red"]:cond_clockpos[/COLOR] [COLOR="Blue"]change this from cond_2 to cond_clockpos[/COLOR]
.line 1089
check-cast p2, Ljava/lang/Boolean;
invoke-virtual {p2}, Ljava/lang/Boolean;->booleanValue()Z
move-result v0
if-eqz v0, :cond_e
in the same method find this code and add the red lines
Code:
.line 1100
const-string v1, "DisplaySettings"
const-string v3, "CONTEXTUALPAGE_SWITCH_CHANGED changed = false"
invoke-static {v1, v3}, Landroid/util/Log;->secD(Ljava/lang/String;Ljava/lang/String;)I
goto :goto_7
:cond_11
move-wide v0, v4
goto/16 :goto_3
[COLOR="Red"]
:cond_clockpos
iget-object v1, p0, Lcom/android/settings/DisplaySettings;->mLockClockPos:Landroid/preference/ListPreference;
if-ne p1, v1, :cond_2
check-cast p2, Ljava/lang/String;
invoke-static {p2}, Ljava/lang/Integer;->valueOf(Ljava/lang/String;)Ljava/lang/Integer;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/Integer;->intValue()I
move-result v0
invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v1
const-string v2, "clock_position"
invoke-static {v1, v2, v0}, Landroid/provider/Settings$System;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z
goto/16 :goto_4 [/COLOR]
.end method
Save all changes and compile SecSettings
framework-res.apk part
Decompile framework-res.apk go in res/layout and open keyguard_circlelock_main.xml file find and change the following line
from this
Code:
<FrameLayout android:id="@id/circle_lockscreen_clock" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" />
to this
Code:
<FrameLayout android:id="@id/circle_lockscreen_clock" android:layout_width="fill_parent" android:layout_height="[COLOR="Red"]match_parent[/COLOR]" android:layout_alignParentTop="true" />
save changes then go in res/layout-hdpi and open keyguard_circlelock_clockwidget.xml file and replace whole file with the following lines
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical" android:id="@id/clock_root" android:paddingTop="4.0dip" android:paddingBottom="6.0dip" android:layout_width="match_parent" android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<view android:gravity="center" android:id="@id/clock_emergency" android:layout_width="fill_parent" android:layout_height="17.0dip" class="com.android.internal.policy.impl.sec.ClockWidget$EmergencyCall">
<TextView android:textSize="12.0dip" android:textColor="#ffebebeb" android:ellipsize="none" android:gravity="center" android:id="@id/clock_emergency_text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:shadowColor="@color/black" android:shadowDx="1.0" android:shadowDy="1.0" android:shadowRadius="0.25" />
</view>
<view android:id="@id/clock_clock" android:layout_width="match_parent" android:layout_height="match_parent" class="com.android.internal.policy.impl.sec.ClockWidget$Clock">
<LinearLayout android:gravity="center" android:orientation="vertical" android:id="@id/clock_time_and_date" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="4.0dip">
<RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
<LinearLayout android:gravity="center" android:id="@id/clock_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true">
<ImageView android:id="@id/zzz_hour01" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_hour02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_colon01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_time_dot" />
<ImageView android:id="@id/zzz_minute01" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_minute02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/clock_time" android:layout_alignBottom="@id/clock_time">
<TextView android:textSize="23.0dip" android:textColor="#fff8f8f8" android:id="@id/zzz_ampm" android:paddingLeft="3.0dip" android:paddingBottom="5.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
</LinearLayout>
</RelativeLayout>
<TextView android:textSize="20.0dip" android:textStyle="bold" android:textColor="#fff6f7c9" android:gravity="bottom|center" android:id="@id/zzz_date_month" android:layout_width="wrap_content" android:layout_height="24.0dip" android:layout_marginTop="2.0dip" android:shadowColor="#aa000000" android:shadowDy="2.0" android:shadowRadius="1.0" />
<view android:gravity="center" android:id="@id/clock_charge" android:paddingTop="5.0dip" android:visibility="invisible" android:layout_width="wrap_content" android:layout_height="wrap_content" android:minHeight="24.0dip" class="com.android.internal.policy.impl.sec.ClockWidget$Charge">
<ImageView android:id="@id/clock_charge_icon" android:paddingRight="3.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_charging" />
<ImageView android:id="@id/clock_cmas_icon" android:paddingRight="3.0dip" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_cmas" />
<TextView android:textSize="17.0dip" android:textColor="#fff9f9f9" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/clock_charge_text" android:layout_width="wrap_content" android:layout_height="24.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="1.0" android:shadowDy="1.0" android:shadowRadius="1.0" />
</view>
<LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/dualClock_time_and_date" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="14.0dip">
<LinearLayout android:orientation="vertical" android:id="@id/dual_clock_local" android:layout_width="160.0dip" android:layout_height="wrap_content">
<TextView android:textSize="18.0dip" android:textColor="#ffdcdcdc" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/zzz_local_locale" android:layout_width="fill_parent" android:layout_height="22.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content">
<ImageView android:id="@id/zzz_local_hour01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="-4.0dip" />
<ImageView android:id="@id/zzz_local_hour02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_local_colon01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_dual_time_dot" />
<ImageView android:id="@id/zzz_local_minute01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="-4.0dip" />
<ImageView android:id="@id/zzz_local_minute02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<TextView android:textSize="17.0dip" android:textColor="#fff8f8f8" android:ellipsize="none" android:gravity="bottom" android:layout_gravity="bottom" android:id="@id/local_am_pm" android:layout_width="wrap_content" android:layout_height="29.0dip" android:layout_marginBottom="3.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
</LinearLayout>
<TextView android:textSize="20.0dip" android:textColor="#fff6f7c9" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/zzz_local_date_month" android:layout_width="fill_parent" android:layout_height="25.0dip" android:singleLine="true" android:shadowColor="#aa000000" android:shadowDy="2.0" android:shadowRadius="1.0" />
</LinearLayout>
<LinearLayout android:orientation="vertical" android:id="@id/dual_clock_home" android:layout_width="wrap_content" android:layout_height="wrap_content">
<LinearLayout android:gravity="bottom" android:layout_width="fill_parent" android:layout_height="wrap_content">
<ImageView android:paddingBottom="2.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_home" />
<TextView android:textSize="18.0dip" android:textColor="#ffdcdcdc" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/zzz_home_locale" android:layout_width="fill_parent" android:layout_height="22.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
</LinearLayout>
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content">
<ImageView android:id="@id/zzz_home_hour01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="-4.0dip" />
<ImageView android:id="@id/zzz_home_hour02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_home_colon01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_dual_time_dot" />
<ImageView android:id="@id/zzz_home_minute01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="-4.0dip" />
<ImageView android:id="@id/zzz_home_minute02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<TextView android:textSize="17.0dip" android:textColor="#fff8f8f8" android:ellipsize="none" android:gravity="bottom" android:layout_gravity="bottom" android:id="@id/home_am_pm" android:layout_width="wrap_content" android:layout_height="29.0dip" android:layout_marginBottom="3.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
</LinearLayout>
<TextView android:textSize="20.0dip" android:textColor="#fff6f7c9" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/zzz_home_date_month" android:layout_width="fill_parent" android:layout_height="25.0dip" android:singleLine="true" android:shadowColor="#aa000000" android:shadowDy="2.0" android:shadowRadius="1.0" />
</LinearLayout>
</LinearLayout>
<view android:orientation="vertical" android:id="@id/clock_weather" android:paddingTop="8.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content" class="com.android.internal.policy.impl.sec.ClockWidget$Weather">
<TextView android:textSize="16.0dip" android:textColor="#ffebebeb" android:ellipsize="none" android:gravity="center" android:id="@id/clock_weather_no_service" android:padding="15.0dip" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:shadowColor="@color/black" android:shadowDx="1.0" android:shadowDy="1.0" android:shadowRadius="1.0" />
<LinearLayout android:gravity="center" android:orientation="vertical" android:id="@id/clock_weather_data_box" android:layout_width="fill_parent" android:layout_height="wrap_content">
<LinearLayout android:gravity="top" android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView android:textSize="39.0dip" android:typeface="sans" android:textColor="#fff9f9f9" android:gravity="bottom" android:id="@id/clock_weather_temp" android:layout_width="wrap_content" android:layout_height="44.0dip" android:layout_marginTop="3.0dip" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
<ImageView android:id="@id/clock_weather_temp_unit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_celsius" />
<ImageView android:id="@id/clock_weather_icon" android:layout_width="83.0dip" android:layout_height="49.0dip" android:scaleType="fitXY" />
</LinearLayout>
<TextView android:textSize="23.0dip" android:textColor="#fff9f9f9" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/clock_weather_city" android:layout_width="wrap_content" android:layout_height="25.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" android:marqueeRepeatLimit="marquee_forever" />
<ImageView android:id="@id/clock_weather_logo_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_weather_logo" />
</LinearLayout>
</view>
</LinearLayout>
</view>
</LinearLayout>
Save all changes and compile framework-res
android.policy.jar part
Decompile android.policy.jar and go in com/android/internal/policy/impl/sec and open ClockWidget$Clock.smali file , find the following method .method protected onFinishInflate()V and add the red lines
Code:
.method protected onFinishInflate()V
.registers [COLOR="Red"]7[/COLOR]
.prologue
const/4 v1, 0x1
.line 994
invoke-super {p0}, Landroid/widget/FrameLayout;->onFinishInflate()V
.line 996
const v0, 0x10202ca
invoke-virtual {p0, v0}, Lcom/android/internal/policy/impl/sec/ClockWidget$Clock;->findViewById(I)Landroid/view/View;
move-result-object v0
check-cast v0, Landroid/widget/LinearLayout;
[COLOR="Red"]
iget-object v2, p0, Lcom/android/internal/policy/impl/sec/ClockWidget$Clock;->mContext:Landroid/content/Context;
invoke-virtual {v2}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v2
const-string v3, "clock_position"
const/4 v4, 0x0
invoke-static {v2, v3, v4}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v2
const v3, 0x1
if-eq v2, v3, :cond_0
const v3, 0x2
if-eq v2, v3, :cond_1
const v3, 0x3
if-eq v2, v3, :cond_2
const v3, 0x4
if-eq v2, v3, :cond_3
const v3, 0x5
if-eq v2, v3, :cond_4
const/16 v4, 0x70
goto:goto_set
:cond_0
const/16 v4, 0x10
goto:goto_set
:cond_1
const/16 v4, 0x50
goto:goto_set
:cond_2
const/16 v4, 0x01
goto:goto_set
:cond_3
const/16 v4, 0x11
goto:goto_set
:cond_4
const/16 v4, 0x05
:goto_set
invoke-virtual {v0, v4}, Landroid/widget/LinearLayout;->setGravity(I)V
[/COLOR]
iput-object v0, p0, Lcom/android/internal/policy/impl/sec/ClockWidget$Clock;->mSingleClock:Landroid/widget/LinearLayout;
.line 997
Save all changes and compile android.policy then put SecSettings.apk , framework-res.apk and android.policy.jar in your device
Hey Bud.
Thanks for the tutorial, good work!
Im trying to do the mod on 4.4.2 so it has changed alittle.
all the lockscreen files are now in keyguard.apk
so ive added the list pref to settings, all works fine.
added the smali code to 'SecKeyguardClock' and changed all references to this file.
compiled and looks fine.
the bit im having trouble with is the xml file.
the newer ones are completely different to the older ones so could you post just the changes you made to 'keyguard_circlelock_clockwidget.xml ' so I can implement them in mine?
I have no way of comparing what you changed.
Thanks Mate.
maskerwsk said:
Hey Bud.
Thanks for the tutorial, good work!
Im trying to do the mod on 4.4.2 so it has changed alittle.
all the lockscreen files are now in keyguard.apk
so ive added the list pref to settings, all works fine.
added the smali code to 'SecKeyguardClock' and changed all references to this file.
compiled and looks fine.
the bit im having trouble with is the xml file.
the newer ones are completely different to the older ones so could you post just the changes you made to 'keyguard_circlelock_clockwidget.xml ' so I can implement them in mine?
I have no way of comparing what you changed.
Thanks Mate.
Click to expand...
Click to collapse
Hi mate ok, this is the original xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical" android:id="@id/clock_root" android:paddingTop="4.0dip" android:paddingBottom="6.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<view android:gravity="center" android:id="@id/clock_emergency" android:layout_width="fill_parent" android:layout_height="17.0dip" class="com.android.internal.policy.impl.sec.ClockWidget$EmergencyCall">
<TextView android:textSize="12.0dip" android:textColor="#ffebebeb" android:ellipsize="none" android:gravity="center" android:id="@id/clock_emergency_text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:shadowColor="@color/black" android:shadowDx="1.0" android:shadowDy="1.0" android:shadowRadius="0.25" />
</view>
<view android:id="@id/clock_clock" android:layout_width="fill_parent" android:layout_height="wrap_content" class="com.android.internal.policy.impl.sec.ClockWidget$Clock">
<LinearLayout android:gravity="center" android:orientation="vertical" android:id="@id/clock_time_and_date" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="4.0dip">
<RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content">
<LinearLayout android:gravity="center" android:id="@id/clock_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true">
<ImageView android:id="@id/zzz_hour01" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_hour02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_colon01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_time_dot" />
<ImageView android:id="@id/zzz_minute01" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_minute02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/clock_time" android:layout_alignBottom="@id/clock_time">
<TextView android:textSize="23.0dip" android:textColor="#fff8f8f8" android:id="@id/zzz_ampm" android:paddingLeft="3.0dip" android:paddingBottom="5.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
</LinearLayout>
</RelativeLayout>
<TextView android:textSize="20.0dip" android:textStyle="bold" android:textColor="#ffffffff" android:gravity="bottom|center" android:id="@id/zzz_date_month" android:layout_width="fill_parent" android:layout_height="24.0dip" android:layout_marginTop="2.0dip" android:shadowColor="#aa000000" android:shadowDy="2.0" android:shadowRadius="1.0" />
</LinearLayout>
<LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/dualClock_time_and_date" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="14.0dip">
<LinearLayout android:orientation="vertical" android:id="@id/dual_clock_local" android:layout_width="160.0dip" android:layout_height="wrap_content">
<TextView android:textSize="18.0dip" android:textColor="#ffdcdcdc" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/zzz_local_locale" android:layout_width="fill_parent" android:layout_height="22.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content">
<ImageView android:id="@id/zzz_local_hour01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="-4.0dip" />
<ImageView android:id="@id/zzz_local_hour02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_local_colon01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_dual_time_dot" />
<ImageView android:id="@id/zzz_local_minute01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="-4.0dip" />
<ImageView android:id="@id/zzz_local_minute02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<TextView android:textSize="17.0dip" android:textColor="#fff8f8f8" android:ellipsize="none" android:gravity="bottom" android:layout_gravity="bottom" android:id="@id/local_am_pm" android:layout_width="wrap_content" android:layout_height="29.0dip" android:layout_marginBottom="3.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
</LinearLayout>
<TextView android:textSize="20.0dip" android:textColor="#ffffffff" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/zzz_local_date_month" android:layout_width="fill_parent" android:layout_height="25.0dip" android:singleLine="true" android:shadowColor="#aa000000" android:shadowDy="2.0" android:shadowRadius="1.0" />
</LinearLayout>
<LinearLayout android:orientation="vertical" android:id="@id/dual_clock_home" android:layout_width="wrap_content" android:layout_height="wrap_content">
<LinearLayout android:gravity="bottom" android:layout_width="fill_parent" android:layout_height="wrap_content">
<ImageView android:paddingBottom="2.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_home" />
<TextView android:textSize="18.0dip" android:textColor="#ffdcdcdc" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/zzz_home_locale" android:layout_width="fill_parent" android:layout_height="22.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
</LinearLayout>
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content">
<ImageView android:id="@id/zzz_home_hour01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="-4.0dip" />
<ImageView android:id="@id/zzz_home_hour02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_home_colon01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_dual_time_dot" />
<ImageView android:id="@id/zzz_home_minute01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="-4.0dip" />
<ImageView android:id="@id/zzz_home_minute02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<TextView android:textSize="17.0dip" android:textColor="#fff8f8f8" android:ellipsize="none" android:gravity="bottom" android:layout_gravity="bottom" android:id="@id/home_am_pm" android:layout_width="wrap_content" android:layout_height="29.0dip" android:layout_marginBottom="3.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
</LinearLayout>
<TextView android:textSize="20.0dip" android:textColor="#ffffffff" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/zzz_home_date_month" android:layout_width="fill_parent" android:layout_height="25.0dip" android:singleLine="true" android:shadowColor="#aa000000" android:shadowDy="2.0" android:shadowRadius="1.0" />
</LinearLayout>
</LinearLayout>
</view>
<view android:orientation="vertical" android:id="@id/clock_weather" android:paddingTop="8.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content" class="com.android.internal.policy.impl.sec.ClockWidget$Weather">
<TextView android:textSize="16.0dip" android:textColor="#ffebebeb" android:ellipsize="none" android:gravity="center" android:id="@id/clock_weather_no_service" android:padding="15.0dip" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:shadowColor="@color/black" android:shadowDx="1.0" android:shadowDy="1.0" android:shadowRadius="1.0" />
<LinearLayout android:gravity="center" android:orientation="vertical" android:id="@id/clock_weather_data_box" android:layout_width="fill_parent" android:layout_height="wrap_content">
<LinearLayout android:gravity="top" android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView android:textSize="39.0dip" android:typeface="sans" android:textColor="#fff9f9f9" android:gravity="bottom" android:id="@id/clock_weather_temp" android:layout_width="wrap_content" android:layout_height="44.0dip" android:layout_marginTop="3.0dip" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
<ImageView android:id="@id/clock_weather_temp_unit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_celsius" />
<ImageView android:id="@id/clock_weather_icon" android:layout_width="83.0dip" android:layout_height="49.0dip" android:scaleType="fitXY" />
</LinearLayout>
<TextView android:textSize="23.0dip" android:textColor="#fff9f9f9" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/clock_weather_city" android:layout_width="wrap_content" android:layout_height="25.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" android:marqueeRepeatLimit="marquee_forever" />
<ImageView android:id="@id/clock_weather_logo_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_weather_logo" />
</LinearLayout>
</view>
<view android:gravity="center" android:id="@id/clock_charge" android:paddingTop="5.0dip" android:visibility="invisible" android:layout_width="fill_parent" android:layout_height="wrap_content" android:minHeight="24.0dip" class="com.android.internal.policy.impl.sec.ClockWidget$Charge">
<ImageView android:id="@id/clock_charge_icon" android:paddingRight="3.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_charging" />
<ImageView android:id="@id/clock_cmas_icon" android:paddingRight="3.0dip" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_cmas" />
<TextView android:textSize="17.0dip" android:textColor="#fff9f9f9" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/clock_charge_text" android:layout_width="wrap_content" android:layout_height="24.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="1.0" android:shadowDy="1.0" android:shadowRadius="1.0" />
</view>
</LinearLayout>
in the line with android:id="@id/clock_time_and_date" i changed the value of android:layout_height to fill_parent.
In the line with RelativeLayout i changed the value of android:layout_width to wrap_content then moved all the view with android:id="@id/clock_charge" inside the LinearLayout with android:id="@id/clock_time_and_date" and put it after the TextView with android:id="@id/zzz_date_month" then moved the rest of code inside the LinearLayout with android:id="@id/clock_time_and_date" too and put it after the view with android:id="@id/clock_charge"
hope this can help you
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
I figured this mod was long overdue, given that we're without Xposed on Nougat. Those who used to have the Galaxy S2/4 know how fond I am of this feature! This is a straightforward mod to add 2 buttons to the longpress power menu, specifically to reboot directly to recovery and bootloader. I'm not including a flashable zip as it won't run with stock kernel (modifies /system) and this is really intended for ROM devs to cook.
I've attached the B19 files to this post.
I will go through all the changes necessary to do the mod yourself for future bases. It will be assumed you have a basic environment (apktool/smali/baksmali) set up and some apk/jar modification experience. This is based on A2017U B19.
1. Add the buttons to the longpress menu: /system/framework/framework-zte-res.apk
- Decompile the apk and replace res/layout/global_dialog.xml with:
Code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:orientation="vertical" android:background="#b3000000" android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView android:textSize="12.0sp" android:textColor="#8affffff" android:gravity="center" android:id="@id/longpress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="24.0dip" android:text="@string/global_action_rboot_message" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" />
<RelativeLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="132.0dip" android:layout_marginStart="56.0dip" android:layout_alignParentStart="true">
<LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/airplanemode" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageButton android:id="@id/airplane" android:background="@drawable/circle1" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:tint="#ffffffff" android:alpha="0.9" android:paddingStart="19.0dip" android:paddingEnd="19.0dip" />
<TextView android:textSize="12.0sp" android:textColor="@color/global_action_text" android:gravity="center" android:id="@id/text_airplane" android:paddingTop="10.0dip" android:layout_width="110.0dip" android:layout_height="wrap_content" android:maxLines="2" />
</LinearLayout>
</RelativeLayout>
<RelativeLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="132.0dip" android:layout_marginEnd="56.0dip" android:layout_alignParentEnd="true">
<LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/silent_mode" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageButton android:id="@id/silent" android:background="@drawable/circle1" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:tint="#ffffffff" android:alpha="0.9" android:paddingStart="19.0dip" android:paddingEnd="19.0dip" />
<TextView android:textSize="12.0sp" android:textColor="@color/global_action_text" android:gravity="center" android:id="@id/text_silent" android:paddingTop="10.0dip" android:layout_width="110.0dip" android:layout_height="wrap_content" android:maxLines="2" />
</LinearLayout>
</RelativeLayout>
<RelativeLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="268.0dip" android:layout_marginStart="56.0dip" android:layout_alignParentStart="true">
<LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/reset_action" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageButton android:id="@id/reset" android:background="@drawable/circle1" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_lock_reboot" android:tint="#ffffffff" android:contentDescription="@string/global_action_reset" android:alpha="0.9" android:paddingStart="19.0dip" android:paddingEnd="19.0dip" />
<TextView android:textSize="12.0sp" android:textColor="@color/global_action_text" android:gravity="center" android:id="@id/text_reset" android:paddingTop="10.0dip" android:layout_width="110.0dip" android:layout_height="wrap_content" android:text="@string/global_action_reset" android:maxLines="2" />
</LinearLayout>
</RelativeLayout>
<RelativeLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="268.0dip" android:layout_marginEnd="56.0dip" android:layout_alignParentEnd="true">
<LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/power_action" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageButton android:id="@id/power" android:background="@drawable/circle1" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_lock_power" android:tint="#ffffffff" android:contentDescription="@string/global_action_poweroff" android:alpha="0.9" android:paddingStart="19.0dip" android:paddingEnd="19.0dip" />
<TextView android:textSize="12.0sp" android:textColor="@color/global_action_text" android:gravity="center" android:id="@id/text_power" android:paddingTop="10.0dip" android:layout_width="110.0dip" android:layout_height="wrap_content" android:text="@string/global_action_poweroff" android:maxLines="2" />
</LinearLayout>
</RelativeLayout>
<RelativeLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="404.0dip" android:layout_marginStart="56.0dip" android:layout_alignParentStart="true">
<LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/recovery_action" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageButton android:id="@id/recovery" android:background="@drawable/circle1" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_lock_power" android:tint="#ffffffff" android:contentDescription="@string/global_action_recovery" android:alpha="0.9" android:paddingStart="19.0dip" android:paddingEnd="19.0dip" />
<TextView android:textSize="12.0sp" android:textColor="@color/global_action_text" android:gravity="center" android:id="@id/text_recovery" android:paddingTop="10.0dip" android:layout_width="110.0dip" android:layout_height="wrap_content" android:text="@string/global_action_recovery" android:maxLines="2" />
</LinearLayout>
</RelativeLayout>
<RelativeLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="404.0dip" android:layout_marginEnd="56.0dip" android:layout_alignParentEnd="true">
<LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/bootloader_action" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageButton android:id="@id/bootloader" android:background="@drawable/circle1" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_lock_power" android:tint="#ffffffff" android:contentDescription="@string/global_action_bootloader" android:alpha="0.9" android:paddingStart="19.0dip" android:paddingEnd="19.0dip" />
<TextView android:textSize="12.0sp" android:textColor="@color/global_action_text" android:gravity="center" android:id="@id/text_bootloader" android:paddingTop="10.0dip" android:layout_width="110.0dip" android:layout_height="wrap_content" android:text="@string/global_action_bootloader" android:maxLines="2" />
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
- For the landscape version, replace res/layout-land/global_dialog.xml with:
Code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:orientation="vertical" android:background="#b3000000" android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView android:textSize="12.0sp" android:textColor="#8affffff" android:gravity="center" android:id="@id/longpress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="24.0dip" android:text="@string/global_action_rboot_message" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" />
<LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="86.0dip" android:layout_centerHorizontal="true">
<LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/airplanemode" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="14.0dip">
<ImageButton android:id="@id/airplane" android:background="@drawable/circle1" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:tint="#ffffffff" android:alpha="0.9" android:paddingStart="19.0dip" android:paddingEnd="19.0dip" />
<TextView android:textSize="12.0sp" android:textColor="@color/global_action_text" android:gravity="center" android:id="@id/text_airplane" android:paddingTop="10.0dip" android:layout_width="110.0dip" android:layout_height="wrap_content" android:maxLines="2" />
</LinearLayout>
<LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/silent_mode" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="14.0dip">
<ImageButton android:id="@id/silent" android:background="@drawable/circle1" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:tint="#ffffffff" android:alpha="0.9" android:paddingStart="19.0dip" android:paddingEnd="19.0dip" />
<TextView android:textSize="12.0sp" android:textColor="@color/global_action_text" android:gravity="center" android:id="@id/text_silent" android:paddingTop="10.0dip" android:layout_width="110.0dip" android:layout_height="wrap_content" android:maxLines="2" />
</LinearLayout>
<LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/power_action" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="14.0dip">
<ImageButton android:id="@id/power" android:background="@drawable/circle1" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_lock_power" android:tint="#ffffffff" android:contentDescription="@string/global_action_poweroff" android:alpha="0.9" android:paddingStart="19.0dip" android:paddingEnd="19.0dip" />
<TextView android:textSize="12.0sp" android:textColor="@color/global_action_text" android:gravity="center" android:id="@id/text_power" android:paddingTop="10.0dip" android:layout_width="110.0dip" android:layout_height="wrap_content" android:text="@string/global_action_poweroff" android:maxLines="2" />
</LinearLayout>
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="224.0dip" android:layout_centerHorizontal="true">
<LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/reset_action" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="14.0dip">
<ImageButton android:id="@id/reset" android:background="@drawable/circle1" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_lock_reboot" android:tint="#ffffffff" android:contentDescription="@string/global_action_reset" android:alpha="0.9" android:paddingStart="19.0dip" android:paddingEnd="19.0dip" />
<TextView android:textSize="12.0sp" android:textColor="@color/global_action_text" android:gravity="center" android:id="@id/text_reset" android:paddingTop="10.0dip" android:layout_width="110.0dip" android:layout_height="wrap_content" android:text="@string/global_action_reset" android:maxLines="2" />
</LinearLayout>
<LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/recovery_action" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="14.0dip">
<ImageButton android:id="@id/recovery" android:background="@drawable/circle1" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_lock_power" android:tint="#ffffffff" android:contentDescription="@string/global_action_recovery" android:alpha="0.9" android:paddingStart="19.0dip" android:paddingEnd="19.0dip" />
<TextView android:textSize="12.0sp" android:textColor="@color/global_action_text" android:gravity="center" android:id="@id/text_recovery" android:paddingTop="10.0dip" android:layout_width="110.0dip" android:layout_height="wrap_content" android:text="@string/global_action_recovery" android:maxLines="2" />
</LinearLayout>
<LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/bootloader_action" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="14.0dip">
<ImageButton android:id="@id/bootloader" android:background="@drawable/circle1" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_lock_power" android:tint="#ffffffff" android:contentDescription="@string/global_action_bootloader" android:alpha="0.9" android:paddingStart="19.0dip" android:paddingEnd="19.0dip" />
<TextView android:textSize="12.0sp" android:textColor="@color/global_action_text" android:gravity="center" android:id="@id/text_bootloader" android:paddingTop="10.0dip" android:layout_width="110.0dip" android:layout_height="wrap_content" android:text="@string/global_action_bootloader" android:maxLines="2" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
It should be mentioned I simply reused the power button graphic for the additional buttons. You can customize the buttons by generating vector xml and replacing ic_lock_recovery/bootloader.xml.
(If you do generate nice icons, please post them!)
2. Add the appropriate IDs/strings/xml to framework-zte-res.apk
- add to res/values/ids.xml
Code:
<item type="id" name="recovery_action">false</item>
<item type="id" name="bootloader_action">false</item>
<item type="id" name="recovery" />
<item type="id" name="bootloader" />
<item type="id" name="text_recovery" />
<item type="id" name="text_bootloader" />
- add to res/values/strings.xml
Code:
<string name="global_action_recovery">Recovery</string>
<string name="global_action_bootloader">Bootloader</string>
- in res/drawable, copy ic_lock_power.xml to ic_lock_recovery.xml, ic_lock_bootloader.xml (comment at end of #1 applies here)
3. Build framework-zte-res.apk using apktool, which is nice enough to assign all the new IDs needed. Now decompile the new apk and open res/values/public.xml to obtain two IDs
used for step 4 smali changes:
Code:
<public type="id" name="recovery" id="[COLOR="Red"]0x06060067[/COLOR]" />
<public type="id" name="bootloader" id="[COLOR="red"]0x06060068[/COLOR]" />
You must save those two IDs somewhere for the next step. If you don't, you risk bootlooping or worse!
4. Our target for the actual code changes is GlobalActions.smali in services.odex. Search for '.method private createDialogMF40' and find the following code:
Code:
new-instance v6, Lcom/android/server/policy/GlobalActions$7;
invoke-direct {v6, p0}, Lcom/android/server/policy/GlobalActions$7;-><init>(Lcom/android/server/policy/GlobalActions;\V
invoke-virtual {v3, v6}, Landroid/view/View;->setOnClickListener(Landroid/view/View$OnClickListener;)V
Just after that last line will be our insertion point for the following code:
Code:
iget-object v6, p0, Lcom/android/server/policy/GlobalActions;->contentView:Landroid/view/View;
const v9, [COLOR="red"]0x6060067[/COLOR]
invoke-virtual {v6, v9}, Landroid/view/View;->findViewById(I)Landroid/view/View;
move-result-object v3
.line 270
.local v3, "recoveryAction":Landroid/view/View;
new-instance v6, Lcom/android/server/policy/GlobalActions$19;
invoke-direct {v6, p0}, Lcom/android/server/policy/GlobalActions$19;-><init>(Lcom/android/server/policy/GlobalActions;)V
invoke-virtual {v3, v6}, Landroid/view/View;->setOnClickListener(Landroid/view/View$OnClickListener;)V
iget-object v6, p0, Lcom/android/server/policy/GlobalActions;->contentView:Landroid/view/View;
const v9, [COLOR="red"]0x6060068[/COLOR]
invoke-virtual {v6, v9}, Landroid/view/View;->findViewById(I)Landroid/view/View;
move-result-object v3
.line 270
.local v3, "bootloaderAction":Landroid/view/View;
new-instance v6, Lcom/android/server/policy/GlobalActions$20;
invoke-direct {v6, p0}, Lcom/android/server/policy/GlobalActions$20;-><init>(Lcom/android/server/policy/GlobalActions;)V
invoke-virtual {v3, v6}, Landroid/view/View;->setOnClickListener(Landroid/view/View$OnClickListener;)V
5. Now we have associated our new buttons with GlobalActions$19 & 20 above. To create these two files, used GlobalActions$7.smali (which is the reboot code) as a template. Be sure to change any $7 to $19 / $20 in the appropriate files. Our last modifications are simple one-liners to direct the reboot behavior.
Find 'const/4 v3, 0x0' around line 69 and change to:
GlobalActions$19.smali:
Code:
const-string/jumbo v3, "recovery"
GlobalActions$20.smali:
Code:
const-string/jumbo v3, "bootloader"
Compile your changes and update services.jar. You are now ready to flash the new framework-zte-res.apk and services.jar to /system/framework. Reboot and cross your fingers!
Version History:
1.0(3/26/17): Initial release
1.1 (3/29/17): Moved portrait layout up 80 pixels to center vertically
You wouldn't be happen to already have a zip readily available to share With that knowledge would you be willing to look at that edits needed to get 3minit battery mod working? I tried it but the standard edits do not work, someone had got it working but pulled down how he did it . Anyways great thread thanks for the info!
neo4uo said:
You wouldn't be happen to already have a zip readily available to share With that knowledge would you be willing to look at that edits needed to get 3minit battery mod working? I tried it but the standard edits do not work, someone had got it working but pulled down how he did it . Anyways great thread thanks for the info!
Click to expand...
Click to collapse
I just updated the OP with the modified apk+jar. That should help
I'm not familiar with the 3minit mod.
neo4uo said:
You wouldn't be happen to already have a zip readily available to share With that knowledge would you be willing to look at that edits needed to get 3minit battery mod working? I tried it but the standard edits do not work, someone had got it working but pulled down how he did it . Anyways great thread thanks for the info!
Click to expand...
Click to collapse
I had 3mint workink on our BadBoyz rom but i havn't updated it for 7.1.1 yet...coming soon
---------- Post added at 07:57 PM ---------- Previous post was at 07:55 PM ----------
jeboo said:
I figured this mod was long overdue, given that we're without Xposed on Nougat. Those who used to have the Galaxy S2/4 know how fond I am of this feature! This is a straightforward mod to add 2 buttons to the longpress power menu, specifically to reboot directly to recovery and bootloader. I'm not including a flashable zip as it won't run with stock kernel (modifies /system) and this is really intended for ROM devs to cook.
Click to expand...
Click to collapse
Nice work Sir !! May we use this ?
benny3 said:
I had 3mint workink on our BadBoyz rom but i havn't updated it for 7.1.1 yet...coming soon
---------- Post added at 07:57 PM ---------- Previous post was at 07:55 PM ----------
Nice work Sir !! May we use this ?
Click to expand...
Click to collapse
Sure :good:
jeboo said:
It should be mentioned I simply reused the power button graphic for the additional buttons. You can customize the buttons by generating vector xml and replacing ic_lock_recovery/bootloader.xml.
(If you do generate nice icons, please post them!)
Click to expand...
Click to collapse
Here's what I came up with for icons if you or anyone wants to use them.
EDIT: I don't know how to do the vector thing you mentioned or why the power off is vectored but also included as a .PNG in res\drawable-xhdpi-v4 but I made some .PNGs based off ic_lock_power_off.png to be used as icons. If it's possible to use these somehow, cool. If not, let me know and I can remove them.
-Duir- said:
Here's what I came up with for icons if you or anyone wants to use them.
EDIT: I don't know how to do the vector thing you mentioned or why the power off is vectored but also included as a .PNG in res\drawable-xhdpi-v4 but I made some .PNGs based off ic_lock_power_off.png to be used as icons. If it's possible to use these somehow, cool. If not, let me know and I can remove them.
Click to expand...
Click to collapse
That'd be dope as hell dude. Gonna see about using these for mine if you're ok with that.
-Duir- said:
Here's what I came up with for icons if you or anyone wants to use them.
EDIT: I don't know how to do the vector thing you mentioned or why the power off is vectored but also included as a .PNG in res\drawable-xhdpi-v4 but I made some .PNGs based off ic_lock_power_off.png to be used as icons. If it's possible to use these somehow, cool. If not, let me know and I can remove them.
Click to expand...
Click to collapse
Awesome man! I actually tried using a 96x96 PNG from framework-res.apk, but it distorted (too large and ovoid).
tylerlawhon said:
That'd be dope as hell dude. Gonna see about using these for mine if you're ok with that.
Click to expand...
Click to collapse
Go for it. I'd use them myself if I knew how. :silly:
Updated OP to fix vertical alignment in portrait mode. :good:
Here is a flashable for peeps to flash in recovery. I can mirror if needed.
neo4uo said:
You wouldn't be happen to already have a zip readily available to share With that knowledge would you be willing to look at that edits needed to get 3minit battery mod working? I tried it but the standard edits do not work, someone had got it working but pulled down how he did it . Anyways great thread thanks for the info!
Click to expand...
Click to collapse
EDIT
benny3 said:
Here is 3Mint for 7.1.1..Enjoy......http://www.mediafire.com/file/2xr733xwzhfbxy6/BadBoyZ_7.1.1_3Mint_Battery.zip
Click to expand...
Click to collapse
You should start a thread if not already thx bunches!
benny3 said:
Here is 3Mint for 7.1.1..Enjoy......http://www.mediafire.com/file/2xr733xwzhfbxy6/BadBoyZ_7.1.1_3Mint_Battery.zip
Click to expand...
Click to collapse
I tried flashing the file and it jacked my phone up. I do not know what was wrong with it. I have redownloaded it and tried reflashing with no luck. I am looking for a stock version(B19) to try to get my phone back working. I figured that I can replace the systemui_ui apk to get back going anyways just figured that I would let you know that that file was not working!
neo4uo said:
I tried flashing the file and it jacked my phone up. I do not know what was wrong with it. I have redownloaded it and tried reflashing with no luck. I am looking for a stock version(B19) to try to get my phone back working. I figured that I can replace the systemui_ui apk to get back going anyways just figured that I would let you know that that file was not working!
Click to expand...
Click to collapse
Same here. I can't enter my decryption password when flashing the 3minit battery mod
Is there a screen shot of what the apm look like?
gpz1100 said:
Is there a screen shot of what the apm look like?
Click to expand...
Click to collapse
Here ya go
neo4uo said:
I tried flashing the file and it jacked my phone up. I do not know what was wrong with it. I have redownloaded it and tried reflashing with no luck. I am looking for a stock version(B19) to try to get my phone back working. I figured that I can replace the systemui_ui apk to get back going anyways just figured that I would let you know that that file was not working!
Click to expand...
Click to collapse
It flashed and worked just fine for me. Strange. This is for a deodex rom, what rom are you on ?
benny3 said:
It flashed and worked just fine for me. Strange. This is for a deodex rom, what rom are you on ?
Click to expand...
Click to collapse
I'm in stock B19. Might be due to the rom being odexed. I didn't think of that
jimbo77 said:
I'm in stock B19. Might be due to the rom being odexed. I didn't think of that
Click to expand...
Click to collapse
It really shouldn't matter. You can have some files deodexed and some not. If this was the case then 3minit wouldn't work on any stock rooted ROMs. I am thinking a bad download. I might try downloading and flashing again. Maybe we can get a Md5 so we can check the download.