[Guide] Adding More Steps To Volume - Nexus 7 General

Adding Volume Steps
This is a guide to show you how to add volume steps.
(Always back up your device)
The Nexus 7 has 15 steps on its volume range by default, which is a just a fraction of what most device have, which means when you listen to music the volume is quite on one step and way to loud on the next, this is a guide to help you set the volume range to something more manageable.
​
First download these files baksmali and smali and place them in your C drive.
Next navigate to system/framework on your device and find framework.jar, copy and paste it into your C drive.
Open framework.jar with a zip utility and extract the contents into a folder on your C drive. I titled the folder Volume Control myself.
Hold down "Shift" and right click on an open space in the folder you created and click on "open command window here"
and type: java -Xmx512m -jar c:\baksmali.jar classes.dex Hit enter (copy java -Xmx512m -jar and paste on a document for easy access later)
A folder titled "out" will appear in the folder you created, open the out folder and then open a folder titled "Android" and finally open a folder titled "Media" Look for a file titled "AudioService" open it with a text editing program, (note pad, notepad ++) Click on search on the program menu and type in "array-data 0x4" look for a column of data starting with 0x5t it will be the only column of data starting with 0x5t, the column will look similar to this:
1. 0x5t 0x0t 0x0t 0x0t this is equal to this:STREAM_VOICE_CALL the 5 in 0x5t=5 steps
2. 0x7t 0x0t 0x0t 0x0t this is equal to this:STREAM_SYSTEM the 7 in 0x7t=7 steps
3. 0x7t 0x0t 0x0t 0x0t this is equal to this: STREAM_RING the 7 in 0x7t=7 steps
4. 0xft 0x0t 0x0t 0x0t this is equal to this:STREAM_MUSIC the f in 0xft=15 steps
5. 0x7t 0x0t 0x0t 0x0t this is equal to this:STREAM_ALARM the 7 in 0x7t=7 steps
6. 0x7t 0x0t 0x0t 0x0t this is equal to this: STREAM_NOTIFICATION the 7 in 0x7t=7 steps
7. 0xft 0x0t 0x0t 0x0t this is equal to this: STREAM_BLUETOOTH_SCO the f in 0xft=15 steps
8. 0x7t 0x0t 0x0t 0x0t this is equal to this:STREAM_SYSTEM_ENFORCED the 7 in 0x7t=7 steps
9. 0xft 0x0t 0x0t 0x0t this is equal to this: STREAM_DTMF the f in 0xft=15 steps
10. 0xft 0x0t 0x0t 0x0t this is equal to this:STREAM_TTS the f in 0xft=15 steps
Change the f's on lines 4,7,9 and 10 to whatever you like, you can change the other steps as well.
Here are some values to help you out: 1=1, 2=2, 3=3, 4=4, 5=5, 6=6, 7=7, 8=8, 9=9, a=10, b=11, c=12, d=13, e=14, f=15, 10=16, 11=17, 12=18, 13=19, 14=20, 15=21, 16=22, 17=23, 18=24, 19=25, 1a=26, 1b=27, 1c=28, 1d=29, 1e=30, 1f=31, 20=32, 21=33, 22=34, 23=35, 24=36, 25=37, 26=38, 27=39, 28=40, 29=41, 2a=42, 2b=43, 2c=44, 2d=45
Be sure to save your entries when you are done.
Now look for a file titled "AudioManager" open it with a text editing program, (note pad, notepad ++) Click on search on the program menu and type in "array-data 0x4" You should find only one column of data, it should look similar to this:
1. 0x4t 0x0t 0x0t 0x0t this is equal to this:STREAM_VOICE_CALL the 4 in 0x4t=4 steps
2. 0x7t 0x0t 0x0t 0x0t this is equal to this:STREAM_SYSTEM the 7 in 0x7t=7 steps
3. 0x5t 0x0t 0x0t 0x0t this is equal to this: STREAM_RING the 5 in 0x5t=5 steps
4. 0xbt 0x0t 0x0t 0x0t this is equal to this:STREAM_MUSIC the b in 0xbt=11 steps
5. 0x6t 0x0t 0x0t 0x0t this is equal to this: STREAM_ALARM the 6 in 0x6t=6 steps
6. 0x5t 0x0t 0x0t 0x0t this is equal to this: STREAM_NOTIFICATION the 5 in 0x5t=5 steps
7. 0x7t 0x0t 0x0t 0x0t this is equal to this: STREAM_BLUETOOTH_SCO the 7 in 0x7t=7 steps
8. 0x7t 0x0t 0x0t 0x0t this is equal to this:STREAM_SYSTEM_ENFORCED the 7 in 0x7t=7 steps
9. 0xbt 0x0t 0x0t 0x0t this is equal to this: STREAM_DTMF the b in 0xbt=11 steps
10. 0xbt 0x0t 0x0t 0x0t this is equal to this:STREAM_TTS the b in 0xbt=11 steps
Change the b's on lines 4, 9, and 10 to something similar to your AudioService entries. you can change the other steps as well. Save when you are done.
Now you want to open Command Prompt in the folder the same way as before and type:
java -Xmx512m -jar c:\smali.jar out and hit enter.
This will create a file titled "out.dex" rename this to "classes.dex" and then open the framework.jar file with a zip utility and replace the old "classes.dex" file with the new "classes.dex" file, finally delete the old framework.jar file(make a copy of the old) on your device and paste the new one, make sure the permissions are set correctly and restart your device, you should have more volume steps.
I haven't had any problems doing this, all my apps work as does all my audio. I set the volume steps in AudioService to 40 to match my mp3 player and the volume steps in AudioManager to 24.​

Can you create a flashable zip for us?
Sent from my Nexus 7 using xda premium

filipathtc said:
Can you create a flashable zip for us?
Sent from my Nexus 7 using xda premium
Click to expand...
Click to collapse
I'll see what I can do.

Reserved.

hi prestige777!
thanks for this trick, I'm just trying to do the same.. But..
I'm on the lash PACrom nightly and I'm modding framework.jar on Slackware Linux (maybe it could be useful to know)
So I followed all the steps and I finally opened the AudioService.smali file (althoughts there also are a bunch of similar files called AudioService$01 till $10)and searched for the part we are interested in..
It differs from what you reported into your instructions.. Here is the section I found:
Code:
.array-data 0x4
0x5t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
what do you think about??

brainvision said:
hi prestige777!
thanks for this trick, I'm just trying to do the same.. But..
I'm on the lash PACrom nightly and I'm modding framework.jar on Slackware Linux (maybe it could be useful to know)
So I followed all the steps and I finally opened the AudioService.smali file (althoughts there also are a bunch of similar files called AudioService$01 till $10)and searched for the part we are interested in..
It differs from what you reported into your instructions.. Here is the section I found:
Code:
.array-data 0x4
0x5t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
what do you think about??
Click to expand...
Click to collapse
That's exactly what it looks like, my post looks a little bit different because I was trying to explain it in detail. You found the right section you just have make your changes and you're set.

Has anybody used this mod? Results?

so..
finally I found the time to complete the steps on my Nexus 7 with last PAC-man ROM.. result was a bootlooop!! fortunately I was able to use adb on my Slackware and write the old framework.jar file above the new one..
I'm pretty sure I did all good..
I'm not sure only about the values to insert into the two different files.. I mean: you said put something similar.. so I assume you could insert different values into the 2 files.. isn't it strange? What AudioService and AudioManager do?
those are the values I inserted..
AudioService.smali
Code:
0x5t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x1et 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
0x1et 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x1et 0x0t 0x0t 0x0t
0x1et 0x0t 0x0t 0x0t
AudioManager.smali
Code:
0x4t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x5t 0x0t 0x0t 0x0t
0x1et 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
0x1et 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x1et 0x0t 0x0t 0x0t
0x1et 0x0t 0x0t 0x0t

brainvision said:
so..
finally I found the time to complete the steps on my Nexus 7 with last PAC-man ROM.. result was a bootlooop!! fortunately I was able to use adb on my Slackware and write the old framework.jar file above the new one..
I'm pretty sure I did all good..
I'm not sure only about the values to insert into the two different files.. I mean: you said put something similar.. so I assume you could insert different values into the 2 files.. isn't it strange? What AudioService and AudioManager do?
those are the values I inserted..
AudioService.smali
Code:
0x5t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x1et 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
0x1et 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x1et 0x0t 0x0t 0x0t
0x1et 0x0t 0x0t 0x0t
AudioManager.smali
Code:
0x4t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x5t 0x0t 0x0t 0x0t
0x1et 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
0x1et 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x1et 0x0t 0x0t 0x0t
0x1et 0x0t 0x0t 0x0t
Click to expand...
Click to collapse
Hello, try changing only the lines 4,7,9 and 10 in audiomanager to half of what you have for lines 4,7,9 and 10 on audioservice. You have the value for 30 on audioservice so change the values for audiomanager to 15 or basically 0xft. I don't know the exact differences between audioservice and audiomanager only that they both need to change for it to work. I think audiomanager has to have a slightly smaller value than audioservice to work. I use the value for 40 on audioservice and the value for 24 for audiomanager.
I only change the values for lines 4,7,9 and 10 in audiomanager, I change all the values in audioservice making sure of course that lines 4,7,9 and 10 have a higher value than the rest of the lines and they have the same value. Also make sure you manually set the permissions for framework.jar using file explorer, I tried various ways of flashing the file but the permissions never set right. I hope this helps.

thanks for replying!!
actually I have not the time to try again, maybe I'll do it tomorrow in the morning..
about the permissions, I manually edit them with ES File Manager, as I always do..
I'll let you know, BTW..

40 Steps
{
"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"
}

LRX22C: framework.jar without classes.dex
The framework.jar - file in system/framework of my N7 (flo) with LRX22C is only 19.4k in size. classes.dex its not in framework.jar. What can I do?
RichieX

Related

[DEV][MODDING] CRT, Airview, 4-way reboot, ink effect, phone, sms..etc [9/Dec/2013]

Hello buddies..
From the concept SHARING IS CARING, I am going to share with you how to hack your GT-N7000 JellyBean system apps.
Keep in mind that there are different modding hacks that I couldn't figure out how it is done until now. So please let me know if you have any modding that I didn't mentione
So let's start!!
Needed tools:
1) APK-Multi tool. You can use my repacked one (Nov 2012) from here.
2) Backsmali/Smali Manager from here
3) Notepad++ program from here
4) Willing of learning and some patience and cold nerves!
I am not going to teach you how to use these programs because I am assuming that you already know how to use them!
You must deodex your app before proceeding.
A lot of works are done by various xda members, some are from other sites, some are mine. If you found the guide of your mod here and you haven't been credited, please PM.
Click to expand...
Click to collapse
TABLE OF CONTENTS
Code:
+----------------------------------------------------------------------------+
| Post #[URL="http://forum.xda-developers.com/showpost.php?p=35229966&postcount=2"]2[/URL] |
+----------------------------------------------------------------------------+
| |
| - 4-way Reboot Menu |
| - Call record enabling + Disabling ascending ringtone |
| - Smart Rotation enabling |
| - SMS hacks: displaying sent Time instead of the received time |
| - Unlimited Multiwindow apps |
| - Home screen wallpaper scrolling |
| - Changing number of icons in home screen and apps drawer (dpi modding) |
| - Camera & Camcorder hacks: Adding "Shutter Sound On/Off" in menu, flash |
| can be used in low battery, hard keys as shutter, increasing camcorder |
| quality..etc |
| |
+----------------------------------------------------------------------------+
| Post #[URL="http://forum.xda-developers.com/showpost.php?p=35229966&postcount=3"]3[/URL] |
+----------------------------------------------------------------------------+
| |
| - Change default home screen wallpaper and default lock screen wallpaper |
| - Battery theming |
| - 4 Lockscreen shortcuts enabling |
| - Toggle to choose AOSP lock screen |
| - Fixing home button lag |
| - Permanent disabling of SMS, MMS & Email log history to be logged in call |
| logs |
| - Disabling scrolling cache across OS |
| - Center clock in status bar |
| |
+----------------------------------------------------------------------------+
| Post #[URL="http://forum.xda-developers.com/showpost.php?p=47555368&postcount=4"]4[/URL] |
+----------------------------------------------------------------------------+
| | |
| - SMS hack: SMS 200 recipients, stop SMS to MMS auto-converting, increase |
| SMS hour limit, 1000 slides, group messages, scheduled messages and save |
| restore messages |
| - 23 toggles notification panel (Lidroid way) |
| - Notification panel lock screen and recent apps |
| |
+----------------------------------------------------------------------------+
| Post #[URL="http://forum.xda-developers.com/showpost.php?p=47555418&postcount=5"]5[/URL] |
+----------------------------------------------------------------------------+
| |
| - Extended Power Menu Addons (ScreenShot, Recovery, Download and safe |
| modes) + Toggle Switch On or Off |
| |
+----------------------------------------------------------------------------+
| Post #[URL="http://forum.xda-developers.com/showpost.php?p=47555459&postcount=6"]6[/URL] |
+----------------------------------------------------------------------------+
| |
| - LockScreen Torch |
| - Long press menu button to kill app |
| - Adjust timeout delay across OS |
| |
+----------------------------------------------------------------------------+
| Post #[URL="http://forum.xda-developers.com/showpost.php?p=47555227&postcount=7"]7[/URL] |
+----------------------------------------------------------------------------+
| |
| - Browser Edge Zoom Enabling |
| - Airview Enabling + Control Panel + S Pen Gesture |
| - Adding Extra About Info to Your ROM to Suit Your Ego |
| - Enable TW Launcher Rotation |
| - Enable LockScreen Rotation |
| |
+----------------------------------------------------------------------------+
| Post #[URL="http://forum.xda-developers.com/showpost.php?p=47555493&postcount=8"]8[/URL] |
+----------------------------------------------------------------------------+
| |
| - Ink effect enabling |
| - Integrating application in settings menu |
| |
+----------------------------------------------------------------------------+
| Post #[URL="http://forum.xda-developers.com/showpost.php?p=47555274&postcount=9"]9[/URL] |
+----------------------------------------------------------------------------+
| |
| - Framed Recent app windows |
| - Volume Rocker to Skip Sound Track |
| - CRT TV off effect |
| - Permanent Disable of Ongoing Notifications |
| - Remove Mobile Data Toggle off Warning Dialogue |
| |
+----------------------------------------------------------------------------+
| Post #[URL="http://forum.xda-developers.com/showpost.php?p=47555301&postcount=10"]10[/URL] |
+----------------------------------------------------------------------------+
| |
| - Control The Full Battery Notification With Toggle Switch On or Off |
| - Disable Low Battery Notification |
| - Remove cloudy overlay and improve ripple lockscreen |
| - Disable Auto Scroll in Statusbar quickpanel toggle |
| - Settings menu extra hidden options |
| |
+----------------------------------------------------------------------------+
| Post #[URL="http://forum.xda-developers.com/showpost.php?p=47555600&postcount=11"]11[/URL] |
+----------------------------------------------------------------------------+
| |
| - Notification panel extra toggles - the original way (Airplane, Torch, |
| and AllShareCast) |
| - Create CSC features controller tab in settings menu |
| - Disable TW UI and enable AOSP UI |
| |
+----------------------------------------------------------------------------+
| Post #[URL="http://forum.xda-developers.com/showpost.php?p=47555787&postcount=16"]16[/URL] CSC FEATURES |
+----------------------------------------------------------------------------+
| |
| - Adding Call Button to Contacts and Logs |
| - Call and message block |
| - Factory data reset password |
| - About device extra and hiding displays |
| - Enabling Folder view in message app |
| - Enabling Callback number in message app |
| - Disable Page Rotation in TW Launcher |
| - Disable Tilt Effect in TW Launcher |
| - Enable Home Screen Edit Mode in TW Launcher |
| - Change Day Color in SPlanner widget |
| - Adding Exit button in default web browser |
| - Adding Home button in default web browser |
| - Adding Version info in default web browser |
| - Desktop view by default in default web browser |
| - Enable prompt to exit in default web browser |
| - Enable Camera Shutter Sound menu |
| |
+----------------------------------------------------------------------------+
| Post #[URL="http://forum.xda-developers.com/showpost.php?p=47555546&postcount=17"]17[/URL] CSC FEATURES |
+----------------------------------------------------------------------------+
| |
| |
+----------------------------------------------------------------------------+
.
Continue moddings!!
Change default home screen wallpaper and default lock screen wallpaper
Remember to set compression level to 0 in APK-Multi tool before proceeding in these steps
Click to expand...
Click to collapse
1. Decompile framework-res.apk using APK-Multi tool
2. Go to \res\drawable-xhdpi folder and change the following pics to what you want:
default_wallpaper (Home screen wallpaper)
keyguard_default_wallpaper (Lock screen wallpaper)
3. Make sure to rename your wallpaper to the exact name as the one that you will change
4. Compile framework-res.apk and push it to your phone.
Here are some pics taken from SGN2: download
Battery theming
First download my battery icon packs from here and use it as a resource (of course you can create your own!!).
1. Decompile SystemUI.apk with APK-Multi tool.
2. In Battery icon pack folder choose your desired battery theme and copy all png icons ONLY.
3. Go to \res\drawable-xhdpi folder and paste your icons there.
4. Now go back to Battery icon pack folder and in your desired battery theme folder, copy the two xml files (stat_sys_battery.xml and stat_sys_battery_charge.xml).
5. Go to \res\drawable folder and paste them there and accept changes.
These xml files are encoded with a code that make battery discharging and charging animation; so if you got enough png icons, you can create your own lines in these xml files for better animation effects
Click to expand...
Click to collapse
6. Recompile and push it to your phone.
4 Lockscreen shortcuts enabling
1- Decompile SecSettings.apk and go to smali/com/android/settings/lockscreenshortcut/LockScreenShortcutSettings.smali
2- Open this file with notpad++ and change the following line:
Code:
# direct methods
.method static constructor <clinit>()V
.locals 2
.prologue
const/4 v1, 0x0
.line 79
[COLOR="Red"][B]const/4 v0, 0x4[/B][/COLOR]
sput v0, Lcom/android/settings/lockscreenshortcut/LockScreenShortcutSettings;->MAX_SHORTCUT_ICON:I
to:
Code:
# direct methods
.method static constructor <clinit>()V
.locals 2
.prologue
const/4 v1, 0x0
.line 79
[B][COLOR="Blue"]const/4 v0, 0x3[/COLOR][/B]
sput v0, Lcom/android/settings/lockscreenshortcut/LockScreenShortcutSettings;->MAX_SHORTCUT_ICON:I
3- Save changes
4- (The following step is provided by tkari4; thanks man) For some region this feature is disabled like Germany ; So navigate to smali/com/android/settings folder and open LockscreenMenuSettings.smali and search for "ro.csc.country_code" and change the following (red to blue):
Code:
if-nez v4, :cond_5
const-string v4, "[B][COLOR="Red"]Germany[/COLOR][/B]"
const-string v7, "ro.csc.country_code"
invoke-static {v7}, Landroid/os/SystemProperties;->get(Ljava/lang/String;)Ljava/lang/String;
to:
Code:
if-nez v4, :cond_5
const-string v4, "[B][COLOR="Blue"]none[/COLOR][/B]"
const-string v7, "ro.csc.country_code"
invoke-static {v7}, Landroid/os/SystemProperties;->get(Ljava/lang/String;)Ljava/lang/String;
3- Save file and recompile and push to your phone.
Results example:
{
"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"
}
Toggle to choose AOSP lock screen
This method is originally done by Mirko_ddd, so please go to his thread and thank him
Click to expand...
Click to collapse
We need to do our changes to two files; android.policy.jar and SecSettings.apk
A. android.policy.jar:
1. Decompile (backsmali) android.policy.jar
2. Go to classout\com\android\internal\policy\impl and open LockPatternKeyguardView.smali
3. Search for ".method createLockScreen()Landroid/view/View;" and the following lines (the blue ones):
Code:
.method createLockScreen()Landroid/view/View;
.registers 7
.prologue
.line 1351
[B][COLOR="Blue"]iget-object v0, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mContext:Landroid/content/Context;
invoke-virtual {v0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v0
const-string v1, "aosp_lock"
const/4 v2, 0x0
invoke-static {v0, v1, v2}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v0
if-nez v0, :cond_majdi[/COLOR][/B]
new-instance v0, Lcom/android/internal/policy/impl/sec/CircleLockScreen;
iget-object v1, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mContext:Landroid/content/Context;
iget-object v2, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mConfiguration:Landroid/content/res/Configuration;
iget-object v3, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mLockPatternUtils:Lcom/android/internal/widget/LockPatternUtils;
iget-object v4, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mUpdateMonitor:Lcom/android/internal/policy/impl/KeyguardUpdateMonitor;
iget-object v5, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mKeyguardScreenCallback:Lcom/android/internal/policy/impl/KeyguardScreenCallback;
invoke-direct/range {v0 .. v5}, Lcom/android/internal/policy/impl/sec/CircleLockScreen;-><init>(Landroid/content/Context;Landroid/content/res/Configuration;Lcom/android/internal/widget/LockPatternUtils;Lcom/android/internal/policy/impl/KeyguardUpdateMonitor;Lcom/android/internal/policy/impl/KeyguardScreenCallback;)V
[B][COLOR="Blue"]goto :goto_yes[/COLOR][/B]
.line 1357
[B][COLOR="Blue"]:cond_majdi
new-instance v0, Lcom/android/internal/policy/impl/LockScreen;
iget-object v1, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mContext:Landroid/content/Context;
iget-object v2, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mConfiguration:Landroid/content/res/Configuration;
iget-object v3, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mLockPatternUtils:Lcom/android/internal/widget/LockPatternUtils;
iget-object v4, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mUpdateMonitor:Lcom/android/internal/policy/impl/KeyguardUpdateMonitor;
iget-object v5, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mKeyguardScreenCallback:Lcom/android/internal/policy/impl/KeyguardScreenCallback;
invoke-direct/range {v0 .. v5}, Lcom/android/internal/policy/impl/LockScreen;-><init>(Landroid/content/Context;Landroid/content/res/Configuration;Lcom/android/internal/widget/LockPatternUtils;Lcom/android/internal/policy/impl/KeyguardUpdateMonitor;Lcom/android/internal/policy/impl/KeyguardScreenCallback;)V[/COLOR][/B]
.local v0, lockView:Landroid/view/View;
[B][COLOR="Blue"]:goto_yes[/COLOR][/B]
invoke-direct {p0, v0}, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->initializeTransportControlView(Landroid/view/View;)V
.line 1358
return-object v0
.end method
4. Save changes and compile (smali) your classout folder
B. SecSettings.apk:
1. Decompile SecSettings.apk by APK-Multi-tool
2. Go to /smali/com/android/settings/ folder and open LockscreenSettings.smali
3. As Mirko_ddd did we will use an unused code with the form of (checkbox preference). Here it is "mSayCommand"
4. Since this unused code is actually hidden, so we need to un-hide it first. Search for the following lines and delete them (the red lines only):
Code:
if-ge v9, v10, :cond_15
iget-object v9, p0, Lcom/android/settings/LockScreenSettings;-> mSayCommand:Landroid/preference/CheckBoxPreference;
if-eqz v9, :cond_11
[B][COLOR="Red"]invoke-virtual {p0}, Lcom/android/settings/LockScreenSettings;->getPreferenceScreen()Landroid/preference/PreferenceScreen;
move-result-object v9
iget-object v10, p0, Lcom/android/settings/LockScreenSettings;->mSayCommand:Landroid/preference/CheckBoxPreference;
invoke-virtual {v9, v10}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z[/COLOR][/B]
:cond_11
if-eqz v7, :cond_12
5. Now search and replace all "mSayCommand" with "mAospLock" also search and replace all "wake_up_lock_screen" with "aosp_lock"
6. Search for "say_your_wakeup" and replace it with "majdi_aosp_lock"
7. Save changes and exit.
8. Go to res\values folder and open strings.xml file and add the following strings at the end before </resource>:
Code:
<string name="aosp_lock_screen">AOSP Lockscreen</string>
<string name="aosp_lock_screen_description">Original Jelly Bean Lockscreen</string>
9. Go to res\xml folder and open lockscreen_settings.xml file and add the following line at the end before </PreferenceScreen> (actually you can put it in a place that you want this mod to be shown in lock screen option menu later on):
Code:
<CheckBoxPreference android:title="@string/aosp_lock_screen" android:key="majdi_aosp_lock" android:summary="@string/aosp_lock_screen_description" />
10. Save all changes and recompile. Push the modified files to your phone.
Results example:
Fixing home button lag
This method is originally done by Mirko_ddd, so please go to his thread and thank him
Click to expand...
Click to collapse
1. Backsmali android.policy.jar
2. G to classout\com\android\internal\policy\impl folder and open PhoneWindowManager.smali
3. Search for ".method public interceptKeyBeforeDispatching" then search for "#statusbar:Lcom/android/internal/statusbar/IStatusBarService;" and go down for the line that has the following iput-boolean … with mHomePressed:Z field and add the following line bellow it (the blue one):
Code:
.line 3364
.end local v38 #statusbar:Lcom/android/internal/statusbar/IStatusBarService;
:cond_38c
:goto_38c
const/16 v46, 0x0
move/from16 v0, v46
move-object/from16 v1, p0
[B][COLOR="Red"]iput-boolean[/COLOR][/B] v0, v1, Lcom/android/internal/policy/impl/PhoneWindowManager;->[B][COLOR="Red"]mHomePressed:Z[/COLOR][/B]
[B][COLOR="Blue"]invoke-virtual/range {p0 .. p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->goHome()Z[/COLOR][/B]
4. save changes and recompile (smali) the classout folder.
Permanent disabling of SMS, MMS & Email log history to be logged in call logs
1. Backsmali SecMms.apk.
2. Go to classout\com\android\mms\transaction folder and open MessagingNotification.smali file.
3. Now what you need to do is to search for any line that contains the following command "Landroid/content/ContentResolver;->insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;", there might be 3 or 4 lines, and delete them all.
Example (delete the whole red line):
Code:
invoke-static {v6}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v6
[COLOR="Red"]invoke-virtual {v5, v6, v7}, [B]Landroid/content/ContentResolver;->insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;[/B][/COLOR]
.line 1348
add-int/lit8 p2, p2, 0x1
4. save changes and recompile (smali) the classout folder.
Disabling scrolling cache across OS
1. Backsmali framework2.jar.
2. Navigate to classout\android\widget folder and open AbsListView.smali
3. Search for ".method private createScrollingCache()V" and change:
Code:
const/4 v1, 0x[B][COLOR="Red"]1[/COLOR][/B]
to:
Code:
const/4 v1, 0x[B][COLOR="Blue"]0[/COLOR][/B]
4. Search for ".method public setScrollingCacheEnabled(Z)V" and change:
Code:
.parameter "[B][COLOR="Red"]enabled[/COLOR][/B]"
to:
Code:
.parameter "[B][COLOR="Blue"]disabled[/COLOR][/B]"
5. Save changes and recompile (smali) your file and push to your phone.
Center clock in status bar
This mod was done by raubkatze and all credits go to him.
Click to expand...
Click to collapse
1. Decompile SystemUI.apk by Apk-Multi tool
2. Navigate to /res/layout/ folder and open tw_status_bar.xml
3. Delete all these lines:
Code:
<LinearLayout android:orientation="horizontal" android:id="@id/icons" android:paddingLeft="0.0dip" android:paddingRight="2.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:orientation="horizontal" android:id="@id/left_icons" android:paddingLeft="4.0dip" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0">
<TextView android:textSize="15.0dip" android:gravity="center_vertical" android:id="@id/carrierLabel" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />
<ImageView android:id="@id/operatorLogoIcon" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="fill_parent" android:src="@drawable/tw_stat_notify_operator_logo" />
<ImageView android:id="@id/doNotDisturbIcon" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/tw_dnd" android:alpha="0.7" android:scaleX="0.85" android:scaleY="0.85" />
<com.android.systemui.statusbar.StatusBarIconView android:id="@id/moreIcon" android:visibility="gone" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="fill_parent" android:src="@drawable/stat_notify_more" />
<com.android.systemui.statusbar.phone.IconMerger android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/notificationIcons" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentLeft="true" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:id="@id/right_icons" android:paddingRight="4.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentRight="true">
<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/statusIcons" android:layout_width="wrap_content" android:layout_height="fill_parent" />
<LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/signal_battery_cluster" android:paddingLeft="2.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent">
<include android:id="@id/signal_cluster" android:layout_width="wrap_content" android:layout_height="wrap_content" layout="@layout/tw_signal_cluster_view" />
<TextView android:textSize="12.0dip" android:textColor="#ffa6a6a6" android:layout_gravity="center" android:id="@id/battery_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_network_name_separator" />
<ImageView android:gravity="center" android:id="@id/battery" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
<com.android.systemui.statusbar.policy.Clock android:textSize="@dimen/status_bar_clock_text_size" android:textColor="#ff959595" android:ellipsize="none" android:gravity="left|center" android:id="@id/clock" android:paddingLeft="3.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:includeFontPadding="false" />
</LinearLayout>
and substitute with the following:
Code:
<LinearLayout android:orientation="horizontal" android:id="@id/icons" android:paddingLeft="1.0dip" android:paddingRight="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:orientation="horizontal" android:id="@id/left_icons" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0">
<TextView android:textSize="15.0dip" android:gravity="center_vertical" android:id="@id/carrierLabel" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />
<ImageView android:id="@id/operatorLogoIcon" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="fill_parent" android:src="@drawable/tw_stat_notify_operator_logo" />
<ImageView android:id="@id/doNotDisturbIcon" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/tw_dnd" android:alpha="0.7" android:scaleX="0.85" android:scaleY="0.85" />
<com.android.systemui.statusbar.StatusBarIconView android:id="@id/moreIcon" android:visibility="gone" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="fill_parent" android:src="@drawable/stat_notify_more" />
<com.android.systemui.statusbar.phone.IconMerger android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/notificationIcons" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentLeft="true" />
</LinearLayout>
<LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="fill_parent">
<com.android.systemui.statusbar.policy.Clock android:textSize="@dimen/status_bar_clock_text_size" android:textColor="#[B][COLOR="Red"]ffffffff[/COLOR][/B]" android:gravity="center" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />
</LinearLayout>
<LinearLayout android:gravity="right|center" android:orientation="horizontal" android:id="@id/right_icons" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0" android:layout_alignParentRight="true">
<LinearLayout android:gravity="right|center" android:orientation="horizontal" android:id="@id/statusIcons" android:layout_width="wrap_content" android:layout_height="fill_parent" />
<LinearLayout android:gravity="right|center" android:orientation="horizontal" android:id="@id/signal_battery_cluster" android:paddingLeft="2.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent">
<include android:id="@id/signal_cluster" android:layout_width="wrap_content" android:layout_height="wrap_content" layout="@layout/tw_signal_cluster_view" />
<TextView android:textSize="12.0dip" android:textColor="#ffa6a6a6" android:layout_gravity="center" android:id="@id/battery_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_network_name_separator" />
<ImageView android:gravity="center" android:id="@id/battery" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
4. Save changes, recompile and push to your phone
N.B: you can put any hex color code for clock text color instead #ffffff above there
Click to expand...
Click to collapse
Results:
Continue moddings!!
Browser Edge Zoom Enabling
<<This mod will make you able to zoom in and out in internet browser by scrolling down and up respectively from the right or left screen edge>>​
Credits to shoman94
Click to expand...
Click to collapse
- Baksmali framework.jar
- Navigate to classout\android\view\ folder and open ScaleGestureDetector.smali
- Search for this method ".method public onTouchEvent(Landroid/view/MotionEvent;)Z" and change the entire method to:
Code:
[B][COLOR="Blue"].method public onTouchEvent(Landroid/view/MotionEvent;)Z
.registers 28
.param p1, "event" # Landroid/view/MotionEvent;
.prologue
.line 207
move-object/from16 v0, p0
iget-object v0, v0, Landroid/view/ScaleGestureDetector;->mInputEventConsistencyVerifier:Landroid/view/InputEventConsistencyVerifier;
move-object/from16 v24, v0
if-eqz v24, :cond_19
.line 208
move-object/from16 v0, p0
iget-object v0, v0, Landroid/view/ScaleGestureDetector;->mInputEventConsistencyVerifier:Landroid/view/InputEventConsistencyVerifier;
move-object/from16 v24, v0
const/16 v25, 0x0
move-object/from16 v0, v24
move-object/from16 v1, p1
move/from16 v2, v25
invoke-virtual {v0, v1, v2}, Landroid/view/InputEventConsistencyVerifier;->onTouchEvent(Landroid/view/MotionEvent;I)V
.line 211
:cond_19
move-object/from16 v0, p0
iget-boolean v0, v0, Landroid/view/ScaleGestureDetector;->mValidPackage:Z
move/from16 v24, v0
if-eqz v24, :cond_2a
invoke-direct/range {p0 .. p1}, Landroid/view/ScaleGestureDetector;->onEdgeTouchEvent(Landroid/view/MotionEvent;)Z
move-result v24
if-eqz v24, :cond_2a
const/16 v24, 0x1
.line 310
:goto_29
return v24
.line 213
:cond_2a
invoke-virtual/range {p1 .. p1}, Landroid/view/MotionEvent;->getActionMasked()I
move-result v3
.line 215
.local v3, "action":I
const/16 v24, 0x1
move/from16 v0, v24
if-eq v3, v0, :cond_3a
const/16 v24, 0x3
move/from16 v0, v24
if-ne v3, v0, :cond_6a
:cond_3a
const/16 v19, 0x1
.line 217
.local v19, "streamComplete":Z
:goto_3c
if-eqz v3, :cond_40
if-eqz v19, :cond_6d
.line 221
:cond_40
move-object/from16 v0, p0
iget-boolean v0, v0, Landroid/view/ScaleGestureDetector;->mInProgress:Z
move/from16 v24, v0
if-eqz v24, :cond_65
.line 222
move-object/from16 v0, p0
iget-object v0, v0, Landroid/view/ScaleGestureDetector;->mListener:Landroid/view/ScaleGestureDetector$OnScaleGestureListener;
move-object/from16 v24, v0
move-object/from16 v0, v24
move-object/from16 v1, p0
invoke-interface {v0, v1}, Landroid/view/ScaleGestureDetector$OnScaleGestureListener;->onScaleEnd(Landroid/view/ScaleGestureDetector;)V
.line 223
const/16 v24, 0x0
move/from16 v0, v24
move-object/from16 v1, p0
iput-boolean v0, v1, Landroid/view/ScaleGestureDetector;->mInProgress:Z
.line 224
const/16 v24, 0x0
move/from16 v0, v24
move-object/from16 v1, p0
iput v0, v1, Landroid/view/ScaleGestureDetector;->mInitialSpan:F
.line 227
:cond_65
if-eqz v19, :cond_6d
.line 228
const/16 v24, 0x1
goto :goto_29
.line 215
.end local v19 # "streamComplete":Z
:cond_6a
const/16 v19, 0x0
goto :goto_3c
.line 232
.restart local v19 # "streamComplete":Z
:cond_6d
const/16 v24, 0x6
move/from16 v0, v24
if-eq v3, v0, :cond_79
const/16 v24, 0x5
move/from16 v0, v24
if-ne v3, v0, :cond_97
:cond_79
const/4 v4, 0x1
.line 235
.local v4, "configChanged":Z
:goto_7a
const/16 v24, 0x6
move/from16 v0, v24
if-ne v3, v0, :cond_99
const/4 v14, 0x1
.line 236
.local v14, "pointerUp":Z
:goto_81
if-eqz v14, :cond_9b
invoke-virtual/range {p1 .. p1}, Landroid/view/MotionEvent;->getActionIndex()I
move-result v15
.line 239
.local v15, "skipIndex":I
:goto_87
const/16 v20, 0x0
.local v20, "sumX":F
const/16 v21, 0x0
.line 240
.local v21, "sumY":F
invoke-virtual/range {p1 .. p1}, Landroid/view/MotionEvent;->getPointerCount()I
move-result v5
.line 241
.local v5, "count":I
const/4 v13, 0x0
.local v13, "i":I
:goto_90
if-ge v13, v5, :cond_ae
.line 242
if-ne v15, v13, :cond_9d
.line 241
:goto_94
add-int/lit8 v13, v13, 0x1
goto :goto_90
.line 232
.end local v4 # "configChanged":Z
.end local v5 # "count":I
.end local v13 # "i":I
.end local v14 # "pointerUp":Z
.end local v15 # "skipIndex":I
.end local v20 # "sumX":F
.end local v21 # "sumY":F
:cond_97
const/4 v4, 0x0
goto :goto_7a
.line 235
.restart local v4 # "configChanged":Z
:cond_99
const/4 v14, 0x0
goto :goto_81
.line 236
.restart local v14 # "pointerUp":Z
:cond_9b
const/4 v15, -0x1
goto :goto_87
.line 243
.restart local v5 # "count":I
.restart local v13 # "i":I
.restart local v15 # "skipIndex":I
.restart local v20 # "sumX":F
.restart local v21 # "sumY":F
:cond_9d
move-object/from16 v0, p1
invoke-virtual {v0, v13}, Landroid/view/MotionEvent;->getX(I)F
move-result v24
add-float v20, v20, v24
.line 244
move-object/from16 v0, p1
invoke-virtual {v0, v13}, Landroid/view/MotionEvent;->getY(I)F
move-result v24
add-float v21, v21, v24
goto :goto_94
.line 246
:cond_ae
if-eqz v14, :cond_c6
add-int/lit8 v10, v5, -0x1
.line 247
.local v10, "div":I
:goto_b2
int-to-float v0, v10
move/from16 v24, v0
div-float v11, v20, v24
.line 248
.local v11, "focusX":F
int-to-float v0, v10
move/from16 v24, v0
div-float v12, v21, v24
.line 251
.local v12, "focusY":F
const/4 v6, 0x0
.local v6, "devSumX":F
const/4 v7, 0x0
.line 252
.local v7, "devSumY":F
const/4 v13, 0x0
:goto_bf
if-ge v13, v5, :cond_e5
.line 253
if-ne v15, v13, :cond_c8
.line 252
:goto_c3
add-int/lit8 v13, v13, 0x1
goto :goto_bf
.end local v6 # "devSumX":F
.end local v7 # "devSumY":F
.end local v10 # "div":I
.end local v11 # "focusX":F
.end local v12 # "focusY":F
:cond_c6
move v10, v5
.line 246
goto :goto_b2
.line 254
.restart local v6 # "devSumX":F
.restart local v7 # "devSumY":F
.restart local v10 # "div":I
.restart local v11 # "focusX":F
.restart local v12 # "focusY":F
:cond_c8
move-object/from16 v0, p1
invoke-virtual {v0, v13}, Landroid/view/MotionEvent;->getX(I)F
move-result v24
sub-float v24, v24, v11
invoke-static/range {v24 .. v24}, Ljava/lang/Math;->abs(F)F
move-result v24
add-float v6, v6, v24
.line 255
move-object/from16 v0, p1
invoke-virtual {v0, v13}, Landroid/view/MotionEvent;->getY(I)F
move-result v24
sub-float v24, v24, v12
invoke-static/range {v24 .. v24}, Ljava/lang/Math;->abs(F)F
move-result v24
add-float v7, v7, v24
goto :goto_c3
.line 257
:cond_e5
int-to-float v0, v10
move/from16 v24, v0
div-float v8, v6, v24
.line 258
.local v8, "devX":F
int-to-float v0, v10
move/from16 v24, v0
div-float v9, v7, v24
.line 263
.local v9, "devY":F
const/high16 v24, 0x40000000
mul-float v17, v8, v24
.line 264
.local v17, "spanX":F
const/high16 v24, 0x40000000
mul-float v18, v9, v24
.line 265
.local v18, "spanY":F
mul-float v24, v17, v17
mul-float v25, v18, v18
add-float v24, v24, v25
invoke-static/range {v24 .. v24}, Landroid/util/FloatMath;->sqrt(F)F
move-result v16
.line 270
.local v16, "span":F
move-object/from16 v0, p0
iget-boolean v0, v0, Landroid/view/ScaleGestureDetector;->mInProgress:Z
move/from16 v23, v0
.line 271
.local v23, "wasInProgress":Z
move-object/from16 v0, p0
iput v11, v0, Landroid/view/ScaleGestureDetector;->mFocusX:F
.line 272
move-object/from16 v0, p0
iput v12, v0, Landroid/view/ScaleGestureDetector;->mFocusY:F
.line 273
move-object/from16 v0, p0
iget-boolean v0, v0, Landroid/view/ScaleGestureDetector;->mInProgress:Z
move/from16 v24, v0
if-eqz v24, :cond_13a
const/16 v24, 0x0
cmpl-float v24, v16, v24
if-eqz v24, :cond_11f
if-eqz v4, :cond_13a
.line 274
:cond_11f
move-object/from16 v0, p0
iget-object v0, v0, Landroid/view/ScaleGestureDetector;->mListener:Landroid/view/ScaleGestureDetector$OnScaleGestureListener;
move-object/from16 v24, v0
move-object/from16 v0, v24
move-object/from16 v1, p0
invoke-interface {v0, v1}, Landroid/view/ScaleGestureDetector$OnScaleGestureListener;->onScaleEnd(Landroid/view/ScaleGestureDetector;)V
.line 275
const/16 v24, 0x0
move/from16 v0, v24
move-object/from16 v1, p0
iput-boolean v0, v1, Landroid/view/ScaleGestureDetector;->mInProgress:Z
.line 276
move/from16 v0, v16
move-object/from16 v1, p0
iput v0, v1, Landroid/view/ScaleGestureDetector;->mInitialSpan:F
.line 278
:cond_13a
if-eqz v4, :cond_166
.line 279
move/from16 v0, v17
move-object/from16 v1, p0
iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpanX:F
move/from16 v0, v17
move-object/from16 v1, p0
iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpanX:F
.line 280
move/from16 v0, v18
move-object/from16 v1, p0
iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpanY:F
move/from16 v0, v18
move-object/from16 v1, p0
iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpanY:F
.line 281
move/from16 v0, v16
move-object/from16 v1, p0
iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpan:F
move/from16 v0, v16
move-object/from16 v1, p0
iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpan:F
move/from16 v0, v16
move-object/from16 v1, p0
iput v0, v1, Landroid/view/ScaleGestureDetector;->mInitialSpan:F
.line 283
:cond_166
move-object/from16 v0, p0
iget-boolean v0, v0, Landroid/view/ScaleGestureDetector;->mInProgress:Z
move/from16 v24, v0
if-nez v24, :cond_1d0
const/16 v24, 0x0
cmpl-float v24, v16, v24
if-eqz v24, :cond_1d0
if-nez v23, :cond_191
move-object/from16 v0, p0
iget v0, v0, Landroid/view/ScaleGestureDetector;->mInitialSpan:F
move/from16 v24, v0
sub-float v24, v16, v24
invoke-static/range {v24 .. v24}, Ljava/lang/Math;->abs(F)F
move-result v24
move-object/from16 v0, p0
iget v0, v0, Landroid/view/ScaleGestureDetector;->mSpanSlop:I
move/from16 v25, v0
move/from16 v0, v25
int-to-float v0, v0
move/from16 v25, v0
cmpl-float v24, v24, v25
if-lez v24, :cond_1d0
.line 285
:cond_191
move/from16 v0, v17
move-object/from16 v1, p0
iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpanX:F
move/from16 v0, v17
move-object/from16 v1, p0
iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpanX:F
.line 286
move/from16 v0, v18
move-object/from16 v1, p0
iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpanY:F
move/from16 v0, v18
move-object/from16 v1, p0
iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpanY:F
.line 287
move/from16 v0, v16
move-object/from16 v1, p0
iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpan:F
move/from16 v0, v16
move-object/from16 v1, p0
iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpan:F
.line 288
move-object/from16 v0, p0
iget-object v0, v0, Landroid/view/ScaleGestureDetector;->mListener:Landroid/view/ScaleGestureDetector$OnScaleGestureListener;
move-object/from16 v24, v0
move-object/from16 v0, v24
move-object/from16 v1, p0
invoke-interface {v0, v1}, Landroid/view/ScaleGestureDetector$OnScaleGestureListener;->onScaleBegin(Landroid/view/ScaleGestureDetector;)Z
move-result v24
move/from16 v0, v24
move-object/from16 v1, p0
iput-boolean v0, v1, Landroid/view/ScaleGestureDetector;->mInProgress:Z
.line 289
const-string v24, "ScaleGestureDetector"
const-string v25, "SGD"
invoke-static/range {v24 .. v25}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
.line 293
:cond_1d0
const/16 v24, 0x2
move/from16 v0, v24
if-ne v3, v0, :cond_226
.line 294
move/from16 v0, v17
move-object/from16 v1, p0
iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpanX:F
.line 295
move/from16 v0, v18
move-object/from16 v1, p0
iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpanY:F
.line 296
move/from16 v0, v16
move-object/from16 v1, p0
iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpan:F
.line 298
const/16 v22, 0x1
.line 299
.local v22, "updatePrev":Z
move-object/from16 v0, p0
iget-boolean v0, v0, Landroid/view/ScaleGestureDetector;->mInProgress:Z
move/from16 v24, v0
if-eqz v24, :cond_200
.line 300
move-object/from16 v0, p0
iget-object v0, v0, Landroid/view/ScaleGestureDetector;->mListener:Landroid/view/ScaleGestureDetector$OnScaleGestureListener;
move-object/from16 v24, v0
move-object/from16 v0, v24
move-object/from16 v1, p0
invoke-interface {v0, v1}, Landroid/view/ScaleGestureDetector$OnScaleGestureListener;->onScale(Landroid/view/ScaleGestureDetector;)Z
move-result v22
.line 303
:cond_200
if-eqz v22, :cond_226
.line 304
move-object/from16 v0, p0
iget v0, v0, Landroid/view/ScaleGestureDetector;->mCurrSpanX:F
move/from16 v24, v0
move/from16 v0, v24
move-object/from16 v1, p0
iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpanX:F
.line 305
move-object/from16 v0, p0
iget v0, v0, Landroid/view/ScaleGestureDetector;->mCurrSpanY:F
move/from16 v24, v0
move/from16 v0, v24
move-object/from16 v1, p0
iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpanY:F
.line 306
move-object/from16 v0, p0
iget v0, v0, Landroid/view/ScaleGestureDetector;->mCurrSpan:F
move/from16 v24, v0
move/from16 v0, v24
move-object/from16 v1, p0
iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpan:F
.line 310
.end local v22 # "updatePrev":Z
:cond_226
const/16 v24, 0x1
goto/16 :goto_29
.end method[/COLOR][/B]
- Save changes and smali your framework.jar and push it to device.
Airview Enabling + Control Panel + S Pen Gesture
[Section A] Enabling app Air view:
Part: One
1. Just add this file to /system/etc/permissions in your phone.
2. Fix permission to rw-r--r-- and reboot
This will fully fix air-view for VideoPlayer and partially for S Planner!! Continue to part two and three to fix it for Gallary and Launcher..:laugh:
Click to expand...
Click to collapse
Part: Two (thanks to eybee1970 and Robbie Hood)
1. Decompile SecGallary2_Galaxy.apk
2. Go to res\values folder and open bools.xml file and do these changes:
Code:
<bool name="isEspresso">[B][COLOR="Blue"]true[/COLOR][/B]</bool>
<bool name="isTablet">[B][COLOR="Blue"]true[/COLOR][/B]</bool>
3. Save changes, recompile and push to your phone.
Part: Three
1. Decompile SecLauncher2.apk
2. Go to res\values folder and open bools.xml file and do these changes:
Code:
<bool name="config_FolderHovering">[B][COLOR="Blue"]true[/COLOR][/B]</bool>
[Section B] Enabling Air view Control Panel and SPen Gesture in settings menu:
Special thanks to @not-i for helping in porting pen gesture.
- Baksmali SecSettings.apk
- Navigate to classout\com\android\settings folder and open PenSettingsMenu.smali
- In the method ".method public onCreate(Landroid/os/Bundle;)V", locate this section and delete all colored text (don't delete the defined condition.!!):
Code:
.line 198
:cond_209
[B][COLOR="Red"] invoke-virtual {p0}, Lcom/android/settings/PenSettingsMenu;->getPreferenceScreen()Landroid/preference/PreferenceScreen;
move-result-object v0
const-string v1, "pen_hover"
invoke-virtual {p0, v1}, Lcom/android/settings/PenSettingsMenu;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
move-result-object v1
invoke-virtual {v0, v1}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z[/COLOR][/B]
.line 199
[B][COLOR="Blue"]invoke-virtual {p0}, Lcom/android/settings/PenSettingsMenu;->getPreferenceScreen()Landroid/preference/PreferenceScreen;
move-result-object v0
iget-object v1, p0, Lcom/android/settings/PenSettingsMenu;->mPenHovering:Landroid/preference/SwitchPreferenceScreen;
invoke-virtual {v0, v1}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z[/COLOR][/B]
.line 200
[B][COLOR="Green"]invoke-virtual {p0}, Lcom/android/settings/PenSettingsMenu;->getPreferenceScreen()Landroid/preference/PreferenceScreen;
move-result-object v0
iget-object v1, p0, Lcom/android/settings/PenSettingsMenu;->mPenHoveringSound:Landroid/preference/CheckBoxPreference;
invoke-virtual {v0, v1}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z[/COLOR][/B]
.line 206
[B][COLOR="DarkOrange"]invoke-virtual {p0}, Lcom/android/settings/PenSettingsMenu;->getPreferenceScreen()Landroid/preference/PreferenceScreen;
move-result-object v0
const-string v1, "pen_gesture_category"
invoke-virtual {p0, v1}, Lcom/android/settings/PenSettingsMenu;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
move-result-object v1
invoke-virtual {v0, v1}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z[/COLOR][/B]
.line 207
[B][COLOR="Magenta"]invoke-virtual {p0}, Lcom/android/settings/PenSettingsMenu;->getPreferenceScreen()Landroid/preference/PreferenceScreen;
move-result-object v0
const-string v1, "pen_quick_command"
invoke-virtual {p0, v1}, Lcom/android/settings/PenSettingsMenu;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
move-result-object v1
invoke-virtual {v0, v1}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z[/COLOR][/B]
Legend:
Deleting red codes: This will enable Air View header.
Deleting blue codes: This will enable Air View switch with control panel.
Deleting green codes: This will enable Air View haptic feedback.
Deleting orange codes: This will enable Pen gestures header.
Deleting purple codes: This will enable Quick command main action in Pen gestures category.
You can delete or keep ".line xxx" debugging; it is up to you.!!.
- Save changes.. smali SecSettings.apk, push it to your phone and fix permissions to rw-r--r-- (644).
- Push "SPenGesturePad.apk" to your phone and fix permissions to rw-r--r-- (644).
- Reboot the phone into recovery mode and flash SGNII_VODB.zip file.
N.B:
If you want to download extra languages for VODB, please see this post here.
Click to expand...
Click to collapse
Results:
Adding Extra About Info to Your ROM to Suit Your Ego
- Decompile SecSettings.apk
- Navigate to res\values\ folder and open strings.xml file by Notepad++ and keep it open, we will need it later.
- Navigate to res\xml\ folder and open device_info_settings.xml file by Notepad++.
Now, I will divide the tutorial into 2 sections..
Section One: Adding header category for about device menu.
- In device_info_settings.xml, at the top, do these changes (remove the red > and add blue lines):
before:
Code:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen android:title="@string/about_settings" android:key="about_device"
xmlns:android="http://schemas.android.com/apk/res/android"[B][COLOR="Red"]>[/COLOR][/B]
<PreferenceScreen android:title="@string/help_title" android:key="help" android:summary="@string/help_title_summary">
after:
Code:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen android:title="@string/about_settings" android:key="about_device"
xmlns:android="http://schemas.android.com/apk/res/android"
[B][COLOR="Blue"]xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
<PreferenceCategory android:title="@string/about_gen" android:key="dummy_gen" />[/COLOR][/B]
<PreferenceScreen android:title="@string/help_title" android:key="help" android:summary="@string/help_title_summary">
Explaination: we added header category with dummy key reference.
- Now we need to add strings resources, open strings.xml and add this line string resource before </resources> line:
Code:
<string name="about_gen">[B][COLOR="Green"]General information[/COLOR][/B]</string>
You can change the green color text to whatever you want to display
Click to expand...
Click to collapse
- We have finished from section one.
Section Two: Adding About ROM new information.
- In device_info_settings.xml, go to the end and add these lines before </PreferenceScreen> line:
Code:
<PreferenceCategory android:title="@string/rom_info" android:key="dummy_key">
<Preference android:title="@string/rom_name" android:key="rom_name" android:summary="@string/rom_name_details" style="?android:preferenceInformationStyle" />
<Preference android:title="@string/rom_ver" android:key="rom_ver" android:summary="@string/rom_ver_details" style="?android:preferenceInformationStyle" />
<Preference android:title="@string/rom_date" android:key="rom_date" android:summary="@string/rom_date_details" style="?android:preferenceInformationStyle" />
<Preference android:title="@string/rom_developer" android:key="rom_developer" android:summary="@string/rom_developer_name" style="?android:preferenceInformationStyle" />
<Preference android:title="@string/dev_thanks" android:key="dev_thanks" android:summary="@string/dev_thanks_name" style="?android:preferenceInformationStyle" />
</PreferenceCategory>
N.B: all referred android:key here are dummy ones; i.e, don't do anything and it can be anything since it has no reference. You can't delete android:key; it must be there to prevent code fragmentation.
Click to expand...
Click to collapse
- Now we need to add strings resources, open strings.xml and add these lines string resources before </resources> line:
Code:
<string name="rom_info">[B][COLOR="Green"]About ROM[/COLOR][/B]</string>
<string name="rom_name">[B][COLOR="Green"]ROM name[/COLOR][/B]</string>
<string name="rom_name_details">[B][COLOR="Green"]GloryROM[/COLOR][/B]</string>
<string name="rom_ver">[B][COLOR="Green"]ROM version[/COLOR][/B]</string>
<string name="rom_ver_details">[B][COLOR="Green"]v4.5 with Multi-Languages and Multi-CSC[/COLOR][/B]</string>
<string name="rom_date">[B][COLOR="Green"]Release date[/COLOR][/B]</string>
<string name="rom_date_details">[B][COLOR="Green"]March 2013[/COLOR][/B]</string>
<string name="rom_developer">[B][COLOR="Green"]ROM developer[/COLOR][/B]</string>
<string name="rom_developer_name">[B][COLOR="Green"]majdinj - xda.developers.com[/COLOR][/B]</string>
<string name="dev_thanks">[B][COLOR="Green"]Thanks to[/COLOR][/B]</string>
<string name="dev_thanks_name">[B][COLOR="Green"]ThaiDai for his ML ROM base[/COLOR][/B]</string>
You can change the green color text to whatever you want to display
Click to expand...
Click to collapse
- We have finished from section two.
- Save changes.
Now recompile your SecSettings.apk, push it to your phone, fix permissions (644) and reboot.
Enable TW Launcher Rotation
- Decompile SecLauncher2.apk
- Go to \res\values folder and open integers.xml
- Search for this line:
Code:
<integer name="config_screenOrientation">[B][COLOR="Red"]1[/COLOR][/B]</integer>
- Change the integer number to one of actions bellow:
1 = Disabled
2 = Enabled when Screen Rotation is switched on (270 degree)
3 = As same as 2
4 = Always enabled even if Screen Rotation is switched off (270 degree)
5 = Always default position
6 = Always in landscape mode (to the left)
7 = As same as 5
8 = Always in landscape mode (to the right)
9 = Upside down portrait when Screen Rotation is switched on
10= As same as 4 but for all directions (360 degree)
- Save changes.. recompile, push it to your device and fix permissions to 644 and reboot.
N.B: This will delete all preset home-screens..!!
Click to expand...
Click to collapse
Results:
Enable LockScreen Rotation
- Decompile framework-res.apk
- Go to \res\values folder and open bools.xml
- Change false to true in this line:
Code:
<bool name="config_enableLockScreenRotation">[B][COLOR="Blue"]true[/COLOR][/B]</bool>
- Save changes.. recompile, push it to your device and fix permissions to 644 and reboot.
N.B: This will always enable LockScreen rotation even if Screen Rotation toggle is switched off..!!
Click to expand...
Click to collapse
Results:
Continue moddings!!
Framed Recent app windows
For this mod, we will modify 2 files; SystemUI.apk and framework-res.apk
First download the resources from here.
A) SystemUI.apk
1. Decompile SystemUI.apk by APK-Multi Tool.
2. Inside Recent_Mod.zip there is three files; status_bar_recent_item.xml and status_bar_recent_panel.xml, copy them to res\layout-port folder for android 4.1 or to res\layout for android 4.2; and nyandroid11.png move it to res\drawable-nodpi folder
3. Go to res\values\bools.xml and change:
Code:
<bool name="config_recents_thumbnail_image_fits_to_xy">[B][COLOR="Red"]false[/COLOR][/B]</bool>
to:
Code:
<bool name="config_recents_thumbnail_image_fits_to_xy">[B][COLOR="Blue"]true[/COLOR][/B]</bool>
4. Go to res\values\colors.xml and change:
Code:
<color name="status_bar_recents_app_label_color">[B][COLOR="Red"]#ffffffff[/COLOR][/B]</color>
to:
Code:
<color name="status_bar_recents_app_label_color">[B][COLOR="Blue"]#ff555555[/COLOR][/B]</color>
5. Go to res\values\drawables.xml and change:
Code:
<item type="drawable" name="status_bar_recents_app_thumbnail_background">[B][COLOR="Red"]#88000000[/COLOR][/B]</item>
to:
Code:
<item type="drawable" name="status_bar_recents_app_thumbnail_background">[B][COLOR="Blue"]#ffe0e0e0[/COLOR][/B]</item>
6. Go to res\values\ids.xml and add these lines if they are not there:
Code:
<item type="id" name="recents_transition_background">false</item>
<item type="id" name="recents_transition_placeholder_icon">false</item>
7. Recompile your finished SystemUI.apk
B) framework-res.apk
1. Decompile framework-res.apk by APK-Multi Tool
2. Go to res\values\dimens.xml and change thumbnail height and width size to:
Code:
<dimen name="thumbnail_height">160.0dip</dimen>
Code:
<dimen name="thumbnail_width">240.0dip</dimen>
3. Recompile your finished framework-res.apk
N.B: You might change thumbnail height and width to match your device screen resolutions.
Click to expand...
Click to collapse
Results example:
Volume Rocker to Skip Sound Track
This mod will enable you to change sound track by long pressing volume up or down while the screen is locked using stock Music Player and Google Play Music programs..​
Credits to:
- xperiacle: who firstly port this mod to Galaxy Note.
- grilleld: who helped me by providing android.policy.jar from xperiacle ROM, so I could locate codes for this mod (I did some codes modifications to shortening the modding process , so it will be easy and straight forward).
Click to expand...
Click to collapse
- Backsmali android.policy.jar
- Navigate to com/android/internal/policy/impl/ folder and open PhoneWindowManager.smali
- Search for this static field ".field static final LONG_PRESS_POWER_SHUT_OFF:I = 0x2" and add this line bellow it (the blue one):
Code:
.field static final LONG_PRESS_POWER_SHUT_OFF:I = 0x2
[B][COLOR="Blue"].field private static final LONG_PRESS_TIMEOUT:I = 0x190[/COLOR][/B]
.field static final MINI_APP_DIALOG_LAYER:I = 0x5
Here you can set the timeout delay for long press event of volume rocker, here it is set to 400 millisecond (0x190).
Click to expand...
Click to collapse
- Search for this field ".field private mIsVisibleSPenGestureView:Z" and add these two lines bellow it (the blue ones):
Code:
.field private mIsVisibleSPenGestureView:Z
[B][COLOR="Blue"].field mIsVolumeAction:Z
.field mIsVolumeBlocking:Z[/COLOR][/B]
.field mKeyboardTapVibePattern:[J
- Search for the field ".field private mVolumeDownKeyTriggered:Z" and add this line bellow it (the blue one):
Code:
.field private mVolumeDownKeyTriggered:Z
[B][COLOR="Blue"].field mVolumeDownLongPress:Ljava/lang/Runnable;[/COLOR][/B]
.field private final mVolumeKeyLongPressforOneTouchReport:Ljava/lang/Runnable;
- Search for the field ".field private mVolumeUpKeyTriggered:Z" and add this line bellow it (the blue one):
Code:
.field private mVolumeUpKeyTriggered:Z
[B][COLOR="Blue"].field mVolumeUpLongPress:Ljava/lang/Runnable;[/COLOR][/B]
.field mWindowManager:Landroid/view/IWindowManager;
- Search for the method ".method public constructor <init>()V" and go to the end of this method and add these lines (the blue ones) before "return-void" line:
Code:
.line 7234
new-instance v0, Lcom/android/internal/policy/impl/PhoneWindowManager$36;
invoke-direct {v0, p0}, Lcom/android/internal/policy/impl/PhoneWindowManager$36;-><init>(Lcom/android/internal/policy/impl/PhoneWindowManager;)V
iput-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mScreenLockTimeout:Ljava/lang/Runnable;
[B][COLOR="Blue"]new-instance v0, Lcom/android/internal/policy/impl/PhoneWindowManager$Skip1;
invoke-direct {v0, p0}, Lcom/android/internal/policy/impl/PhoneWindowManager$Skip1;-><init>(Lcom/android/internal/policy/impl/PhoneWindowManager;)V
iput-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeUpLongPress:Ljava/lang/Runnable;
new-instance v0, Lcom/android/internal/policy/impl/PhoneWindowManager$Skip2;
invoke-direct {v0, p0}, Lcom/android/internal/policy/impl/PhoneWindowManager$Skip2;-><init>(Lcom/android/internal/policy/impl/PhoneWindowManager;)V
iput-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeDownLongPress:Ljava/lang/Runnable;[/COLOR][/B]
.line 8132
return-void
.end method
- Search for the method ".method handleVolumeKey(II)V" and add these lines above "invoke-static" line (the blue ones), and add extra condition line (the blue line) above "goto" command:
Code:
.method handleVolumeKey(II)V
.registers 8
.parameter "stream"
.parameter "keycode"
.prologue
.line 5405
[B][COLOR="Blue"]move-object/from16 v0, p0
iget-boolean v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsVolumeBlocking:Z
if-nez v0, :cond_c[/COLOR][/B]
invoke-static {}, Lcom/android/internal/policy/impl/PhoneWindowManager;->getAudioService()Landroid/media/IAudioService;
move-result-object v0
if-nez v0, :cond_d
[B][COLOR="Blue"]:cond_c[/COLOR][/B]
:goto_[B][COLOR="Blue"]c[/COLOR][/B]
return-void
Here we should change :goto_value to same as conditions we added, so it will be :goto_c
Click to expand...
Click to collapse
- Still in the same method, search down for "Landroid/os/PowerManager$WakeLock;->release()V" and change :goto value to the same as the one in the previous:
before:
Code:
iget-object v2, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mBroadcastWakeLock:Landroid/os/PowerManager$WakeLock;
invoke-virtual {v2}, Landroid/os/PowerManager$WakeLock;->release()V
goto :goto_[B][COLOR="Red"]6[/COLOR][/B]
After:
Code:
iget-object v2, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mBroadcastWakeLock:Landroid/os/PowerManager$WakeLock;
invoke-virtual {v2}, Landroid/os/PowerManager$WakeLock;->release()V
goto :goto_[B][COLOR="Blue"]c[/COLOR][/B]
- There is another one..!! Search down again for "Landroid/os/PowerManager$WakeLock;->release()V" and change :goto value to the same as the one in the previous step:
Before:
Code:
iget-object v2, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mBroadcastWakeLock:Landroid/os/PowerManager$WakeLock;
invoke-virtual {v2}, Landroid/os/PowerManager$WakeLock;->release()V
goto :goto_[B][COLOR="Red"]6[/COLOR][/B]
After:
Code:
iget-object v2, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mBroadcastWakeLock:Landroid/os/PowerManager$WakeLock;
invoke-virtual {v2}, Landroid/os/PowerManager$WakeLock;->release()V
goto :goto_[B][COLOR="Blue"]c[/COLOR][/B]
- Now at the end of the previous method ".method handleVolumeKey(II)V" and before the next method ".method public hasNavigationBar()Z", add these two new methods:
Code:
[B][COLOR="Blue"].method handleVolumeLongPress(I)V
.registers 6
const/4 v1, 0x1
move-object/from16 v0, p0
iput-boolean v1, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsVolumeBlocking:Z
const/4 v1, 0x0
iput-boolean v1, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsVolumeAction:Z
const/16 v1, 0x18
if-ne p1, v1, :cond_majdi
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeUpLongPress:Ljava/lang/Runnable;
:goto_nj
iget-object v1, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHandler:Landroid/os/Handler;
sget v2, Lcom/android/internal/policy/impl/PhoneWindowManager;->LONG_PRESS_TIMEOUT:I
int-to-long v2, v2
invoke-virtual {v1, v0, v2, v3}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z
return-void
:cond_majdi
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeDownLongPress:Ljava/lang/Runnable;
goto :goto_nj
.end method
.method handleVolumeLongPressAbort()V
.registers 3
const/4 v1, 0x0
move-object/from16 v0, p0
iput-boolean v1, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsVolumeBlocking:Z
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHandler:Landroid/os/Handler;
iget-object v1, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeUpLongPress:Ljava/lang/Runnable;
invoke-virtual {v0, v1}, Landroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;)V
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHandler:Landroid/os/Handler;
iget-object v1, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeDownLongPress:Ljava/lang/Runnable;
invoke-virtual {v0, v1}, Landroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;)V
return-void
.end method[/COLOR][/B]
- Now search for the method ".method public interceptKeyBeforeQueueing(Landroid/view/KeyEvent;IZ)I", then search down for "Lcom/android/internal/policy/impl/PhoneWindowManager;->mSamsungVolumeControlThread:Lcom/android/internal/policy/impl/PhoneWindowManager$SamsungVolumeControlThread;" and add these lines ABOVE it (the blue ones):
Code:
:cond_51c
move-object/from16 v0, p0
[B][COLOR="Blue"]iget-boolean v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mScreenOnEarly:Z
if-nez v0, :cond_dinj
invoke-virtual/range {p0 .. p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->isMusicActive()Z
move-result v29
if-eqz p0, :cond_dinj
move-object/from16 v0, p0
move/from16 v15, v19
invoke-virtual {v0, v15}, Lcom/android/internal/policy/impl/PhoneWindowManager;->handleVolumeLongPress(I)V
:cond_dinj
move-object/from16 v0, p0[/COLOR][/B]
iget-object v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mSamsungVolumeControlThread:Lcom/android/internal/policy/impl/PhoneWindowManager$SamsungVolumeControlThread;
move-object/from16 v29, v0
- Still in the same method, and after adding the previous lines, just go down for few lines and you will see a line starts with a defined condition (:cond_), just add these lines (the blue ones) bellow that defined condition:
Code:
invoke-virtual/range {v29 .. v29}, Lcom/android/internal/policy/impl/PhoneWindowManager$SamsungVolumeControlThread;->start()V
goto/16 :goto_68
:cond_562
[B][COLOR="Blue"]if-nez v5, :cond_newa
move-object/from16 v0, p0
iget-boolean v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsVolumeBlocking:Z
if-eqz v0, :cond_newa
invoke-virtual/range {p0 .. p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->handleVolumeLongPressAbort()V
move-object/from16 v0, p0
iget-boolean v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsVolumeAction:Z
if-nez v0, :cond_newa
move-object/from16 v0, p0
const/4 v3, 0x0
move/from16 v15, v19
invoke-virtual {v0, v3, v15}, Lcom/android/internal/policy/impl/PhoneWindowManager;->handleVolumeKey(II)V
:cond_newa[/COLOR][/B]
move-object/from16 v0, p0
iget-object v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mSamsungVolumeControlThread:Lcom/android/internal/policy/impl/PhoneWindowManager$SamsungVolumeControlThread;
move-object/from16 v29, v0
- Now at the end of the method ".method sendCloseSystemWindows(Ljava/lang/String;)V" and above the method ".method setAttachedWindowFrames(Landroid/view/WindowManagerPolicy$WindowState;IILandroid/view/WindowManagerPolicy$WindowState;ZLandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;I)V" add this new method:
Code:
[B][COLOR="Blue"].method protected sendMediaButtonEvent(I)V
.registers 15
invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
move-result-wide v1
new-instance v11, Landroid/content/Intent;
const-string v4, "android.intent.action.MEDIA_BUTTON"
const/4 v5, 0x0
invoke-direct {v11, v4, v5}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V
new-instance v0, Landroid/view/KeyEvent;
const/4 v5, 0x0
const/4 v7, 0x0
move-wide v3, v1
move v6, p1
invoke-direct/range {v0 .. v7}, Landroid/view/KeyEvent;-><init>(JJIII)V
const-string v4, "android.intent.extra.KEY_EVENT"
invoke-virtual {v11, v4, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Parcelable;)Landroid/content/Intent;
iget-object v4, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mContext:Landroid/content/Context;
const/4 v5, 0x0
invoke-virtual {v4, v11, v5}, Landroid/content/Context;->sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;)V
new-instance v12, Landroid/content/Intent;
const-string v4, "android.intent.action.MEDIA_BUTTON"
const/4 v5, 0x0
invoke-direct {v12, v4, v5}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V
new-instance v3, Landroid/view/KeyEvent;
const/4 v8, 0x1
const/4 v10, 0x0
move-wide v4, v1
move-wide v6, v1
move v9, p1
invoke-direct/range {v3 .. v10}, Landroid/view/KeyEvent;-><init>(JJIII)V
const-string v4, "android.intent.extra.KEY_EVENT"
invoke-virtual {v12, v4, v3}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Parcelable;)Landroid/content/Intent;
iget-object v4, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mContext:Landroid/content/Context;
const/4 v5, 0x0
invoke-virtual {v4, v12, v5}, Landroid/content/Context;->sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;)V
const/4 v8, 0x1
move-object/from16 v9, p0
iput-boolean v8, v9, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsVolumeAction:Z
return-void
.end method[/COLOR][/B]
Save changes..
Now add the two extra smalis resources in com/android/internal/policy/impl folder and recompile android.policy.jar and push to your phone and fix permissions.
CRT TV off effect
Some custom kernels, works when wifi is on!!
Click to expand...
Click to collapse
1. We need Backsmali/smali program for this method.
2. Put the service.jar in baksmali folder.
3. Follow its procedure to baksmali service.jar, if done you will have classout folder.
4. Open classout folder and go to \com\android\server folder and open PowerManagerService$ScreenBrightnessAnimator.smali file.
5. In the method ".method private animateInternal(IZI)V", search for "Landroid/os/Handler;->removeMessages(I)V" and add the following code lines (the blue ones only, pay attention to red register number, it could be differ according to your ROM):
Code:
.line 3064
.end local v0 #delta:I
:cond_60
:goto_60
iget-object v7, p0, Lcom/android/server/PowerManagerService$ScreenBrightnessAnimator;->this$0:Lcom/android/server/PowerManagerService;
#getter for: Lcom/android/server/PowerManagerService;->mScreenBrightnessHandler:Landroid/os/Handler;
invoke-static {v7}, Lcom/android/server/PowerManagerService;->access$7200(Lcom/android/server/PowerManagerService;)Landroid/os/Handler;
move-result-object [B][COLOR="Red"]v7[/COLOR][/B]
[COLOR="Blue"][B] if-eqz p2, :cond_maj
const/16 v9, 0xb
const/4 v10, 0x0
const v2, 0x10
invoke-virtual {v7, v9, v2, v10}, Landroid/os/Handler;->obtainMessage(III)Landroid/os/Message;
move-result-object v9
invoke-virtual {v9}, Landroid/os/Message;->sendToTarget()V
:cond_maj[/B][/COLOR]
const/16 v9, 0xa
invoke-virtual {v7, v9}, Landroid/os/Handler;->removeMessages(I)V
6. Save changes.
To disable glitch turning off, please see this post by joosh3 here
Click to expand...
Click to collapse
7. Recompile (smali) your jar and push to your phone.
Permanent Disable of Ongoing Notifications
★ Disable Ongoing Notifications in Pull-down Menu ★
- Decompile SystemUI.apk.
- Navigate to res/layout folder and open tw_status_bar_expanded.xml file.
- Now, locate this section:
Code:
<LinearLayout android:orientation="vertical" android:id="@id/onGoingCart" android:background="#ff293945" android:focusable="true" android:visibility="gone" android:layout_width="[B][COLOR="Red"]fill_parent[/COLOR][/B]" android:layout_height="[B][COLOR="Red"]@dimen/status_bar_expanded_notification_category_height[/COLOR][/B]">
<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" />
- Change the red texts in the previous codes to the new green one bellow and add the new blue codes..
Code:
<LinearLayout android:orientation="vertical" android:id="@id/onGoingCart" android:background="#ff293945" android:focusable="true" android:visibility="gone" android:layout_width="[B][COLOR="Lime"]0.0dip[/COLOR][/B]" android:layout_height="[B][COLOR="Lime"]0.0dip[/COLOR][/B]">
<TextView android:textSize="@dimen/status_bar_expanded_notification_category_text_size" android:textColor="@color/notification_category_color" [B][COLOR="Blue"]android:visibility="gone"[/COLOR][/B] 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" [B][COLOR="Blue"]android:visibility="gone"[/COLOR][/B] android:layout_width="fill_parent" android:layout_height="wrap_content" systemui:rowHeight="@dimen/tw_notification_row_min_height" />
- Save changes, recompile, push to phone, fix permissions (644) and reboot.
★ Disable Built-in Ongoing Notifications in Status Bar ★
Ok, this part is only for built-in ongoing notifications, since market apps ongoing notifications can be disabled from application manager settings..!!!
A. Disable USB Debugging Notification:
This is quiet simple. In your phone, go to /system partition folder and open build.prop file and add this line if it is not there or edit the pre-existent one to be like this one:
Code:
persist.adb.notify=[B][COLOR="Blue"]0[/COLOR][/B]
So.. 0 means disable and 1 means enable.
B. Disable Full Battery Notification:
- Baksmali SystemUI.apk.
- Go to classes/com/android/systemui/power/ folder and open PowerUI.smali.
- Search for this method ".method notifyFullBatteryNotification()V" and just add the following line (the blue line):
Code:
.method notifyFullBatteryNotification()V
.registers 12
.prologue
[B][COLOR="Blue"]return-void[/COLOR][/B]
const/4 v10, 0x0
.line 827
iget-object v7, p0, Lcom/android/systemui/SystemUI;->mContext:Landroid/content/Context;
const-string v8, "notification"
Explanation: the method will return to nothing (exit) as it is just void.
- Save changes.. smali (recompile).. push to phone.. fix permissions (644) and reboot.
C. Disable Keyboard Input Notification:
- Baksmali services.jar.
- Navigate to classout/com/android/server/ folder and open InputMethodManagerService.smali
- Search for this method ".method public setImeWindowStatus(Landroid/os/IBinder;II)V" and just add the following line (the blue line):
Code:
.method public setImeWindowStatus(Landroid/os/IBinder;II)V
.registers 23
.param p1, "token" # Landroid/os/IBinder;
.param p2, "vis" # I
.param p3, "backDisposition" # I
.prologue
[B][COLOR="Blue"]return-void[/COLOR][/B]
.line 1640
invoke-static {}, Landroid/os/Binder;->getCallingUid()I
Explanation: the method will return to nothing (exit) as it is just void.
- Save changes.. smali (recompile).. push to phone.. fix permissions (644) and reboot.
D. Disable USB Connection Notification:
This method is inspired by this thread here by @Didact74
- Decompile framework-res.apk.
- Go to res/values/ folder and open drawables.xml and add this line at the end before </resources> line:
Code:
<item type="drawable" name="stat_sys_data_usb">false</item>
- Now delete this image resource "stat_sys_data_usb.png" from both res/drawables-hdpi and drawables-xhdpi folders.
- Recompile, push to phone, fix permissions (644) and reboot.
Remove Mobile Data Toggle off Warning Dialogue
- Baksmali SystemUI.apk.
- Go to classout/com/android/systemui/statusbar/policy/quicksetting folder and open MobileDataQuickSettingButton.smali
- Search for this method ".method private setMobileData(Z)V" and then go to its end and add this (goto) blue line:
Code:
.method private setMobileData(Z)V
.registers 6
.param p1, "on" # Z
.prologue
.line 248
iget-object v1, p0, Lcom/android/systemui/statusbar/policy/quicksetting/MobileDataQuickSettingButton;->mContext:Landroid/content/Context;
invoke-virtual {v1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v1
const-string v2, "quickpanel_mobiledata_checked"
const/4 v3, 0x0
invoke-static {v1, v2, v3}, Landroid/provider/Settings$Secure;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v0
.line 250
.local v0, "mChecked":I
const-string v1, "STATUSBAR-MobileDataQuickSettingButton"
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "Mobile data waring checked : "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v1, v2}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
.line 252
[B][COLOR="Blue"]goto :cond_2d[/COLOR][/B]
if-nez p1, :cond_2d
if-nez v0, :cond_2d
.line 253
invoke-direct {p0}, Lcom/android/systemui/statusbar/policy/quicksetting/MobileDataQuickSettingButton;->onDisplayMobileDataOffAlert()V
.line 257
:goto_2c
return-void
.line 255
[B][COLOR="Red"]:cond_2d[/COLOR][/B] [B][COLOR="Green"]<!-- Make sure the new blue goto command above has the same cond value as this one[/COLOR][/B]
invoke-direct {p0, p1}, Lcom/android/systemui/statusbar/policy/quicksetting/MobileDataQuickSettingButton;->setMobileDataEnabled(Z)V
goto :goto_2c
.end method
- Make sure of the blue :cond value in the new goto command to be the same as the red :cond value in the code. Here, the red value is :cond_2d so the blue will be :cond_2d as well.
Explanation:
By adding this goto command, we are telling the code to jump over the invoke alert dialogue command to the mobile data boolean directly then jump to void.
Click to expand...
Click to collapse
- Save changes.. smali (recompile).. push to phone.. fix permissions (644) and reboot.
Continue moddings!!
Control The Full Battery Notification With Toggle Switch On or Off
After this guide, you will be able to switch on or off the full battery notification after the device is being fully charged..
So here we go..
We will be working with two files, SystemUI.apk and SecSettings.apk
Setting The Toggle Switch >>>
1) SecSettings.apk
- Decompile SecSettings.apk
- Go to res\values folder and open strings.xml and add these new lines:
Code:
<string name="set_remove_bat">Full Battery Notification</string>
<string name="notif_on">Notification is Enabled</string>
<string name="notif_off">Notification is Disabled</string>
- Go to res\xml folder and open display_settings.xml and add these codes where you want to display the toggle check box:
Code:
<CheckBoxPreference android:title="@string/set_remove_bat" android:key="bat_sbar" android:summaryOn="@string/notif_on" android:summaryOff="@string/notif_off" />
- Now for the smali.. Go to classout\com\android\settings folder and open DisplaySettings.smali.
- Add this line to [# instance fields] section:
Code:
.field private mBatPref:Landroid/preference/CheckBoxPreference;
- On the method ".method public onCreate(Landroid/os/Bundle;)V", search for ""key_multi_window"" and add these lines:
Code:
.line 570
const-string v11, "key_multi_window"
invoke-virtual {p0, v11}, Lcom/android/settings/DisplaySettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
move-result-object v11
check-cast v11, Landroid/preference/CheckBoxPreference;
iput-object v11, p0, Lcom/android/settings/DisplaySettings;->mMultiWindowPref:Landroid/preference/CheckBoxPreference;
[B][COLOR="Blue"]const-string v11, "bat_sbar"
invoke-virtual {p0, v11}, Lcom/android/settings/DisplaySettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
move-result-object v11
check-cast v11, Landroid/preference/CheckBoxPreference;
iput-object v11, p0, Lcom/android/settings/DisplaySettings;->mBatPref:Landroid/preference/CheckBoxPreference;[/COLOR][/B]
- Now in the method ".method public onPreferenceTreeClick(Landroid/preference/PreferenceScreen;Landroid/preference/Preference;)Z", search for ""multi_window_enabled"" to locate this part at the end:
Code:
:cond_15c
iget-object v0, p0, Lcom/android/settings/DisplaySettings;->mMultiWindowPref:Landroid/preference/CheckBoxPreference;
invoke-virtual {p2, v0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, [B][COLOR="Red"]:cond_179[/COLOR][/B]
.line 1022
iget-object v0, p0, Lcom/android/settings/DisplaySettings;->mMultiWindowPref:Landroid/preference/CheckBoxPreference;
invoke-virtual {v0}, Landroid/preference/CheckBoxPreference;->isChecked()Z
move-result v0
.line 1023
invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v3
const-string v4, "multi_window_enabled"
if-eqz v0, :cond_177
:goto_172
invoke-static {v3, v4, v1}, Landroid/provider/Settings$System;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z
goto/16 [B][COLOR="Lime"]:goto_1c[/COLOR][/B]
:cond_177
move v1, v2
goto :goto_172
.end method
Add new codes before [.end method] in the previous section. Pay attention to the red color condition and the green color condition..!!!, so that section will be like this:
Code:
:cond_15c
iget-object v0, p0, Lcom/android/settings/DisplaySettings;->mMultiWindowPref:Landroid/preference/CheckBoxPreference;
invoke-virtual {p2, v0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, [B][COLOR="Blue"]:cond_batteryToggle[/COLOR][/B]
.line 1022
iget-object v0, p0, Lcom/android/settings/DisplaySettings;->mMultiWindowPref:Landroid/preference/CheckBoxPreference;
invoke-virtual {v0}, Landroid/preference/CheckBoxPreference;->isChecked()Z
move-result v0
.line 1023
invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v3
const-string v4, "multi_window_enabled"
if-eqz v0, :cond_177
:goto_172
invoke-static {v3, v4, v1}, Landroid/provider/Settings$System;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z
goto/16 [B][COLOR="Lime"]:goto_1c[/COLOR][/B]
:cond_177
move v1, v2
goto :goto_172
[B][COLOR="Blue"]:cond_batteryToggle
iget-object v0, p0, Lcom/android/settings/DisplaySettings;->mBatPref:Landroid/preference/CheckBoxPreference;
invoke-virtual {p2, v0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, [COLOR="Red"]:cond_179[/COLOR]
.line 1022
iget-object v0, p0, Lcom/android/settings/DisplaySettings;->mBatPref:Landroid/preference/CheckBoxPreference;
invoke-virtual {v0}, Landroid/preference/CheckBoxPreference;->isChecked()Z
move-result v0
.line 1023
invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v3
const-string v4, "bat_sbar"
if-eqz v0, :cond_majdiB
:goto_njB
invoke-static {v3, v4, v1}, Landroid/provider/Settings$System;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z
goto/16 [B][COLOR="Lime"]:goto_1c[/COLOR][/B]
:cond_majdiB
move v1, v2
goto :goto_njB[/COLOR][/B]
.end method
- Now in the method ".method public onResume()V", search for ""multi_window_enabled"" and locate this part, pay attention to the red color condition..!!!:
Code:
:cond_9d
sget-boolean v0, Lcom/android/settings/DisplaySettings;->UseMultiWindow:Z
if-eqz v0, [B][COLOR="Red"]:cond_c1[/COLOR][/B]
.line 847
iget-object v0, p0, Lcom/android/settings/DisplaySettings;->mMultiWindowPref:Landroid/preference/CheckBoxPreference;
invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v3
const-string v4, "multi_window_enabled"
invoke-static {v3, v4, v1}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v3
if-ne v3, v1, :cond_de
:goto_af
invoke-virtual {v0, v1}, Landroid/preference/CheckBoxPreference;->setChecked(Z)V
.line 848
invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v0
const-string v1, "multi_window_enabled"
invoke-static {v1}, Landroid/provider/Settings$System;->getUriFor(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v1
iget-object v3, p0, Lcom/android/settings/DisplaySettings;->mMultiWindowModeObserver:Landroid/database/ContentObserver;
invoke-virtual {v0, v1, v2, v3}, Landroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;)V
line 850
:cond_c1
return-void
:cond_c2
move v0, v2
And do these modification:
Code:
:cond_9d
sget-boolean v0, Lcom/android/settings/DisplaySettings;->UseMultiWindow:Z
if-eqz v0, [B][COLOR="Blue"]:cond_newBattery[/COLOR][/B]
.line 847
iget-object v0, p0, Lcom/android/settings/DisplaySettings;->mMultiWindowPref:Landroid/preference/CheckBoxPreference;
invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v3
const-string v4, "multi_window_enabled"
invoke-static {v3, v4, v1}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v3
if-ne v3, v1, :cond_de
:goto_af
invoke-virtual {v0, v1}, Landroid/preference/CheckBoxPreference;->setChecked(Z)V
.line 848
invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v0
const-string v1, "multi_window_enabled"
invoke-static {v1}, Landroid/provider/Settings$System;->getUriFor(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v1
iget-object v3, p0, Lcom/android/settings/DisplaySettings;->mMultiWindowModeObserver:Landroid/database/ContentObserver;
invoke-virtual {v0, v1, v2, v3}, Landroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;)V
[B][COLOR="Blue"]:cond_newBattery
iget-object v0, p0, Lcom/android/settings/DisplaySettings;->mBatPref:Landroid/preference/CheckBoxPreference;
if-eqz v0, [COLOR="Red"]:cond_c1[/COLOR]
.line 3001
iget-object v0, p0, Lcom/android/settings/DisplaySettings;->mBatPref:Landroid/preference/CheckBoxPreference;
invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v3
const-string v4, "bat_sbar"
const/4 v1, 0x0
invoke-static {v3, v4, v1}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v3
if-eqz v3, :cond_noShow
const/4 v1, 0x1
goto :goto_yesShow
:cond_noShow
const/4 v1, 0x0
:goto_yesShow
invoke-virtual {v0, v1}, Landroid/preference/CheckBoxPreference;->setChecked(Z)V[/COLOR][/B]
line 850
:cond_c1
return-void
:cond_c2
move v0, v2
- Save all changes and compile and push to phone and prof working then continue to next step.
Setting The Referral Switch >>>
2) SystemUI.apk
- Baksmali SystemUI.apk.
- Go to classes/com/android/systemui/power/ folder and open PowerUI.smali.
- Search for this method ".method notifyFullBatteryNotification()V" and add the blue lines and delete or comment out the red line:
Code:
.method notifyFullBatteryNotification()V
.registers 12
.prologue
const/4 v10, 0x0
.line 827
iget-object v7, p0, Lcom/android/systemui/SystemUI;->mContext:Landroid/content/Context;
const-string v8, "notification"
invoke-virtual {v7, v8}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v2
check-cast v2, Landroid/app/NotificationManager;
.line 829
.local v2, "notificationManager":Landroid/app/NotificationManager;
[B][COLOR="Blue"]move-object v0, p0
iget-object v5, v0, Lcom/android/systemui/power/PowerUI;->mContext:Landroid/content/Context;
invoke-virtual {v5}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v5
const-string v6, "bat_sbar"
const/4 v7, 0x1
invoke-static {v5, v6, v7}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v5
if-nez v5, :cond_15
[COLOR="Red"]#if-nez v2, :cond_15[/COLOR][/COLOR] [COLOR="Green"]<!--- Put the same condition value in the above new condition[/COLOR][/B]
.line 830
const-string v7, "PowerUI"
const-string v8, "notifyFullBatteryNotification : fail to get NotificationManager reference"
invoke-static {v7, v8}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 860
:goto_14
return-void
.line 834
:cond_15
iget-object v7, p0, Lcom/android/systemui/SystemUI;->mContext:Landroid/content/Context;
- Save changes and compile and push to phone...
Disable Low Battery Notification
- Baksmali SystemUI.apk.
- Go to classes/com/android/systemui/power/ folder and open PowerUI.smali.
- Search for this method ".method showLowBatteryWarning()V" and add the blue line:
Code:
.method showLowBatteryWarning()V
.registers 20
.prologue
[B][COLOR="Blue"]return-void[/COLOR][/B]
.line 433
const-string v16, "PowerUI"
- Save changes.. smali.. push to device, fix permissions (644) and reboot
Remove cloudy overlay and improve ripple lockscreen - All Samsung Devices
This mod and guide credit goes to @Goldieking and @dazznuts2000..
It is already explained in very excellent and easy way,, so please go ahead to the main thread here and look to the tutorial and give him some thanks respect :good:
Disable Auto Scroll in Statusbar Quickpanel Toggle
This guide credits goes to @mr.harsh. Please go ahead to the main post here.
Settings menu extra hidden options
This one is explained very well by @tkari4 in this post here. Make sure to hit Thanks button for him if that made your day
Continue moddings!!
4-way Reboot Menu
1. We will need Backsmali/Smali program for this.
2. Download the following resources files (GlobalActions$99$1.smali, GlobalActions$99$2.smali, GlobalActions$99.smali) [New: new patched resources for non-working hot reboot option, download newPatchedResources]
3. Put the android.policy.jar in baksmali folder.
4. Follow its procedure to baksmali android.policy.jar, if done you will have classout folder.
5. Open classout folder and go to \com\android\internal\policy\impl and paste the three resource files; (GlobalActions$99$1.smali, GlobalActions$99$2.smali and GlobalActions$99) there.
6. Open GlobalActions.smali.
7. In GlobalActions.smali, change GlobalActions$5 to GlobalActions$99 on both lines, and save it.
>>The Code should look like this:<<
Code:
new-instance v0, Lcom/android/internal/policy/impl/[B][COLOR="Blue"]GlobalActions$99[/COLOR][/B];
const v1, 0x108064b
const v2, 0x1040169
invoke-direct {v0, p0, v1, v2}, Lcom/android/internal/policy/impl/[COLOR="Blue"][B]GlobalActions$99[/B][/COLOR];-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
iput-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
Some ROMs might have different number on reboot button (i.e, GlobalActions$5). You find right one by tracking mRestart
Click to expand...
Click to collapse
8. Now Open GlobalActions$SinglePressAction.smali. Just between line ".end annotation" and "# instance fields" place your cursor and hit enter 2 times to make room (i.e leave 2 lines empty above "# instance fields" and 2 lines bellow ".end annotation") to paste THIS code (Blue one only)
Code:
.end annotation
[COLOR="Blue"][B]# static fields
.field protected static rebootMode:I
.field protected static final rebootOptions:[Ljava/lang/String;[/B][/COLOR]
# instance fields
9. Still in GlobalActions$SinglePressAction.smali look for the code "# direct methods". Then paste THIS code bellow it (Blue one only):
Code:
# direct methods
[COLOR="Blue"][B].method static constructor <clinit>()V
.registers 3
const/4 v0, 0x4
new-array v0, v0, [Ljava/lang/String;
const/4 v1, 0x0
const-string v2, "Reboot"
aput-object v2, v0, v1
const/4 v1, 0x1
const-string v2, "Hot Reboot"
aput-object v2, v0, v1
const/4 v1, 0x2
const-string v2, "Download"
aput-object v2, v0, v1
const/4 v1, 0x3
const-string v2, "Recovery"
aput-object v2, v0, v1
sput-object v0, Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;->rebootOptions:[Ljava/lang/String;
return-void
.end method
[/B][/COLOR]
.method protected constructor <init>(II)V
10. Recompile (smali) your jar.
Additional
If you want to change "Choose Reboot Method" text on top of that menu then:
- Open GlobalActions$99.smali.
- Go to following code and made your change (N.B: if you delete this entire code, you will disable head title of "Choose Reboot Method")
Code:
const-string v2, "[COLOR="Blue"][B]Choose Reboot Method[/B][/COLOR]"
invoke-virtual {v1, v2}, Landroid/app/AlertDialog$Builder;->setTitle(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;
move-result-object v1
If you are porting to other device, please make sure in GlobalActions$99.smali whether Landroid/content/context has the same access$xx as same in GlobalActions.smali or change it to be like the one in GlobalActions.smali
Also make sure the following ids in GlobalActions$99.smali are pointed to the correct ids in framework-res.apk:
0x104000a = 0x0104000a = "string" name="ok"
0x104 = 0x01040000 = "string" name="cancel"
Lastly, if you are porting to android 4.3, open GlobalAction$99$1.smali and change the 2 lines of:
Code:
Lcom/android/server/pm/ShutdownThread
to:
Code:
Lcom/android/server/power/ShutdownThread
Click to expand...
Click to collapse
Results example:
Call record enabling + Disabling ascending ringtone
Call record enabling:
1. Put the SecPhone.apk in baksmali folder.
2. Follow its procedure to baksmali SecPhone.apk, if done you will have classout folder.
3. Open classout folder and go to \com\android\phone\PhoneFeature.smali, open it by NotePad++ and search for line makeFeatureForUsa()V and put these lines (Blue color text only) before "return-void" line:
Code:
[B] invoke-static {}, Lcom/android/phone/PhoneFeature;->makeFeatureForUsa()V
.line 899
[COLOR="Blue"] sget-object v0, Lcom/android/phone/PhoneFeature;->mFeatureList:Ljava/util/HashMap;
const-string v2, "voice_call_recording"
const/4 v4, 0x1
invoke-static {v4}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v3
invoke-virtual {v0, v2, v3}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
[/COLOR]
return-void[/B]
4. Save changes.
Disabling ascending ringtone:
1. Open classout folder and go to \com\android\phone\Ringer$1.smali.
2. Search for setStreamVolume. There should be two results. Delete the first one (the whole line):
Code:
.line 394
iget-object v1, p0, Lcom/android/phone/Ringer$1;->this$0:Lcom/android/phone/Ringer;
iget-object v1, v1, Lcom/android/phone/Ringer;->mAudioManager:Landroid/media/AudioManager;
[strike][B]invoke-virtual {v1, v3, v5, v4}, Landroid/media/AudioManager;->setStreamVolume(III)V[/B][/strike]
3. Now search for nop (usually at the bottom of the file!!), copy it and hit enter twice and paste again (see code bellow, the blue one). "leave one line space in between each line":
Code:
goto/16 :goto_b
.line 717
nop
[B][COLOR="Blue"] nop[/COLOR][/B]
:pswitch_data_1ca
.packed-switch 0x1
4. Save changes and recompile (smali) your SecPhone.apk.
Results example:
Smart Rotation enabling
1- Decompile SecSettings.apk and go to smali/com/android/settings/DisplaySettings.smali
2- Open this smali file with a NotePad++ and look for these lines and delete them all:
Code:
invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getPreferenceScreen()Landroid/preference/PreferenceScreen;
move-result-object v12
iget-object v13, p0, Lcom/android/settings/DisplaySettings;->mSmartRotation:Landroid/preference/CheckBoxPreference;
invoke-virtual {v12, v13}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z
3. Recompile and push to your phone.
Results example:
SMS hacks: displaying sent Time instead of the received time
Decompile SecMMS.apk
1. Go to /smali/com/android/mms/transaction/SMSReceiverService.smali, search for “currentTimeMillis" and change the following values:
Code:
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
to:
Code:
invoke-virtual {p1}, Landroid/telephony/SmsMessage;->getTimestampMillis()J
2. Search again for next “currentTimeMillis" and change the following values:
Code:
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
to:
Code:
invoke-virtual {v0}, Landroid/telephony/gsm/CbMessage;->getTimestampMillis()J
3. Save changes and compile.
If it doesn't work, clear the cache, the Dalvik cache, and also clear data for Messaging under Settings->Applications->Manage Applications (it won't delete your messages).
Click to expand...
Click to collapse
Unlimited Multiwindow apps
For this one, we need to play with 2 files (flashbarservice.apk and services.jar)
A. Flashbarservice.apk:
1. Decompile the flashbarservice.apk with APK-Multi tool.
2. Go to \smali\com\sec\android\app\FlashBar Service\FlashBarInfo.smali.
3. Open the file FlashBarInfo.smali using notepad++.
4. search for .method public generateFlashBarList()V and change the following code from:
Code:
const-string v8, "android.intent.category[COLOR="Blue"].MULTIWINDOW[/COLOR]_LAUNCHER"
to:
Code:
const-string v8, "android.intent.category.LAUNCHER"
5. Save and recompile and push to your phone.
B. services.jar:
1. Decompile services.jar by Backsmali/smali program.
2. Go to classout\smali\com\android\server\am\MultiWindowManagerService.smali
3. Open the file using notepad++ and search for following method ".method public isSupportApp(Ljava/lang/String)Z" and change the entire method to:
Code:
[COLOR="Blue"][B].method public isSupportApp(Ljava/lang/String;)Z
.registers 2
.prologue
const/4 v0, 0x1
return p0
.end method[/B][/COLOR]
4. Save file and recompile (Smali).
Home screen wallpaper scrolling
1. Decompile SecLauncher2.apk by APK-Multi tool.
2. Go to \res\values folder and open bools.xml file with Notepad++.
3. Change the following line:
Code:
<bool name="config_fixedWallpaperOffset">[B][COLOR="Blue"]true[/COLOR][/B]</bool>
to:
Code:
<bool name="config_fixedWallpaperOffset">[B][COLOR="Blue"]false[/COLOR][/B]</bool>
4. Save the file, recompile and push the apk to your phone.
Changing number of icons in home screen and apps drawer (dpi modding)
1. Decompile SecLauncher2.apk by APK-Multi tool.
2. Go to \res\values-sw399dp folder
3. Here we will do our changes to integers.xml, dimens.xml and and styles.xml files.
I. integers.xml:
Here is where you change the number of icons displayed in X axes "i.e, horizontal" and Y axes "i.e, vertical".
You need to apply your changes on the following numbers on the following lines:
Code:
<integer name="home_cellCountX">[B][COLOR="Blue"]5[/COLOR][/B]</integer>
<integer name="home_cellCountY">[B][COLOR="Blue"]5[/COLOR][/B]</integer>
<integer name="menuAppsGrid_cellCountX">[B][COLOR="Blue"]5[/COLOR][/B]</integer>
<integer name="menuAppsGrid_cellCountY">[B][COLOR="Blue"]5[/COLOR][/B]</integer>
As you can figure, home_cellCountX is number of icons in home screen in X axes and home_cellCountY is number of icons in home screen in Y axes.
Whereas; menuAppsGrid_cellCountX is number of icons in apps drawer in X axes and menuAppsGrid_cellCountY is number of icons in apps drawer in Y axes.
Do your changes and save.
II. dimens.xml:
Here is where you change icons size displayed in X and Y axes.
You need to apply your changes on the following lines for home screen to any number you want (might need several testing):
Code:
<dimen name="app_icon_size">[COLOR="Blue"][B]48.0[/B][/COLOR]dip</dimen>
<dimen name="home_cellWidth_port">[B][COLOR="Blue"]80.0[/COLOR][/B]dip</dimen>
<dimen name="home_cellHeight_port">[B][COLOR="Blue"]100.0[/COLOR][/B]dip</dimen>
<dimen name="home_cellGapX_port">[B][COLOR="Blue"]0.0[/COLOR][/B]dip</dimen>
<dimen name="home_cellGapY_port">[B][COLOR="Blue"]0.0[/COLOR][/B]dip</dimen>
<dimen name="home_pageMarginPlusPaddingTop">[B][COLOR="Blue"]2.0[/COLOR][/B]dip</dimen>
<dimen name="home_pageIndicatorTop">[B][COLOR="Blue"]508.0[/COLOR][/B]dip</dimen>
<dimen name="home_pageIndicatorTopShrunken">[B][COLOR="Blue"]508.0[/COLOR][/B]dip</dimen>
Also you need to apply your changes on the following lines for apps drawer to any number you want (might need several testing):
Code:
<dimen name="menuAppsGrid_pageMarginPlusPaddingTop">[B][COLOR="Blue"]27.0[/COLOR][/B]dip</dimen>
<dimen name="menuAppsGrid_cellWidth">[B][COLOR="Blue"]78.0[/COLOR][/B]dip</dimen>
<dimen name="menuAppsGrid_cellHeight">[B][COLOR="Blue"]94.0[/COLOR][/B]dip</dimen>
<dimen name="menuAppsGrid_cellGapX">[B][COLOR="Blue"]2.0[/COLOR][/B]dip</dimen>
<dimen name="menuAppsGrid_cellGapY">[B][COLOR="Blue"]2.0[/COLOR][/B]dip</dimen>
<dimen name="menu_pageIndicatorGap">[B][COLOR="Blue"]12.0[/COLOR][/B]dip</dimen>
<dimen name="menu_pageIndicatorTop">[B][COLOR="Blue"]520.0[/COLOR][/B]dip</dimen>
N.B: actually this is how I did it; you can play with other figures and test it to see the effect!!
Click to expand...
Click to collapse
Do your changes and save.
III. styles.xml:
This is needed if the icon label text becomes truncated!!
You need to edit the following lines to any number you want (might need several testing):
For home screen, edit this number:
Code:
<style name="HomeIcon" parent="@style/BaseHomeIcon">
<item name="android:textSize">[COLOR="Blue"][B]13.0[/B][/COLOR]dip</item>
For apps drawer, edit this number:
Code:
<style name="MenuIcon" parent="@style/BaseMenuIcon">
<item name="android:textSize">[B][COLOR="Blue"]13.0[/COLOR][/B]dip</item>
Do your changes and save.
4. Recompile and push to your phone.
5. Now we have to change phone's menus dpi. With any root browser/explorer program, navigate to system folder and open build.prop file as a text file and go to this line:
Code:
ro.sf.lcd_density=[B][COLOR="Red"]320[/COLOR][/B]
just change the red value to which dpi you want; e.g 240, then save changes and reboot your phone.
Camera & Camcorder hacks: Adding "Shutter Sound On/Off" in menu, flash can be used in low battery, hard keys as shutter, increasing camcorder quality..etc
Credits to: jobnik, I just explain the procedure!!
Click to expand...
Click to collapse
We need Backsmali/smali program to do this method.
Put SamsungCamera.apk in Backsmali folder and follow its guide to have classout folder in the end.
Adding "Shutter Sound On/Off" option in Camera Menu:
1. Go to classout\com\sec\android\app\camera\resourcedata\ folder and open CameraSettingsMenuResourceData.smali file.
2. To locate the lines that we will edit, search for"CscFeature_Camera_ShutterSoundMenu".
3. Now delete all these 6 lines:
Code:
invoke-static {}, Lcom/sec/android/app/CscFeature;->getInstance()Lcom/sec/android/app/CscFeature;
move-result-object v2
const-string v3, "CscFeature_Camera_ShutterSoundMenu"
invoke-virtual {v2, v3}, Lcom/sec/android/app/CscFeature;->getEnableStatus(Ljava/lang/String;)Z
move-result v2
if-eqz v2, :cond_f8
Camera can be used with flash in low battery state:
1. Go to classout\com\sec\android\app\camera\ folder and open AbstractCameraActivity.smali file.
2. Search for ".method protected handleLowBattery(Z)V" and add the following line (the blue line):
Code:
.method protected handleLowBattery(Z)V
.registers 5
.parameter "temp"
.prologue
.line 2072
[COLOR="Blue"][B]return-void[/B][/COLOR]
const-string v1, "AbstractCameraActivity"
3. Now save changes and go to classout\ com\sec\android\app\camera\ folder and open Camera.smali file.
4. Search for ".method private handleBatteryChanged(Landroid/content/Intent;)V" and look for the lines that have "handleLowBattery(Z)V" and "handlePluggedLowBattery(Z)V" after this method and delete the whole lines:
Code:
invoke-virtual {p0}, Lcom/sec/android/app/camera/Camera;->handleLowBattery()V
invoke-direct {p0, v6}, Lcom/sec/android/app/camera/Camera;->handlePluggedLowBattery(Z)V
invoke-direct {p0, v6}, Lcom/sec/android/app/camera/Camera;->handlePluggedLowBattery(Z)V
As you can see, there are 2 lines with "handlePluggedLowBattery(Z)V" AFTER this method, you have to delete them both
Click to expand...
Click to collapse
5. Still in Camera.smali file, search for ".method private handlePluggedLowBattery(Z)V" and add the following line (the blue line):
Code:
.method private handlePluggedLowBattery(Z)V
.registers 7
.parameter "temp"
.prologue
const/4 v4, 0x3
const/4 v3, 0x0
.line 6238
[B][COLOR="Blue"]return-void[/COLOR][/B]
const-string v1, "Camera"
Camera focus sound disabled:
1. Go to classout\com\sec\android\app\camera\ folder and open Camera.smali file.
2. Search for ".method public playCameraSound(II)V" and add the following line (the blue line):
Code:
.method public playCameraSound(II)V
.registers 12
.parameter "Sound"
.parameter "loop"
.prologue
const/4 v4, 0x0
const/high16 v6, 0x3f80
.line 4870
[B][COLOR="Blue"]return-void[/COLOR][/B]
iget-object v0, p0, Lcom/sec/android/app/camera/Camera;->mSoundPool:Landroid/media/SoundPool;
Camera Volume Up/Down and power buttons as a shutter:
1. Go to classout\com\sec\android\app\camera\ folder and open Camera.smali file.
2. Search for ". method public onKeyDown(ILandroid/view/KeyEvent;)Z" and look for ".sparse-switch" at the end of this method.
3. Here you will see several :sswitch definitions. See the one for 0x17, it is the touch shutter button and is defined as :sswitch_??. So simply we need to make :sswitch that are defined to volume up/down and power buttons to read the same as the one defined to the touch shutter button. Here 0x18 is for volume up; 0x19 is for volume down, and 0x1a is for power button.
4. So now change these :sswitch for these buttons to read as same as that for the touch shutter button. See example bellow:
Before:
Code:
:sswitch_data_2a0
.sparse-switch
0x4 -> :sswitch_95
[B][COLOR="Blue"]0x17 -> :sswitch_f7[/COLOR][/B] [COLOR="DarkGreen"]<!-- this is the touch shutter button[/COLOR]
[B][COLOR="Red"]0x18 -> :sswitch_238[/COLOR][/B] [COLOR="DarkGreen"]<!-- this is volume up button[/COLOR]
[B][COLOR="Red"]0x19 -> :sswitch_238[/COLOR][/B] [COLOR="DarkGreen"]<!-- this is volume down button[/COLOR]
[B][COLOR="Red"]0x1a -> :sswitch_95[/COLOR][/B] [COLOR="DarkGreen"]<!-- this is power button[/COLOR]
0x1b -> :sswitch_f7
0x42 -> :sswitch_f7
0x45 -> :sswitch_238
0x46 -> :sswitch_238
0x50 -> :sswitch_9b
0x52 -> :sswitch_93
0x55 -> :sswitch_98
0x59 -> :sswitch_98
0x5a -> :sswitch_98
0x9c -> :sswitch_238
0x9d -> :sswitch_238
.end sparse-switch
.end method
After:
Code:
:sswitch_data_2a0
.sparse-switch
0x4 -> :sswitch_95
[COLOR="Blue"][B]0x17 -> :sswitch_f7[/B][/COLOR] [COLOR="DarkGreen"]<!-- this is the touch shutter button[/COLOR]
[B][COLOR="Red"]0x18 -> :sswitch_f7[/COLOR][/B] [COLOR="DarkGreen"]<!-- this is volume up button[/COLOR]
[B][COLOR="Red"]0x19 -> :sswitch_f7[/COLOR][/B] [COLOR="DarkGreen"]<!-- this is volume down button[/COLOR]
[B][COLOR="Red"]0x1a -> :sswitch_f7[/COLOR][/B] [COLOR="DarkGreen"]<!-- this is power button[/COLOR]
0x1b -> :sswitch_f7
0x42 -> :sswitch_f7
0x45 -> :sswitch_238
0x46 -> :sswitch_238
0x50 -> :sswitch_9b
0x52 -> :sswitch_93
0x55 -> :sswitch_98
0x59 -> :sswitch_98
0x5a -> :sswitch_98
0x9c -> :sswitch_238
0x9d -> :sswitch_238
.end sparse-switch
.end method
5. Now search for ". method public onKeyUp(ILandroid/view/KeyEvent;)Z" and look for ".sparse-switch" at the end of this method.
6. Again you will see several :sswitch definitions. See the one for 0x17, it is the touch shutter button and is defined as :sswitch_??. And yes as you can figure out 0x18 is for volume up, 0x19 is for volume down and 0x1a is for power button.
7. So now change these :sswitch for these buttons to read as same as that for the touch shutter button. See example bellow:
Before:
Code:
.line 2172
.sparse-switch
0x3 -> :sswitch_25f
0x4 -> :sswitch_60
[B][COLOR="Blue"]0x17 -> :sswitch_11e[/COLOR][/B] [COLOR="DarkGreen"]<!-- this is the touch shutter button[/COLOR]
[B][COLOR="Red"]0x18 -> :sswitch_209[/COLOR][/B] [COLOR="DarkGreen"]<!-- this is volume up button[/COLOR]
[B][COLOR="Red"]0x19 -> :sswitch_209[/COLOR][/B] [COLOR="DarkGreen"]<!-- this is volume down button[/COLOR]
[B][COLOR="Red"]0x1a -> :sswitch_209[/COLOR][/B] [COLOR="DarkGreen"]<!-- this is power button[/COLOR]
0x1b -> :sswitch_11e
0x42 -> :sswitch_11e
0x50 -> :sswitch_20c
0x52 -> :sswitch_e5
.end sparse-switch
After:
Code:
.line 2172
.sparse-switch
0x3 -> :sswitch_25f
0x4 -> :sswitch_60
[B][COLOR="Blue"]0x17 -> :sswitch_11e[/COLOR][/B] [COLOR="DarkGreen"]<!-- this is the touch shutter button[/COLOR]
[B][COLOR="Red"]0x18 -> :sswitch_11e[/COLOR][/B] [COLOR="DarkGreen"]<!-- this is volume up button[/COLOR]
[B][COLOR="Red"]0x19 -> :sswitch_11e[/COLOR][/B] [COLOR="DarkGreen"]<!-- this is volume down button[/COLOR]
[B][COLOR="Red"]0x1a -> :sswitch_11e[/COLOR][/B] [COLOR="DarkGreen"]<!-- this is power button[/COLOR]
0x1b -> :sswitch_11e
0x42 -> :sswitch_11e
0x50 -> :sswitch_20c
0x52 -> :sswitch_e5
.end sparse-switch
N.B: In power button as a shutter, it will work on long press, so the power menu will popup as well, but it will take a picture!!
Click to expand...
Click to collapse
Camcorder can be used with flash in low battery state:
1. Go to classout\com\sec\android\app\camera\ folder and open Camcorder.smali file.
2. Search for ".method protected handleLowBattery(Z)V" and add the following line (the blue one):
Code:
.method protected handleLowBattery(Z)V
.registers 4
.parameter "temp"
.prologue
.line 3267
[B][COLOR="Blue"]return-void[/COLOR][/B]
const-string v0, "Camcorder"
3. Still in Camcorder.smali file, search for ".method private handleBatteryChanged(Landroid/content/Intent;)V" and look for lines that have "handleLowBattery(Z)V" and "handlePluggedLowBattery(Z)V" after this method and delete the whole lines:
Code:
invoke-virtual {p0}, Lcom/sec/android/app/camera/Camcorder;->handleLowBattery(Z)V
invoke-direct {p0, v7}, Lcom/sec/android/app/camera/Camcorder;->handlePluggedLowBattery(Z)V
invoke-direct {p0, v7}, Lcom/sec/android/app/camera/Camcorder;->handlePluggedLowBattery(Z)V
As you can see, there are 2 lines with "handlePluggedLowBattery(Z)V" AFTER this method, you have to delete them both
Click to expand...
Click to collapse
4. Still in Camcorder.smali file, search for ".method private handlePluggedLowBattery(Z)V" and add the following line (the blue one):
Code:
.method private handlePluggedLowBattery(Z)V
.registers 7
.parameter "temp"
.prologue
const/16 v4, 0x67
const/4 v3, 0x0
.line 4351
[B][COLOR="Blue"]return-void[/COLOR][/B]
const-string v1, "Camcorder"
Camcorder Better audio quality and video bitrate:
VIDEO QUALITY:
1080p: Normal - 17MBit / Fine - 24MBit / Superfine - 30MBit
720p: Normal - 9MBit / Fine - 13MBit / Superfine - 17MBit
SOUND QUALITY:
192kbit/s, 48000 khz
Click to expand...
Click to collapse
1. Go to classout\com\sec\android\app\camera\ folder and open MediaRecorderProfile.smali file.
2. Modify the first 4 arrays to be exactly like the followings (the blue lines only):
Code:
:array_11c
.array-data 0x4
[B][COLOR="Blue"] 0x2t 0x0t 0x0t 0x0t
0x80t 0xc3t 0xc9t 0x1t
0x0t 0x36t 0x6et 0x1t
0x40t 0x66t 0x3t 0x1t
0x1et 0x0t 0x0t 0x0t
0x2t 0x0t 0x0t 0x0t
0x3t 0x0t 0x0t 0x0t
0x0t 0xeet 0x2t 0x0t
0x2t 0x0t 0x0t 0x0t
0x80t 0xbbt 0x0t 0x0t[/COLOR][/B]
.end array-data
:array_134
.array-data 0x4
[B][COLOR="Blue"] 0x2t 0x0t 0x0t 0x0t
0x40t 0x66t 0x3t 0x1t
0x40t 0x5dt 0xc6t 0x0t
0x40t 0x54t 0x89t 0x0t
0x1et 0x0t 0x0t 0x0t
0x2t 0x0t 0x0t 0x0t
0x3t 0x0t 0x0t 0x0t
0x0t 0xeet 0x2t 0x0t
0x2t 0x0t 0x0t 0x0t
0x80t 0xbbt 0x0t 0x0t[/COLOR][/B]
.end array-data
:array_14c
.array-data 0x4
[B][COLOR="Blue"] 0x2t 0x0t 0x0t 0x0t
0xa8t 0xa0t 0x34t 0x0t
0x50t 0x3et 0x2bt 0x0t
0x90t 0x10t 0x23t 0x0t
0x1et 0x0t 0x0t 0x0t
0x2t 0x0t 0x0t 0x0t
0x3t 0x0t 0x0t 0x0t
0x0t 0xeet 0x2t 0x0t
0x2t 0x0t 0x0t 0x0t
0x80t 0xbbt 0x0t 0x0t[/COLOR][/B]
.end array-data
:array_164
.array-data 0x4
[B][COLOR="Blue"] 0x2t 0x0t 0x0t 0x0t
0x70t 0xf7t 0x2et 0x0t
0xa8t 0xf4t 0x26t 0x0t
0xb8t 0xcet 0x1et 0x0t
0x1et 0x0t 0x0t 0x0t
0x2t 0x0t 0x0t 0x0t
0x3t 0x0t 0x0t 0x0t
0x0t 0xeet 0x2t 0x0t
0x2t 0x0t 0x0t 0x0t
0x80t 0xbbt 0x0t 0x0t[/COLOR][/B]
.end array-data
Save changes, recompile (smali) your apk. You will get "classes.dex" and with 7-zip, open the archive of the original SamsungCamera.apk. Then drag and drop the classes.dex into SamsungCamera.apk. and push it to your phone.
Continue moddings!!
SMS hack: SMS 200 recipients, stop SMS to MMS auto-converting, increase SMS hour limit, 1000 slides, group messages, scheduled messages and save/restore messages
I. SMS 200 recipients:
1) Backsmali SecMMs.apk
2) Navigate to and open classout\com\android\mms\MmsConfig.smali
3) Search for ".method public static getRecipientLimit()I" and do these changes:
Code:
.method public static getRecipientLimit()I
.registers 1
.prologue
.line 656
[B][COLOR="Red"]sget v0, Lcom/android/mms/MmsConfig;->mRecipientLimit:I[/COLOR][/B]
return v0
.end method
to:
Code:
.method public static getRecipientLimit()I
.registers 1
.prologue
.line 656
[B][COLOR="Blue"]const/16 v0, 0xc8[/COLOR][/B]
return v0
.end method
Save changes and recompile (smali) your apk.
II. Stop SMS to MMS auto-converting:
1) Backsmali SecMMs.apk
2) Navigate to and open classout\com\android\mms\MmsConfig.smali
3) Search for "Lcom/android/mms/MmsConfig;->mMaxImageWidthRestrictedMode:I" and do these changes:
Code:
sput v0, Lcom/android/mms/MmsConfig;->mMaxImageWidthRestrictedMode:I
.line 153
[B][COLOR="Red"]sput v7, Lcom/android/mms/MmsConfig;->mRecipientLimit:I[/COLOR][/B]
.line 154
[B][COLOR="Red"]const/16 v0, 0xc8[/COLOR][/B]
sput v0, Lcom/android/mms/MmsConfig;->mDefaultSMSMessagesPerThread:I
to:
Code:
sput v0, Lcom/android/mms/MmsConfig;->mMaxImageWidthRestrictedMode:I
.line 153
[B][COLOR="Blue"]const/16 v0, 0x3e8
[/COLOR][/B]
.line 154
[B][COLOR="Blue"]sput v0, Lcom/android/mms/MmsConfig;->mRecipientLimit:I[/COLOR][/B]
sput v0, Lcom/android/mms/MmsConfig;->mDefaultSMSMessagesPerThread:I
4) Then search for "Lcom/android/mms/MmsConfig;->mAllowAttachAudio:Z" and do these changes:
Code:
.line 161
sput-boolean v2, Lcom/android/mms/MmsConfig;->mAllowAttachAudio:Z
.line 164
[B][COLOR="Red"]const/4 v0, 0x4[/COLOR][/B]
sput v0, Lcom/android/mms/MmsConfig;->mSmsToMmsTextThreshold:I
to:
Code:
.line 161
sput-boolean v2, Lcom/android/mms/MmsConfig;->mAllowAttachAudio:Z
.line 164
[B][COLOR="Blue"]const/16 v0, 0x3e8[/COLOR][/B]
sput v0, Lcom/android/mms/MmsConfig;->mSmsToMmsTextThreshold:I
5) Then search for ".method public static getMaxRecipientLength()I" and do these changes:
Code:
.method public static getMaxRecipientLength()I
.registers 1
.prologue
.line 2259
[B][COLOR="Red"]sget v0, Lcom/android/mms/MmsConfig;->mMaxRecipientLength:I[/COLOR][/B]
return v0
.end method
to:
Code:
.method public static getMaxRecipientLength()I
.registers 1
.prologue
.line 2259
[B][COLOR="Blue"]const/16 v0, 0x3e8[/COLOR][/B]
return v0
.end method
6) Then search for ".method public static getMmsMaxRecipient()I" and do these changes:
Code:
.method public static getMmsMaxRecipient()I
.registers 1
.prologue
.line 2498
[B][COLOR="Red"]sget v0, Lcom/android/mms/MmsConfig;->mMmsRecipientLimit:I[/COLOR][/B]
return v0
.end method
to:
Code:
.method public static getMmsMaxRecipient()I
.registers 1
.prologue
.line 2498
[B][COLOR="Blue"]const/16 v0, 0x3e8[/COLOR][/B]
return v0
.end method
7) Then search for ".method public static getSmsToMmsTextThreshold()I" and do these changes:
Code:
.method public static getSmsToMmsTextThreshold()I
.registers 1
.prologue
.line 585
[B][COLOR="Red"]sget v0, Lcom/android/mms/MmsConfig;->mSmsToMmsTextThreshold:I[/COLOR][/B]
return v0
.end method
to:
Code:
.method public static getSmsToMmsTextThreshold()I
.registers 1
.prologue
.line 585
[B][COLOR="Blue"]const/16 v0, 0x3e8[/COLOR][/B]
return v0
.end method
8) Then search for "Lcom/android/mms/MmsConfig;->mMaxRecipientLength:I" and add this line above it (the blue one):
Code:
move-result v10
[B][COLOR="Blue"]const/16 v9, 0x3e8[/COLOR][/B]
sput v10, Lcom/android/mms/MmsConfig;->mMaxRecipientLength:I
.line 1638
sget v10, Lcom/android/mms/MmsConfig;->mMinRecipientLength:I
9) Then search for "Lcom/android/mms/MmsConfig;->mSmsToMmsTextThreshold:I" and add this line above it (the blue one):
Code:
move-result v1
[B][COLOR="Blue"]const/16 v1, 0x3e8[/COLOR][/B]
sput v1, Lcom/android/mms/MmsConfig;->mSmsToMmsTextThreshold:I
.line 1817
const-string v1, "Mms/MmsConfig"
10) Then search for "Lcom/android/mms/MmsConfig;->mRecipientLimit:I" add this line above it (the blue one):
Code:
invoke-interface {v0, v1, v4}, Landroid/content/SharedPreferences;->getInt(Ljava/lang/String;I)I
move-result v1
[B][COLOR="Blue"]const/16 v1, 0x3e8[/COLOR][/B]
sput v1, Lcom/android/mms/MmsConfig;->mRecipientLimit:I
11) Save changes and recompile (smali) your apk.. phewww wow we finished
After pushing your final hacked SecMms.apk to your phone, you might have this message after you wrote 14 sms pages "Message size limit reached the maximum number of characters" that is actually a limitation of your mobile company provider protocol itself.
Click to expand...
Click to collapse
III. Increase SMS hour limit:
1) Backsmali SecMMs.apk
2) Navigate and open classout\com\android\mms\util\RateController.smali
3) Look for this line:
Code:
.field private static final RATE_LIMIT:I = [B][COLOR="Red"]0x64[/COLOR][/B]
and change it to:
Code:
.field private static final RATE_LIMIT:I = [B][COLOR="Blue"]0x3e8[/COLOR][/B]
4) Save changes and recompile (smali) your apk
Why??
0x64 means 100 in hexadecimal format. So we put 0x3e8 which means 1000 in hexadecimal format
Click to expand...
Click to collapse
VI. 1000 slides for MMS:
- Baksmali SecMms.apk
- Go to classout\com\android\mms folder and open MmsConfig.smali
- Now Search for ".method public static getMaxSlideCount()I" and do the following change..
Before:
Code:
.method public static getMaxSlideCount()I
.registers 1
.prologue
.line 825
[B][COLOR="Red"]sget v0, Lcom/android/mms/MmsConfig;->mMaxSlideCount:I[/COLOR][/B]
return v0
.end method
After:
Code:
.method public static getMaxSlideCount()I
.registers 1
.prologue
.line 825
[B][COLOR="Blue"]const/16 v0, 0x3e8[/COLOR][/B]
return v0
.end method
Save changes and smali your SecMms.apk and push it to phone and fix permissions to rw-r--r-- (644)
V. Group messages, scheduled messages and save/restore messages:
Already a great tutorial by @jovy23 is here.
23 toggles notification panel (Lidroid way)
Special thanks to wanam who modifies Lidroid way to port the 23-toggle to JB ROMs
Click to expand...
Click to collapse
1. Decompile SystemUI.apk by APK-Multi-Tool.
2. Navigate to res\layout folder and open tw_status_bar_expanded.xml and do these changes (delete red lines, add blue lines, and modify the green one to be like it):
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" />
[B][COLOR="Blue"]<HorizontalScrollView android:id="@id/quicksetting_scroller" android:visibility="gone" android:scrollbars="none" android:layout_width="wrap_content" android:layout_height="@dimen/quick_setting_button_height" android:layout_marginTop="@dimen/tw_notification_panel_header_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>
<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/tw_notification_panel_header_height" />
<LinearLayout android:orientation="vertical" android:id="@id/brightness_controller" android:background="#ff000000" android:layout_width="fill_parent" android:layout_height="56.0dip" android:layout_marginTop="@dimen/notification_panel_quicksettingbtn_height">
<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>[/COLOR][/B]
[B][COLOR="SeaGreen"]<ScrollView android:id="@id/scroll" android:fadingEdge="none" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginTop="@dimen/notification_panel_notification_top_margin" android:overScrollMode="ifContentScrolls">[/COLOR][/B]
<LinearLayout android:orientation="vertical" android:id="@id/scrollCart" android:layout_width="fill_parent" android:layout_height="wrap_content">
[B][COLOR="Red"]<HorizontalScrollView android:id="@id/quicksetting_scroller" 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>
<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>[/COLOR][/B]
<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: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" />
</RelativeLayout>
</com.android.systemui.statusbar.phone.CloseDragHandle>
</FrameLayout>
To make life easy, you can simply download the modified tw_status_bar_expanded.xml file and paste it over the original one.
3. Navigate to res\values\ folder and open ids.xml and add the following line at the end before </resources> line:
Code:
<item type="id" name="exp_power_stat">false</item>
Now you need to recompile SystemUI.apk in order to generate new ids in public.xml file for exp_power_stat. Then decompile the new SystemUI.apk (we are going to work on this one for now) and delete the old one to not cause confusion!!
Click to expand...
Click to collapse
4. Navigate to and open smali\com\android\systemui\statusbar\phone\PhoneStatusBar.smali file, now search for ".field mPostCollapseCleanup:Ljava/lang/Runnable;" and add this line bellow it (the blue one here):
Code:
.field mPostCollapseCleanup:Ljava/lang/Runnable;
[B][COLOR="Blue"].field mPowerWidget:Lcom/wanam/systemui/quickpanel/PowerWidget;[/COLOR][/B]
.field mQueueLock:Ljava/lang/Object;
5. Still in PhoneStatusBar.smali, search for ".method public addIcon" and add these lines (the blue ones) at the end of this method before the "return-void" line:
Code:
invoke-virtual {v1, v0, p3, v2}, Landroid/widget/LinearLayout;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V
.line 1170
[B][COLOR="Blue"]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][/B]
return-void
.end method
6. Still in PhoneStatusBar.smali, search for ".method protected makeStatusBarView", then search for "Landroid/widget/ScrollView;->setVerticalScrollBarEnabled(Z)V" and add these lines (the blue ones) bellow it:
Code:
invoke-virtual {v9, v10}, Landroid/widget/ScrollView;->setVerticalScrollBarEnabled(Z)V
[B][COLOR="Blue"]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="Purple"]0x7fxxxxxx[/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][/B]
.line 714
new-instance v9, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$MyTicker;
N.B: You should use the newly generated id in public.xml (in res\values folder) for "exp_power_stat" in place of 0x7fxxxxxx
Click to expand...
Click to collapse
7. Still in PhoneStatusBar.smali, search for "Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;" and add these lines bellow it (the blue ones):
Code:
invoke-virtual {v1, v9, v2}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
[B][COLOR="Blue"] 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][/B]
.line 875
sget-boolean v9, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->useTouchWizGUI:Z
Now save changes and close.
8. Now we need to edit the head of AndroidManifest.xml in SystemUI.apk and add system status to the main core (this is important step to make Torch and Reboot toggles work!!).
Before:
Code:
<?xml version="1.0" encoding="utf-8"?>
[B][COLOR="Red"]<manifest android:versionCode="16" android:versionName="4.1.2-N7000XXLSZ" package="com.android.systemui" coreApp="true"[/COLOR][/B]
xmlns:android="http://schemas.android.com/apk/res/android">
After:
Code:
<?xml version="1.0" encoding="utf-8"?>
[B][COLOR="Red"]<manifest android:versionCode="16" android:versionName="4.1.2-N7000XXLSZ" package="com.android.systemui" coreApp="true" [COLOR="Blue"]android:sharedUserId="android.uid.system" android:process="system"[/COLOR][/COLOR][/B]
xmlns:android="http://schemas.android.com/apk/res/android">
9. Download the following smalis and add them to smali folder in SystemUI.apk (there are 2 wanam folders, put the correct one inside its corresponding folder inside SystemUI.apk\smali folder).
10. Now we have finished from modifying SystemUI.apk, Recompile AND SIGN the finished project!!!.
11. Now since SystemUI.apk is signed, it will not work properly until we disable signature check on "services.jar". So backsmali services.jar file and navigate to classout\com\android\server\pm folder and open PackageManagerService.smali and search for ".method static compareSignatures" and change the entire method to:
Code:
.method static compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I
.registers 9
.parameter "s1"
.parameter "s2"
.prologue
const/4 v6, 0x0
const-string v3, "Wanam: PackageManager"
const-string v4, "Skip signature check."
invoke-static {v3, v4}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
return v6
.end method
Save changes and recompile (smali) services.jar file.
12. Download the following system app and resource (LidroidSettings.apk and lidroid-res.apk)
13. Push all files to your phone and... look to the results
N.B: For those who want to modify Lidroid-res.apk, you need to install the following dependancies, then decompile it and edit apktool.yml file. You will find this:
Code:
isFrameworkApk: true
usesFramework:
ids:
- 1
sdkInfo:
minSdkVersion: '16'
targetSdkVersion: '16'
Add the 3 frameworks (2,3 and 4):
Code:
isFrameworkApk: true
usesFramework:
ids:
- 1
[B][COLOR="Blue"] - 2
- 3
- 4[/COLOR][/B]
sdkInfo:
minSdkVersion: '16'
targetSdkVersion: '16'
Now you can make your changes and re-compile.
Click to expand...
Click to collapse
Notification panel lock screen and recent apps
Credits to kmokhtar79
Click to expand...
Click to collapse
1. Decompile SystemUI.apk by APK-Multi tool
2. Navigate to res\drawable-xhdpi folder and put these new resource images there.
3. Navigate to res\layout folder and open tw_status_bar_expanded_header.xml and add the following lines (the blue ones):
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:background="#ff000000" android:layout_width="fill_parent" android:layout_height="39.0dip" android:baselineAligned="false"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Clock" android:textColor="#ffffffff" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4.0dip" android:layout_marginTop="-3.0dip" android:singleLine="true" systemui:ampmSmall="true" />
<com.android.systemui.statusbar.policy.DateView android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Date" android:textColor="#ffffffff" android:ellipsize="none" android:id="@id/date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="8.0dip" android:layout_marginRight="4.0dip" android:maxLines="2" />
<com.android.systemui.statusbar.RotationToggle android:id="@id/rotation_lock_button" android:visibility="gone" android:clickable="true" android:layout_width="32.0dip" android:layout_height="32.0dip" android:layout_margin="8.0dip" android:button="@drawable/ic_notify_rotation" android:contentDescription="@string/accessibility_rotation_lock_off" />
<Space android:layout_width="0.0dip" android:layout_height="0.0dip" android:layout_weight="1.0" />
[B][COLOR="Blue"]<com.android.systemui.statusbar.policy.KeyButtonView android:id="@id/recent_apps" android:paddingLeft="2.0dip" android:paddingRight="1.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:src="@drawable/ic_sysbar_recent" android:layout_toLeftOf="@id/back" android:contentDescription="@string/accessibility_recent" systemui:keyCode="187" systemui:glowBackground="@drawable/ic_sysbar_highlight" />
<com.android.systemui.statusbar.policy.KeyButtonView android:id="@id/back" android:paddingLeft="2.0dip" android:paddingRight="3.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:src="@drawable/ic_sysbar_lock" android:layout_toLeftOf="@id/settings_button" android:contentDescription="@string/accessibility_back" systemui:keyCode="26" systemui:glowBackground="@drawable/ic_sysbar_highlight" />[/COLOR][/B]
<ImageView android:layout_width="1.0dip" android:layout_height="25.0dip" android:layout_marginTop="7.0dip" android:layout_marginBottom="7.0dip" android:src="@drawable/tw_quick_panel_plnm_setting_dv" />
<RelativeLayout android:id="@id/settings_button" android:background="@drawable/tw_quick_panel_setting_button_bg" android:focusable="true" android:visibility="visible" android:layout_width="@dimen/status_bar_expanded_setting_width" android:layout_height="39.0dip">
<ImageView android:id="@id/settings_button_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/tw_quickpanel_icon_settings" android:scaleType="center" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:contentDescription="@string/accessibility_settings_button" />
</RelativeLayout>
</LinearLayout>
First blue line is for recent apps icon and the second one is for lock screen icon
Click to expand...
Click to collapse
4. Save changes, recompile and push to your phone.
Results:
Continue moddings!!
Extended Power Menu Addons (ScreenShot, Recovery, Download & Safe modes)
In this tutorial, we will modify 2 files; the framework-res.apk file and android.policy.jar file...
Here for the sake of tutorial, I will refer to ScreenShot resources by blue color lines, Recovery resources by green lines, download resources by orange lines and safe resources by pink lines.. Please download these resources first.
Smali resources credits to Robbie Hood for Screen Capture, tdunham for Download and Recovery smalis, and of course me for Safe mode smali.
A) framework-res.apk
1. Decompile framework-res.apk by APK-Multi Tool
2. Add your desired resources image to res\drawable-xhdpi folder, here they are [tw_ic_lock_screenshot.png], [tw_ic_lock_recovery.png], [tw_ic_lock_download.png] and [tw_ic_lock_safemode.png].
3. Go to res\values folder and open strings.xml file and add the following lines at the end before </resources>:
Code:
[COLOR="Blue"] <string name="global_action_screenshot_txt">Take screenshot</string>[/COLOR]
[COLOR="Green"] <string name="global_action_recovery_txt">Recovery Mode</string>[/COLOR]
[COLOR="DarkOrange"] <string name="global_action_download_txt">Download mode</string>[/COLOR]
[COLOR="Magenta"]<string name="global_action_safemode_txt">Reboot to safe mode</string>[/COLOR]
4. Now recompile your framework-res.apk THEN decompile it again; so we can have new generated ids in public.xml file in res\values folder.
5. In your new decompiled framework-res.apk, go to res\values folder and open public.xml file and locate the following lines for the added new image resources:
Code:
[COLOR="Blue"]<public type="drawable" name="tw_ic_lock_screenshot" id="0x01080a98" />[/COLOR]
[COLOR="Green"]<public type="drawable" name="tw_ic_lock_recovery" id="0x01080a9a" />[/COLOR]
[COLOR="DarkOrange"]<public type="drawable" name="tw_ic_lock_download" id="0x01080a99" />[/COLOR]
[COLOR="Magenta"]<public type="drawable" name="tw_ic_lock_safemode" id="0x01080a98" />[/COLOR]
and the following lines for the added new strings resources:
Code:
[COLOR="Blue"]<public type="string" name="global_action_screenshot_txt" id="0x01040784" />[/COLOR]
[COLOR="Green"]<public type="string" name="global_action_recovery_txt" id="0x01040785" />[/COLOR]
[COLOR="DarkOrange"]<public type="string" name="global_action_download_txt" id="0x01040786" />[/COLOR]
[COLOR="Magenta"]<public type="string" name="global_action_safemode_txt" id="0x01040785" />[/COLOR]
N.B: You might have different id values, but don't worry it will be the same principle!!
Click to expand...
Click to collapse
6. Leave public.xml file opened and go to the next step..
B) android.policy.jar
1. Backsmali android.policy.jar
2. Navigate to classout\com\android\internal\policy\impl folder and open GlobalActions.smali.
3. In the [# instance fields] section, add these new lines:
Code:
[COLOR="Blue"].field private mScreenCapture:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
[/COLOR]
[COLOR="Green"].field private mRecovery:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;[/COLOR]
[COLOR="DarkOrange"].field private mDownload:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;[/COLOR]
[COLOR="Magenta"].field private mSafeMode:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;[/COLOR]
4. Search for "[Lcom/android/internal/policy/impl/GlobalActions$Action;" for power menu arrays and increase the number of arrays (the line above it) to accommodate the total number of new arrays..
Code:
.line 418
const/4 v1, 0x[B][COLOR="Purple"]5 <!--- You need to increase the arrays number here[/COLOR][/B]
new-array v1, v1, [Lcom/android/internal/policy/impl/GlobalActions$Action;
Keep in mind that the maximum arrays that are allowed in Power Menu are only 7 arrays (i.e, since it is 0x5 here, we could only increase it to 0x7 but for the sake of tutorial we will put it 0x9)
Click to expand...
Click to collapse
So the line will be:
Code:
.line 418
const/4 v1, 0x[B][COLOR="Purple"]9[/COLOR][/B]
new-array v1, v1, [Lcom/android/internal/policy/impl/GlobalActions$Action;
5. Now we will put listener actions for these added arrays.. so above the newly modified "const/4 v1, 0x9" add these action lines:
Code:
new-instance [COLOR="Red"]v1[/COLOR], Lcom/android/internal/policy/impl/GlobalActions$99;
const [COLOR="Red"]v2[/COLOR], 0x10808ad
const [COLOR="Red"]v3[/COLOR], 0x1040193
move-object/from16 [COLOR="Red"]v0, p0[/COLOR]
invoke-direct {[COLOR="Red"]v1, v0, v2, v3[/COLOR]}, Lcom/android/internal/policy/impl/GlobalActions$99;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
move-object/from16 [COLOR="Red"]v0, p0[/COLOR]
iput-object [COLOR="Red"]v1, v0[/COLOR], Lcom/android/internal/policy/impl/GlobalActions;->mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
.line 416
invoke-direct/range {p0 .. p0}, Lcom/android/internal/policy/impl/GlobalActions;->onAirplaneModeChanged()V
[COLOR="Blue"]new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$ScreenCap;
const v2, 0x1080a98
const v3, 0x1040784
move-object/from16 v0, p0
invoke-direct {v1, v0, v2, v3}, Lcom/android/internal/policy/impl/GlobalActions$ScreenCap;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
move-object/from16 v0, p0
iput-object v1, v0, Lcom/android/internal/policy/impl/GlobalActions;->mScreenCapture:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;[/COLOR]
[COLOR="Green"] new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$Recovery;
const v2, 0x1080a9a
const v3, 0x1040785
move-object/from16 v0, p0
invoke-direct {v1, v0, v2, v3}, Lcom/android/internal/policy/impl/GlobalActions$Recovery;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
move-object/from16 v0, p0
iput-object v1, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRecovery:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
[/COLOR]
[COLOR="DarkOrange"] new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$Download;
const v2, 0x1080a99
const v3, 0x1040786
move-object/from16 v0, p0
invoke-direct {v1, v0, v2, v3}, Lcom/android/internal/policy/impl/GlobalActions$Download;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
move-object/from16 v0, p0
iput-object v1, v0, Lcom/android/internal/policy/impl/GlobalActions;->mDownload:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;[/COLOR]
[COLOR="Magenta"]new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$SafeMode;
const v2, 0x1080a98
const v3, 0x1040785
move-object/from16 v0, p0
invoke-direct {v1, v0, v2, v3}, Lcom/android/internal/policy/impl/GlobalActions$SafeMode;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
move-object/from16 v0, p0
iput-object v1, v0, Lcom/android/internal/policy/impl/GlobalActions;->mSafeMode:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;[/COLOR]
.line 418
const/4 v1, 0x9
As you can see here, the ids for each action are obtained from public.xml file from framework-res.apk. The first id in each action will represent the image resource and the second id will represent the string resource... See public.xml lines above and you will figure it out ..
- Don't forget that, to link ids from framework-res.apk, you should omit the starting 0 value (example 0x01080a98 will be 0x1080a98)
- Also pay attention to variables and parameters registers, it should be matched (the red v and p)
Click to expand...
Click to collapse
6. Now we need to add new arrays to show in Power Menu.. So bellow modified "const/4 v1, 0x9" add new arrays to show after the last array:
Code:
.line 418
const/4 v1, 0x9
new-array v1, v1, [Lcom/android/internal/policy/impl/GlobalActions$Action;
const/4 v2, 0x0
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mAccessiblityShortcut:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v3, v1, v2
...
...
...
const/4 [COLOR="Red"]v2[/COLOR], 0x4
move-object/from16 [COLOR="Red"]v0, p0[/COLOR]
iget-object [COLOR="Red"]v3, v0[/COLOR], Lcom/android/internal/policy/impl/GlobalActions;->mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object [COLOR="Red"]v3, v1, v2[/COLOR]
[COLOR="Blue"] const/4 v2, 0x5
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mScreenCapture:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v3, v1, v2[/COLOR]
[COLOR="Green"] const/4 v2, 0x6
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRecovery:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v3, v1, v2[/COLOR]
[COLOR="DarkOrange"] const/4 v2, 0x7
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mDownload:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v3, v1, v2[/COLOR]
[COLOR="Magenta"]const/4 v2, 0x8
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mSafeMode:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v3, v1, v2[/COLOR]
- Again, don't forget that the maximum allowed arrays to show are only 7 arrays starting from 0x0 to 0x6; but we put here to 0x8 for the sake of tutorial.
- Also pay attention to variables and parameters registers, it should be matched (the red v and p)
Click to expand...
Click to collapse
7. Now save changes and exit.
8. Copy smali resources for ScreenShot, Recovery, Download and Safe modes into classout\com\android\internal\policy\impl folder
You need to open GlobalActions$ScreenCap$1.smali, GlobalActions$Download.smali, GlobalActions$Recovery.smali and GlobalActions$SafeMode.smali and look for this line:
Code:
invoke-static {v2}, Lcom/android/internal/policy/impl/GlobalActions;->access$[B][COLOR="Red"]200[/COLOR][/B](Lcom/android/internal/policy/impl/GlobalActions;)Landroid/content/Context;
Here access$200 might differ according to ROM, you need to open GlobalActions.smali and search for "(Lcom/android/internal/policy/impl/GlobalActions;)Landroid/content/Context;" to locate the exact access$xxx
Example in my GlobalActions.smali, the access$xxx is:
Code:
.method static synthetic access$[B][COLOR="Red"]200[/COLOR][/B](Lcom/android/internal/policy/impl/GlobalActions;)Landroid/content/Context;
.locals 1
.parameter "x0"
.prologue
.line 111
iget-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mContext:Landroid/content/Context;
return-object v0
.end method
Click to expand...
Click to collapse
9. Smali (recompile) the finished android.policy.jar
Now push the modified framework-res.apk and android.policy.jar to your phone.. This will be enough for new Power Menu recovery, download and safe modes addons but not for ScreenShot!! You need to push extra file to bin folder in your phone which is screenshot and fix permissions to rwsr-xr-x that is 04755 in updater-script language.
Results example:
Extra Step: Adding Setting Toggle For Power Menu Addons >>>
I will assume you already add Safe Mode and Screenshot extra power menu addons..
1) android.policy.jar:
- Baksmali android.policy.jar
- Go to classout\com\android\internal\policy\impl folder
- Open GlobalActions$SafeMode.smali and change the method ".method public showConditional()Z" to:
Code:
.method public showConditional()Z
.registers 5
const/4 v0, 0x1
const/4 v1, 0x0
iget-object v2, p0, Lcom/android/internal/policy/impl/[B][COLOR="Blue"]GlobalActions$SafeMode[/COLOR][/B];->this$0:Lcom/android/internal/policy/impl/GlobalActions;
# getter for: Lcom/android/internal/policy/impl/GlobalActions;->mContext:Landroid/content/Context;
invoke-static {v2}, Lcom/android/internal/policy/impl/GlobalActions;->access$200(Lcom/android/internal/policy/impl/GlobalActions;)Landroid/content/Context;
move-result-object v2
invoke-virtual {v2}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v2
const-string v3, [B][COLOR="Blue"]"pm_safe_mode"[/COLOR][/B]
invoke-static {v2, v3, v1}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v2
if-ne v2, v0, :cond_15
:goto_14
return v0
:cond_15
move v0, v1
goto :goto_14
.end method
.method public showDuringKeyguard()Z
.registers 2
.prologue
.line 389
const/4 v0, 0x1
return v0
.end method
- Also, open GlobalActions$ScreenCap.smali and change the method ".method public showConditional()Z" to:
Code:
.method public showConditional()Z
.registers 5
const/4 v0, 0x1
const/4 v1, 0x0
iget-object v2, p0, Lcom/android/internal/policy/impl/[B][COLOR="Blue"]GlobalActions$ScreenCap[/COLOR][/B];->this$0:Lcom/android/internal/policy/impl/GlobalActions;
# getter for: Lcom/android/internal/policy/impl/GlobalActions;->mContext:Landroid/content/Context;
invoke-static {v2}, Lcom/android/internal/policy/impl/GlobalActions;->access$200(Lcom/android/internal/policy/impl/GlobalActions;)Landroid/content/Context;
move-result-object v2
invoke-virtual {v2}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v2
const-string v3, [B][COLOR="Blue"]"pm_screenshot"[/COLOR][/B]
invoke-static {v2, v3, v1}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v2
if-ne v2, v0, :cond_15
:goto_14
return v0
:cond_15
move v0, v1
goto :goto_14
.end method
- Save changes .. and that's for android.policy.jar
2) SecSettings.apk:
- Decompile SecSettings.apk
- Go to res\values folder and open strings.xml file and add these new resources at the end before </resources>:
Code:
<string name="PM_Glory_addons">GloryROM Power Menu Addons</string>
<string name="pm_safe_mode_title">Safe Mode Reboot</string>
<string name="pm_screenshot_title">Take Screenshot</string>
<string name="pm_on">Toggle is Enabled</string>
<string name="pm_off">Toggle is Disabled</string>
- Go to res\xml and open display_settings.xml and add these lines on the place you your addon to appear later on on the device:
Code:
<PreferenceCategory android:title="@string/PM_Glory_addons" android:key="PM_Glory_settings" />
<CheckBoxPreference android:title="@string/pm_safe_mode_title" android:key="pm_safe_mode" android:defaultValue="true" android:summaryOn="@string/pm_on" android:summaryOff="@string/pm_off" />
<CheckBoxPreference android:title="@string/pm_screenshot_title" android:key="pm_screenshot" android:defaultValue="true" android:summaryOn="@string/pm_on" android:summaryOff="@string/pm_off" />
- Now for the smali source, go to classout\com\android\settings folder and open DisplaySettings.smali.. Also here, I didn't invent new codes, I used mult-windows toggle codes as reference..!! I will use Blue color for Safe Mode toggle codes and Green color for Screenshot toggle codes. Add these lines to [# instance fields] section:
Code:
[B][COLOR="Blue"].field private mSafeModePref:Landroid/preference/CheckBoxPreference;[/COLOR]
[COLOR="Green"].field private mScreenShotPref:Landroid/preference/CheckBoxPreference;[/COLOR][/B]
- In the method ".method public onCreate(Landroid/os/Bundle;)V", search for ""key_multi_window"" and add these lines:
Code:
.line 570
const-string v11, "key_multi_window"
invoke-virtual {p0, v11}, Lcom/android/settings/DisplaySettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
move-result-object v11
check-cast v11, Landroid/preference/CheckBoxPreference;
iput-object v11, p0, Lcom/android/settings/DisplaySettings;->mMultiWindowPref:Landroid/preference/CheckBoxPreference;
[B][COLOR="Blue"]const-string v11, "pm_safe_mode"
invoke-virtual {p0, v11}, Lcom/android/settings/DisplaySettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
move-result-object v11
check-cast v11, Landroid/preference/CheckBoxPreference;
iput-object v11, p0, Lcom/android/settings/DisplaySettings;->mSafeModePref:Landroid/preference/CheckBoxPreference;[/COLOR]
[COLOR="Green"]const-string v11, "pm_screenshot"
invoke-virtual {p0, v11}, Lcom/android/settings/DisplaySettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
move-result-object v11
check-cast v11, Landroid/preference/CheckBoxPreference;
iput-object v11, p0, Lcom/android/settings/DisplaySettings;->mScreenShotPref:Landroid/preference/CheckBoxPreference;[/COLOR][/B]
- Now search for the method ".method public onPreferenceTreeClick(Landroid/preference/PreferenceScreen;Landroid/preference/Preference;)Z" and search for ""multi_window_enabled"" to locate this part at the end:
Code:
.line 1021
:cond_15c
iget-object v0, p0, Lcom/android/settings/DisplaySettings;->mMultiWindowPref:Landroid/preference/CheckBoxPreference;
invoke-virtual {p2, v0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, [B][COLOR="Red"]:cond_1c[/COLOR][/B]
.line 1022
iget-object v0, p0, Lcom/android/settings/DisplaySettings;->mMultiWindowPref:Landroid/preference/CheckBoxPreference;
invoke-virtual {v0}, Landroid/preference/CheckBoxPreference;->isChecked()Z
move-result v0
.line 1023
invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v3
const-string v4, "multi_window_enabled"
if-eqz v0, :cond_177
:goto_172
invoke-static {v3, v4, v1}, Landroid/provider/Settings$System;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z
goto/16 :goto_1c
:cond_177
move v1, v2
goto :goto_172
.end method
Add new codes before [.end method] in the previous section, so that section will be like this:
Code:
.line 1021
:cond_15c
iget-object v0, p0, Lcom/android/settings/DisplaySettings;->mMultiWindowPref:Landroid/preference/CheckBoxPreference;
invoke-virtual {p2, v0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, [B][COLOR="Blue"]:cond_SafeM[/COLOR][/B]
.line 1022
iget-object v0, p0, Lcom/android/settings/DisplaySettings;->mMultiWindowPref:Landroid/preference/CheckBoxPreference;
invoke-virtual {v0}, Landroid/preference/CheckBoxPreference;->isChecked()Z
move-result v0
.line 1023
invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v3
const-string v4, "multi_window_enabled"
if-eqz v0, :cond_177
:goto_172
invoke-static {v3, v4, v1}, Landroid/provider/Settings$System;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z
goto/16 :goto_1c
:cond_177
move v1, v2
goto :goto_172
[B][COLOR="Blue"]:cond_SafeM
iget-object v0, p0, Lcom/android/settings/DisplaySettings;->mSafeModePref:Landroid/preference/CheckBoxPreference;
invoke-virtual {p2, v0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_ScSh
.line 1022
iget-object v0, p0, Lcom/android/settings/DisplaySettings;->mSafeModePref:Landroid/preference/CheckBoxPreference;
invoke-virtual {v0}, Landroid/preference/CheckBoxPreference;->isChecked()Z
move-result v0
.line 1023
invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v3
const-string v4, "pm_safe_mode"
if-eqz v0, :cond_majdiSafe
:goto_njsafe
invoke-static {v3, v4, v1}, Landroid/provider/Settings$System;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z
goto/16 :goto_1c
:cond_majdiSafe
move v1, v2
goto :goto_njsafe[/COLOR]
[B][COLOR="Green"]:cond_ScSh
iget-object v0, p0, Lcom/android/settings/DisplaySettings;->mScreenShotPref:Landroid/preference/CheckBoxPreference;
invoke-virtual {p2, v0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, [COLOR="Red"]:cond_1c[/COLOR]
.line 1022
iget-object v0, p0, Lcom/android/settings/DisplaySettings;->mScreenShotPref:Landroid/preference/CheckBoxPreference;
invoke-virtual {v0}, Landroid/preference/CheckBoxPreference;->isChecked()Z
move-result v0
.line 1023
invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v3
const-string v4, "pm_screenshot"
if-eqz v0, :cond_majdiSS
:goto_njSS
invoke-static {v3, v4, v1}, Landroid/provider/Settings$System;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z
goto/16 :goto_1c
:cond_majdiSS
move v1, v2
goto :goto_njSS[/COLOR][/B][/B]
.end method
- Pay attention to the red color condition..!!!
- Now go to the next method ".method public onResume()V" and search for ""multi_window_enabled"" and locate this part:
Code:
:cond_9d
sget-boolean v0, Lcom/android/settings/DisplaySettings;->UseMultiWindow:Z
if-eqz v0, [B][COLOR="Red"]:cond_c1[/COLOR][/B]
.line 847
iget-object v0, p0, Lcom/android/settings/DisplaySettings;->mMultiWindowPref:Landroid/preference/CheckBoxPreference;
invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v3
const-string v4, "multi_window_enabled"
invoke-static {v3, v4, v1}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v3
if-ne v3, v1, :cond_de
:goto_af
invoke-virtual {v0, v1}, Landroid/preference/CheckBoxPreference;->setChecked(Z)V
.line 848
invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v0
const-string v1, "multi_window_enabled"
invoke-static {v1}, Landroid/provider/Settings$System;->getUriFor(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v1
iget-object v3, p0, Lcom/android/settings/DisplaySettings;->mMultiWindowModeObserver:Landroid/database/ContentObserver;
invoke-virtual {v0, v1, v2, v3}, Landroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;)V
line 850
:cond_c1
return-void
:cond_c2
move v0, v2
And do this modification:
Code:
:cond_9d
sget-boolean v0, Lcom/android/settings/DisplaySettings;->UseMultiWindow:Z
if-eqz v0, [B][COLOR="Blue"]:cond_Safemajdi[/COLOR][/B]
.line 847
iget-object v0, p0, Lcom/android/settings/DisplaySettings;->mMultiWindowPref:Landroid/preference/CheckBoxPreference;
invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v3
const-string v4, "multi_window_enabled"
invoke-static {v3, v4, v1}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v3
if-ne v3, v1, :cond_de
:goto_af
invoke-virtual {v0, v1}, Landroid/preference/CheckBoxPreference;->setChecked(Z)V
.line 848
invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v0
const-string v1, "multi_window_enabled"
invoke-static {v1}, Landroid/provider/Settings$System;->getUriFor(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v1
iget-object v3, p0, Lcom/android/settings/DisplaySettings;->mMultiWindowModeObserver:Landroid/database/ContentObserver;
invoke-virtual {v0, v1, v2, v3}, Landroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;)V
[B][COLOR="Blue"].line 1000
:cond_Safemajdi
iget-object v0, p0, Lcom/android/settings/DisplaySettings;->mSafeModePref:Landroid/preference/CheckBoxPreference;
if-eqz v0, :cond_NewScSh
.line 1001
iget-object v0, p0, Lcom/android/settings/DisplaySettings;->mSafeModePref:Landroid/preference/CheckBoxPreference;
invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v3
const-string v4, "pm_safe_mode"
const/4 v1, 0x0
invoke-static {v3, v4, v1}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v3
if-eqz v3, :cond_noSafe
const/4 v1, 0x1
goto :goto_yesSafe
:cond_noSafe
const/4 v1, 0x0
:goto_yesSafe
invoke-virtual {v0, v1}, Landroid/preference/CheckBoxPreference;->setChecked(Z)V[/COLOR]
[COLOR="Green"].line 2000
:cond_NewScSh
iget-object v0, p0, Lcom/android/settings/DisplaySettings;->mScreenShotPref:Landroid/preference/CheckBoxPreference;
if-eqz v0, [COLOR="Red"]:cond_c1[/COLOR]
.line 2001
iget-object v0, p0, Lcom/android/settings/DisplaySettings;->mScreenShotPref:Landroid/preference/CheckBoxPreference;
invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v3
const-string v4, "pm_screenshot"
const/4 v1, 0x0
invoke-static {v3, v4, v1}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v3
if-eqz v3, :cond_noShot
const/4 v1, 0x1
goto :goto_yesShot
:cond_noShot
const/4 v1, 0x0
:goto_yesShot
invoke-virtual {v0, v1}, Landroid/preference/CheckBoxPreference;->setChecked(Z)V[/COLOR][/B]
.line 850
:cond_c1
return-void
:cond_c2
move v0, v2
- Also pay attention to the red color condition..!!!
- Save changes.. and that's all
Result example:
Continue moddings!!
LockScreen Torch
This mod will make you able to have torch flash light while you are on LockScreen by long pressing on the home button...!!!​
Credits to:
@ Robbie Hood for the actual mod codes
- Backsmali android.policy.jar
- Navigate to classout/com/android/internal/policy/impl/ folder
- We will be working on 3 smali files:
KeyguardViewMediator$4.smali
- Search for "packed-switch" and add the blue line just above "return-void":
Code:
.line 1255
iget v2, p1, Landroid/os/Message;->what:I
packed-switch v2, :pswitch_data_72
.line 1298
:goto_7
[B][COLOR="Blue"]:pswitch_7[/COLOR][/B]
return-void
.line 1257
- Search for ":catchall" and add these lines above it:
Code:
.line 1295
monitor-exit v1
goto :goto_[B][COLOR="Red"]7[/COLOR][/B]
[B][COLOR="Blue"] :pswitch_6e
iget-object v2, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator$4;->this$0:Lcom/android/internal/policy/impl/KeyguardViewMediator;
iget v3, p1, Landroid/os/Message;->arg1:I
if-eqz v3, :cond_majdi
move v3, v0
:goto_nj
#calls: Lcom/android/internal/policy/impl/KeyguardViewMediator;->handleSetTorch(Z)V
invoke-static {v2, v3}, Lcom/android/internal/policy/impl/KeyguardViewMediator;->access$2400(Lcom/android/internal/policy/impl/KeyguardViewMediator;Z)V
goto :goto_[COLOR="Red"]7[/COLOR]
:cond_majdi
move v3, v1
goto :goto_nj[/COLOR][/B]
:catchall_7b
move-exception v0
monitor-exit v1
N.B: pay attention to number 7 in goto :goto_7 that could be different in your smali according to your ROM, make sure it is the same as the first one which is just above the new line ":pswitch_6e"
Click to expand...
Click to collapse
- Search for "nop" and another "nop" line bellow it (don't forget to leave empty line in between):
Code:
.line 1255
nop
[B][COLOR="Blue"]nop[/COLOR][/B]
- Now go to the end of smali and add these switches above ".end packed-switch" line:
Code:
:pswitch_data_72
.packed-switch 0x1
:pswitch_8
:pswitch_10
:pswitch_16
:pswitch_1c
:pswitch_22
:pswitch_28
:pswitch_2e
:pswitch_38
:pswitch_40
:pswitch_4c
:pswitch_52
:pswitch_58
:pswitch_64
[B][COLOR="Blue"]:pswitch_7
:pswitch_7
:pswitch_7
:pswitch_7
:pswitch_7
:pswitch_7
:pswitch_6e[/COLOR][/B]
.end packed-switch
.end method
N.B: if your smali has :pswitch_7 and :pswitch_6e by default, then use another :pswitch_value for :pswitch_7 and :pswitch_6e. If you do so, then don't forget to change :pswitch_7 and :pswitch_6e value in added codes from the beginning above as well
Click to expand...
Click to collapse
Save changes...
KeyguardViewMediator.smali
- Search for ".field private static final SET_HIDDEN:I = 0xc" and add this line bellow it (the blue one):
Code:
.field private static final SET_HIDDEN:I = 0xc
[B][COLOR="Blue"].field private static final SET_TORCH:I = 0x14[/COLOR][/B]
.field private static final SHOW:I = 0x2
- Search for ".field private mTelephonyManager:Landroid/telephony/TelephonyManager;" and add thses lines bellow it (the blue ones):
Code:
.field private mTelephonyManager:Landroid/telephony/TelephonyManager;
[B][COLOR="Blue"].field private mTorchEnabled:Z
.field private mTorchStateChanged:Z[/COLOR][/B]
.field private mUnlockSoundId:I
- Search for this method ".method public constructor <init>(Landroid/content/Context;Lcom/android/internal/policy/impl/PhoneWindowManager;Landroid/os/LocalPowerManager;)V" and add these lines (the blue ones):
Code:
.method public constructor <init>(Landroid/content/Context;Lcom/android/internal/policy/impl/PhoneWindowManager;Landroid/os/LocalPowerManager;)V
.registers 15
.parameter "context"
.parameter "callback"
.parameter "powerManager"
.prologue
.line 308
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 188
[B][COLOR="Blue"]const/4 v0, 0x1
iput-boolean v0, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mTorchEnabled:Z[/COLOR][/B]
const/4 v0, 0x1
- Search for "const-string v0, "power"" and add these lines above it (the blue lines):
Code:
.line 311
iput-object p3, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mRealPowerManager:Landroid/os/LocalPowerManager;
.line 312
[B][COLOR="Blue"]const/4 v0, 0x0
iput-boolean v0, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mTorchEnabled:Z
const/4 v0, 0x0
iput-boolean v0, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mTorchStateChanged:Z[/COLOR][/B]
const-string v0, "power"
- Search for this method ".method static synthetic access$300(Lcom/android/internal/policy/impl/KeyguardViewMediator;I)V" and add this new method above it:
Code:
.method static synthetic access$2300(Lcom/android/internal/policy/impl/KeyguardViewMediator;Z)V
.registers 2
.parameter "x0"
.parameter "x1"
.prologue
.line 110
invoke-direct {p0, p1}, Lcom/android/internal/policy/impl/KeyguardViewMediator;->handleSetHidden(Z)V
return-void
.end method
[B][COLOR="Blue"].method static synthetic access$[COLOR="Red"]2400[/COLOR](Lcom/android/internal/policy/impl/KeyguardViewMediator;Z)V
.registers 2
invoke-direct {p0, p1}, Lcom/android/internal/policy/impl/KeyguardViewMediator;->handleSetTorch(Z)V
return-void
.end method[/COLOR][/B]
.method static synthetic access$300(Lcom/android/internal/policy/impl/KeyguardViewMediator;I)V
N.B: pay attention to $2400, that is increment to the method above it
Click to expand...
Click to collapse
- Search for the method ".method private handleHide()V" and add this line at end of this method (the blue one) just after "monitor-exit p0":
Code:
.method private handleHide()V
..
..
..
.line 1449
monitor-exit p0
[B][COLOR="Blue"]invoke-direct {p0}, Lcom/android/internal/policy/impl/KeyguardViewMediator;->resetTorchState()V[/COLOR][/B]
goto :goto_18
:catchall_45
move-exception v0
monitor-exit p0
:try_end_47
.catchall {:try_start_1 .. :try_end_47} :catchall_45
throw v0
.end method
.method private handleKeyguardDone(Z)V
- Search for the method ".method private handleNotifyScreenOff()V" and add this line (the blue one) just above "return-void":
Code:
.method private handleNotifyScreenOff()V
.registers 3
.prologue
.line 1597
monitor-enter p0
.line 1598
:try_start_1
const-string v0, "KeyguardViewMediator"
const-string v1, "handleNotifyScreenOff"
invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 1599
iget-object v0, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mKeyguardViewManager:Lcom/android/internal/policy/impl/KeyguardViewManager;
invoke-virtual {v0}, Lcom/android/internal/policy/impl/KeyguardViewManager;->onScreenTurnedOff()V
.line 1600
monitor-exit p0
.line 1601
[B][COLOR="Blue"]invoke-direct {p0}, Lcom/android/internal/policy/impl/KeyguardViewMediator;->resetTorchState()V[/COLOR][/B]
return-void
- Search for the method ".method private handleSetHidden(Z)V" and add this line (the blue one) above the defined condition in the method:
Code:
.method private handleSetHidden(Z)V
.registers 3
.parameter "isHidden"
.prologue
.line 688
monitor-enter p0
.line 689
:try_start_1
iget-boolean v0, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mHidden:Z
if-eq v0, p1, :cond_10
.line 690
iput-boolean p1, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mHidden:Z
.line 691
invoke-direct {p0}, Lcom/android/internal/policy/impl/KeyguardViewMediator;->updateActivityLockScreenState()V
.line 692
invoke-direct {p0}, Lcom/android/internal/policy/impl/KeyguardViewMediator;->adjustUserActivityLocked()V
.line 693
invoke-direct {p0}, Lcom/android/internal/policy/impl/KeyguardViewMediator;->adjustStatusBarLocked()V
.line 695
[B][COLOR="Blue"]invoke-direct {p0}, Lcom/android/internal/policy/impl/KeyguardViewMediator;->resetTorchState()V[/COLOR][/B]
:cond_10
monitor-exit p0
- Search for the method ".method private handleShow()V" and add the following new method above it:
Code:
[B][COLOR="Blue"].method private handleSetTorch(Z)V
.registers 8
const/4 v5, 0x0
const/4 v4, 0x1
:try_start_2
iget-boolean v1, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mTorchStateChanged:Z
if-nez v1, :cond_majdi
iput-boolean v1, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mTorchEnabled:Z
const/4 v1, 0x1
iput-boolean v1, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mTorchStateChanged:Z
:cond_[COLOR="Red"]b[/COLOR]
:goto_[COLOR="Red"]b[/COLOR]
return-void
:cond_majdi
iget-boolean v1, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mTorchEnabled:Z
if-eq v1, p1, :cond_[COLOR="Red"]b[/COLOR]
iput-boolean p1, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mTorchEnabled:Z
new-instance v0, Landroid/content/Intent;
const-string v1, "net.cactii.flash2.TOGGLE_FLASHLIGHT"
invoke-direct {v0, v1}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
const-string v1, "net.cactii.flash2.EXTRA_DISABLE_NOTIFICATION"
const/4 v2, 0x1
invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Z)Landroid/content/Intent;
iget-object v1, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mContext:Landroid/content/Context;
invoke-virtual {v1, v0}, Landroid/content/Context;->sendBroadcast(Landroid/content/Intent;)V
:try_end_maj
.catch Ljava/lang/Exception; {:try_start_2 .. :try_end_maj} :catch_jdi
goto :goto_[COLOR="Red"]b[/COLOR]
:catch_jdi
move-exception v1
goto :goto_[COLOR="Red"]b[/COLOR]
.end method[/COLOR][/B]
.method private handleShow()V
N.B: pay attention to :cond_b and :goto_b that could be differ according to your ROM where b should be the exact the same first condition in this method ".method public isGlanceViewVisible()Z"
Code:
.method public isGlanceViewVisible()Z
.registers 2
.prologue
.line 666
iget-object v0, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mKeyguardViewManager:Lcom/android/internal/policy/impl/KeyguardViewManager;
if-eqz v0, [B][COLOR="Red"]:cond_b[/COLOR][/B]
.line 667
Click to expand...
Click to collapse
- Search for method ".method private handleShow()V", then search bellow for "Landroid/os/PowerManager$WakeLock;->release()V" and add these lines bellow it (the blue ones):
Code:
.method private handleShow()V
.registers 3
.prologue
.line 1400
monitor-enter p0
.line 1401
:try_start_1
const-string v0, "KeyguardViewMediator"
...
...
...
invoke-virtual {v0}, Landroid/os/PowerManager$WakeLock;->release()V
.line 1419
[B][COLOR="Blue"]const/4 v0, 0x1
iput-boolean v0, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mTorchStateChanged:Z[/COLOR][/B]
monitor-exit p0
- Search for the method ".method private resetStateLocked()V" and add these lines (the blue ones) at the end before "return-void" line:
Code:
.method private resetStateLocked()V
.registers 4
...
...
invoke-virtual {v1, v0}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
.line 809
[B][COLOR="Blue"]return-void
.end method
.method private resetTorchState()V
.registers 2
iget-boolean v0, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mTorchStateChanged:Z
if-eqz v0, :cond_[COLOR="Red"]8[/COLOR]
const/4 v0, 0x0
invoke-direct {p0, v0}, Lcom/android/internal/policy/impl/KeyguardViewMediator;->handleSetTorch(Z)V
:cond_[COLOR="Red"]8[/COLOR][/COLOR][/B]
return-void
.end method
N.B: pay attention to :cond_8 that could be differ according to your ROM where 8 should be the exact the same first DEFINED condition in this method ".method private playSounds(Z)V"
Code:
.method private playSounds(Z)V
.registers 10
.parameter "locked"
.prologue
const/4 v5, 0x0
const/4 v4, 0x1
.line 1362
iget-boolean v0, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mSuppressNextLockSound:Z
if-eqz v0, :cond_9
.line 1363
iput-boolean v5, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mSuppressNextLockSound:Z
.line 1385
[B][COLOR="Red"]:cond_8[/COLOR][/B]
:goto_8
return-void
Click to expand...
Click to collapse
- Search for the method ".method public verifyUnlock(Landroid/view/WindowManagerPolicy$OnKeyguardExitResult;)V" and add this new method above it (the blue lines):
Code:
[B][COLOR="Blue"].method public setTorch(Z)V
.registers 7
const/16 v4, 0x14
const/4 v3, 0x0
iget-boolean v1, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mScreenOn:Z
if-eqz v1, :cond_newa
iget-object v1, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mHandler:Landroid/os/Handler;
invoke-virtual {v1, v4}, Landroid/os/Handler;->removeMessages(I)V
iget-object v1, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mHandler:Landroid/os/Handler;
if-eqz p1, :cond_newb
const/4 v2, 0x1
:goto_[COLOR="Red"]11[/COLOR]
invoke-virtual {v1, v4, v2, v3}, Landroid/os/Handler;->obtainMessage(III)Landroid/os/Message;
move-result-object v0
iget-object v1, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mHandler:Landroid/os/Handler;
invoke-virtual {v1, v0}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
:cond_newa
return-void
:cond_newb
move v2, v3
goto :goto_[COLOR="Red"]11[/COLOR]
.end method[/COLOR][/B]
.method public verifyUnlock(Landroid/view/WindowManagerPolicy$OnKeyguardExitResult;)V
N.B: pay attention to :goto_11 that could be differ according to your ROM where 11 should be the exact the same goto action in this method ".method public isInputRestricted()Z"
Code:
.method public isInputRestricted()Z
.registers 2
..
..
[B][COLOR="Red"]:goto_11[/COLOR][/B]
return v0
:cond_12
const/4 v0, 0x0
goto :goto_11
.end method
Click to expand...
Click to collapse
Save changes..
PhoneWindowManager.smali
All changes here, will be in this method ".method public interceptKeyBeforeDispatching(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/KeyEvent;I)J"; so it is better to know from which part of smali this method starts and ends in order to not touch other methods!!
- First search for the method ".method public interceptKeyBeforeDispatching(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/KeyEvent;I)J",
- Search for "Lcom/android/internal/policy/impl/PhoneWindowManager;->mHomePressed:Z" and add these lines bellow it (the blue ones):
Code:
.method public interceptKeyBeforeDispatching(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/KeyEvent;I)J
.registers 56
...
...
...
...
.line 3364
:cond_2ba
if-nez v15, :cond_[B][COLOR="Red"]38c[/COLOR][/B]
.line 3365
move-object/from16 v0, p0
iget-boolean v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHomePressed:Z
[B][COLOR="Blue"]if-eqz v0, :cond_[COLOR="Red"]38c[/COLOR]
const/16 v3, 0x0[/COLOR][/B]
move/from16 v20, v0
N.B: pay attention to if-eqz v0, :cond_38c where the condition number 38c is the same as IF condition above it
Click to expand...
Click to collapse
- Search for this portion (you can search down for ".catch Landroid/os/RemoteException" to locate this portion) and add this line (the blue one):
Code:
.line 3373
invoke-interface/range {v44 .. v44}, Lcom/android/internal/statusbar/IStatusBarService;->cancelPreloadRecentApps()V
:try_end_2dd
.catch Landroid/os/RemoteException; {:try_start_2d4 .. :try_end_2dd} :catch_329
.line 3381
.end local v44 #statusbar:Lcom/android/internal/statusbar/IStatusBarService;
:cond_2dd
:goto_2dd
const/4 v3, 0x0
move-object/from16 v0, p0
iput-boolean v3, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHomePressed:Z
[B][COLOR="Blue"]invoke-virtual/range {p0 .. p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->launchHomeFromHotKey()V[/COLOR][/B]
.line 3382
if-nez v36, :cond_32c
- Search down for "Lcom/android/internal/policy/impl/PhoneWindowManager$HomeKeyDoubleClickConcept;->setHomeDownEventSent()V" and add this new code after defined condition:
Code:
.line 3470
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHomeKeyDoubleClickConcept:Lcom/android/internal/policy/impl/PhoneWindowManager$HomeKeyDoubleClickConcept;
invoke-virtual {v3}, Lcom/android/internal/policy/impl/PhoneWindowManager$HomeKeyDoubleClickConcept;->setHomeDownEventSent()V
.line 3473
:cond_3a6
[B][COLOR="Blue"]new-instance v0, Ljava/io/File;
const-string v1, "/sdcard/Android"
invoke-direct {v0, v1}, Ljava/io/File;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Ljava/io/File;->exists()Z
move-result v0
if-eqz v0, :cond_majdi
move-object/from16 v0, p0
iget-object v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mKeyguardMediator:Lcom/android/internal/policy/impl/KeyguardViewMediator;
move-object/from16 v3, v0
invoke-virtual/range {v3 .. v3}, Lcom/android/internal/policy/impl/KeyguardViewMediator;->isShowingAndNotHidden()Z
move-result v3
if-eqz v3, :cond_majdi
move-object/from16 v0, p0
iget-object v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mKeyguardMediator:Lcom/android/internal/policy/impl/KeyguardViewMediator;
move-object/from16 v3, v0
move-object/from16 v0, v3
move v1, v15
invoke-virtual {v0, v1}, Lcom/android/internal/policy/impl/KeyguardViewMediator;->setTorch(Z)V
rem-int/lit8 v3, v41, 0xf
if-nez v3, :cond_majdi
move-object/from16 v0, p0
iget-object v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mKeyguardMediator:Lcom/android/internal/policy/impl/KeyguardViewMediator;
move-object/from16 v3, v0
invoke-virtual/range {v3 .. v3}, Lcom/android/internal/policy/impl/KeyguardViewMediator;->pokeWakelock()V
:cond_majdi[/COLOR][/B]
const-wide/16 v3, 0x0
goto/16 :goto_8f
- Search down for "const/16 v3, 0xbb" (v3 may differ according to ROM) and do the following editing:
before:
Code:
.line 3635
:cond_[B][COLOR="Red"]536[/COLOR][/B] [B][COLOR="Green"]<-- we need to copy bellow condition over it[/COLOR][/B]
const/16 v3, 0xbb
move/from16 v0, v32
if-ne v0, v3, :cond_[B][COLOR="Red"]56f[/COLOR][/B] [B][COLOR="Green"]<-- we need to define new condition[/COLOR][/B]
.line 3637
move-object/from16 v0, p0
after:
Code:
.line 3635
:cond_[B][COLOR="Blue"]56f[/COLOR][/B]
const/16 v3, 0xbb
move/from16 v0, v32
if-ne v0, v3, :cond_[B][COLOR="Blue"]nj[/COLOR][/B]
.line 3637
move-object/from16 v0, p0
- Now we need to redefine mentioned cond_56f (it could be differ according to ROM), search UP for ".catch Landroid/content/ActivityNotFoundException;" and modify the IF-NE condition bellow it:
before:
Code:
.catch Landroid/content/ActivityNotFoundException; {:try_start_4fd .. :try_end_506} :catch_705
.line 3839
.end local v43 #shortcutIntent:Landroid/content/Intent;
:cond_506
:goto_506
const-wide/16 v3, -0x1
goto/16 :goto_8f
.line 3621
.end local v31 #kcm:Landroid/view/KeyCharacterMap;
:cond_50a
const/16 v3, 0x54
move/from16 v0, v32
if-ne v0, v3, [B][COLOR="Red"]:cond_536[/COLOR] [COLOR="Green"]<-- redefine this condition[/COLOR][/B]
.line 3622
if-eqz v15, :cond_522
after:
Code:
.catch Landroid/content/ActivityNotFoundException; {:try_start_4fd .. :try_end_506} :catch_705
.line 3839
.end local v43 #shortcutIntent:Landroid/content/Intent;
:cond_506
:goto_506
const-wide/16 v3, -0x1
goto/16 :goto_8f
.line 3621
.end local v31 #kcm:Landroid/view/KeyCharacterMap;
:cond_50a
const/16 v3, 0x54
move/from16 v0, v32
if-ne v0, v3, [B][COLOR="Blue"]:cond_56f[/COLOR][/B]
.line 3622
if-eqz v15, :cond_522
- Search down for "const/16 v3, 0xdb" (v3 may differ according to ROM) and change the condition value above it to the new condition from above mentioned edited code:
before:
Code:
.line 3654
.end local v16 #e:Landroid/os/RemoteException;
[B][COLOR="Red"]:cond_56f[/COLOR] [COLOR="Green"]<-- change it to the new condition[/COLOR][/B]
const/16 v3, 0xdb
move/from16 v0, v32
if-ne v0, v3, :cond_5a4
after:
Code:
.line 3654
.end local v16 #e:Landroid/os/RemoteException;
[B][COLOR="Blue"]:cond_nj[/COLOR][/B]
const/16 v3, 0xdb
move/from16 v0, v32
if-ne v0, v3, :cond_5a4
Save changes...
Now backsmali classsout folder to get new classes.dex file. Now Open android.policy.jar by WinRAR or 7-zip and drag and drop the new classes.dex file inside it; then push it to your device and fix permissions.
Download Torch.apk from attachment bellow and push it to your device and fix permissions as well... and viola.. lockscreen the device and do long pressing on home button to have torch flash light..:laugh:
Long press menu button to kill app
The original mod is done by maskerwsk, who modifies Mirko_ddd method
Click to expand...
Click to collapse
- Backsmali android.policy.jar
- Navigate to classout/com/android/internal/policy/impl/ folder and open PhoneWindowManager.smali file
- Locate the following code by tracking "mMenuLongPress" and do the following changes:
before:
Code:
.line 1674
new-instance v0, Lcom/android/internal/policy/impl/PhoneWindowManager$[B][COLOR="Red"]9[/COLOR][/B];
invoke-direct {v0, p0}, Lcom/android/internal/policy/impl/PhoneWindowManager$[B][COLOR="Red"]9[/COLOR][/B];-><init>(Lcom/android/internal/policy/impl/PhoneWindowManager;)V
iput-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mMenuLongPress:Ljava/lang/Runnable;
after:
Code:
.line 1674
new-instance v0, Lcom/android/internal/policy/impl/PhoneWindowManager$[B][COLOR="Blue"]KillConcept[/COLOR][/B];
invoke-direct {v0, p0}, Lcom/android/internal/policy/impl/PhoneWindowManager$[B][COLOR="Blue"]KillConcept[/COLOR][/B];-><init>(Lcom/android/internal/policy/impl/PhoneWindowManager;)V
iput-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mMenuLongPress:Ljava/lang/Runnable;
- Save changes.
- Now add this new file (PhoneWindowManager$KillConcept.smali) to classout/com/android/internal/policy/impl/ folder. You can download it from here.
You should make sure that the id in PhoneWindowManager$KillConcept.smali is linked to "permlab_forceBack" id in framework-res.apk public.xml
Click to expand...
Click to collapse
- Now recompile (smali) the classout folder and substitute classes.dex inside android.policy.jar with the new classes.dex file.. now push the modified android.policy.jar to your device and fix permissions to chmod 644.
N.B: To adjust timeout delay, see next tutorial!!
Click to expand...
Click to collapse
Adjust timeout delay across OS
- Backsmali framework.jar
- Navigate to classout/android/view/ folder and open ViewConfiguration.smali
- Search for this method and change RED text value:
Code:
.method public static getGlobalActionKeyTimeout()J
.registers 2
.prologue
.line 669
const-wide/16 v0, [B][COLOR="Red"]0x1f4[/COLOR][/B]
return-wide v0
.end method
As you can see, this hex value means 500; i.e, 0.5 second.. So we will change it to which delay we want:
0xfa = 0.25 second
0x1f4 = 0.5 second (default value)
0x2ee = 0.75 second
0x3e8 = 1 second
0x4e2 = 1.25 second
0x5dc = 1.5 second
0x6d6 = 1.75 second
0x7d0 = 2 second
Click to expand...
Click to collapse
- Compile (smali) framework.jar and push to your device and fix permissions.
Continue moddings!!
Ink effect enabling
This is handy one :crying:
To do this you will need to play with 2 files (android.policy.jar and SecSettings.apk) and lib folder.
Please download ink effect resources with ALL default colors enabled from here.
A. android.policy.jar file:
1. Copy the contents of “to android.policy.jar” folder.
2. Decompile android.policy.jar by backsmali/smali program.
3. Go to classout\com\android\internal\policy\impl\sec\ folder and paste the content of “to android.policy.jar” folder there and accept overwriting.
4. Now compile (smali), the result will be class.dex file. Open the original android.policy.jar by WinRAR and drag drop class.dex file inside android.policy.jar file
N.B: by default, ink will work for both finger and pen as well. If you want it for pen only then inside classout\com\android\internal\policy\impl\sec\ folder open CircleUnlockRippleRenderer.smali and search for "const/16 v2, 0x4002" and change this line:
Code:
const/16 v2, 0x4002
if-ne v[B][COLOR="Red"]2[/COLOR][/B], v2, :cond_94
to
Code:
const/16 v2, 0x4002
if-ne v[B][COLOR="Blue"]1[/COLOR][/B], v2, :cond_94
and save changes.
Click to expand...
Click to collapse
In CircleUnlockRippleRenderer.smali, find 0x1080618 and replace it to id value of "reflectionmap" in public.xml of framework-res.apk
Click to expand...
Click to collapse
Now push the new modified android.policy.jar to system\framework in your phone
B. SecSettings.apk file:
Decompile SecSettings.apk by APK-Multi tool
I. Image resource
Copy all images in “to res.drawable-xhdpi” folder to res\drawable-xhdpi
II. Adding lines to strings.xml resources
1. Go to res\values and open strings.xml by notepad++
2. You should make sure that the following strings are all there; if some missing, please add before </resources> line at the bottom:
Code:
<string name="ink_effect">Ink effect</string>
<string name="inkeffect_help_body">Show ink effect on the lock screen. If a live wallpaper is set on the lock screen, the ink effect will be disabled automatically</string>
<string name="ink_effect_color_none">None</string>
<string name="ink_effect_color_pink">Pink</string>
<string name="ink_effect_color_orange">Orange</string>
<string name="ink_effect_color_green">Green</string>
<string name="ink_effect_color_blue">Blue</string>
<string name="ink_effect_color_navy">Navy</string>
<string name="ink_effect_color_purple">Purple</string>
<string name="ink_effect_color_brown">Brown</string>
<string name="ink_effect_color_lightblue">Light Blue</string>
<string name="ink_effect_color_red">Red</string>
<string name="ink_effect_color_black">Black</string>
3. Now save your file.
III. Adding command line to Lockscreen_settings.xml <!-- if it is not there already
1. Go to \res\xml folder and open lockscreen_settings.xml
2. Add these lines bellow ripple effect line (the blue color lines):
Code:
<CheckBoxPreference android:title="@string/ripple_effect" android:key="ripple_effect" android:summary="@string/ripple_effect_summary" />
[b][color=blue] <PreferenceScreen android:title="@string/ink_effect" android:key="ink_effect">
<intent android:targetPackage="com.android.settings" android:action="android.intent.action.MAIN" android:targetClass="com.android.settings.InkeffectPreview" />
</PreferenceScreen>[/b][/color]
3. Save changes.
NOW you need to recompile your SecSettings.apk!! This is important to generate new id in public.xml files automatically!!
NOW decompile the new SecSettings.apk (be alert not to decompile the old one, it will not include the new changes!!)
You can delete the old SecSettings.apk from project folder to not cause confusion.
Click to expand...
Click to collapse
IV. InkeffectPreview.smali
1. Copy the files InkeffectPreview.smali
2. Go to smali\com\android\settings and paste it there and accept changes.
Now this is the tricky part..!!
3. Open it and go to the following section:
Code:
:array_14
.array-data 0x4
0xb7t 0x3t 0x2t 0x7ft
0xb9t 0x3t 0x2t 0x7ft
0xcet 0x1t 0x2t 0x7ft
0xcat 0x1t 0x2t 0x7ft
0xc6t 0x1t 0x2t 0x7ft
0xcct 0x1t 0x2t 0x7ft
0xd0t 0x1t 0x2t 0x7ft
0xc8t 0x1t 0x2t 0x7ft
0xb5t 0x3t 0x2t 0x7ft
.end array-data
:array_2a
.array-data 0x4
0xb8t 0x3t 0x2t 0x7ft
0xbat 0x3t 0x2t 0x7ft
0xcft 0x1t 0x2t 0x7ft
0xcbt 0x1t 0x2t 0x7ft
0xc7t 0x1t 0x2t 0x7ft
0xcdt 0x1t 0x2t 0x7ft
0xd1t 0x1t 0x2t 0x7ft
0xc9t 0x1t 0x2t 0x7ft
0xb6t 0x3t 0x2t 0x7ft
.end array-data
4. You can see here several numbers... these are [ink_ nameofcolor] ids for array_14 and [ink_ nameofcolor _h] ids for array_2a in public.xml.
5. So you have to open public.xml file from res\values folder
6. Search for colors ids you added… for start search for “ink_none” for array_14 section and “ink_none_h” for array_2a section.
We will start with “ink_none”
The line will be something like this:
Code:
<public type="drawable" name="ink_none" id="0x7f0203b7" />
And if you noticed the array_14 section in InkeffectPreview.smali the first line will represent the ink_none in public.xml file. So we have to convert public.xml ids to array_14, SO PLEASE match to colors here:
Code:
<public type="drawable" name="ink_none" id="[B][COLOR="DarkOrchid"]0x7f[/COLOR][COLOR="DeepSkyBlue"]02[/COLOR][COLOR="Lime"]03[/COLOR][COLOR="Red"]b7[/COLOR][/B]" />
to in array_14 section:
Code:
[B]0x[COLOR="Red"]b7[/COLOR]t 0x[COLOR="Lime"]03[/COLOR]t 0x[COLOR="DeepSkyBlue"]02[/COLOR]t [COLOR="DarkOrchid"]0x7f[/COLOR]t[/B]
Yes that’s it!! Do the same for “ink_none_h” id in array_2a section.
Code:
<public type="drawable" name="ink_none_h" id="[B][COLOR="DarkOrchid"]0x7f[/COLOR][COLOR="DeepSkyBlue"]02[/COLOR][COLOR="Lime"]03[/COLOR][COLOR="Red"]b8[/COLOR][/B]" />
to in array_2a section:
Code:
[B]0x[COLOR="Red"]b8[/COLOR]t 0x[COLOR="Lime"]03[/COLOR]t 0x[COLOR="DeepSkyBlue"]02[/COLOR]t [COLOR="DarkOrchid"]0x7f[/COLOR]t[/B]
N.B: After compiling, number 0 in the left side of value will be ignored!
Click to expand...
Click to collapse
7. Now we have finished editing InkeffectPreview.smali for the two none color ids (ink_none & ink_none_h)
8. Do the same for the rest of colors (the orders of array_14 & array_2a will represent the order of ink colors in your settings menu later on, so it must be in exact order). Also if went down you will see these colors orders as following (None, Pink, Orange, Green, Blue, Navy, Purple, Brown, Light blue, Red, Black) so again you need to keep same order while you are entering ids in array_14 and array_2a... so your arrays should be represented like this (imaginary for learning purpose only):
Code:
:array_14
.array-data 0x4
[B] ink_none
ink_pink
ink_orange
ink_green
ink_blue
ink_navy
ink_purple
ink_brown
ink_lightblue
ink_red
ink_black[/B]
.end array-data
:array_2a
.array-data 0x4
[B] ink_none_h
ink_pink_h
ink_orange_h
ink_green_h
ink_blue_h
ink_navy_h
ink_purple_h
ink_brown_h
ink_lightblue_h
ink_red_h
ink_black_h[/B]
.end array-data
9. We didn't finish yet, you have to link all ids inside InkeffectPreview.smali to correct ids in public.xml file (very annoying!!). Search for all ids inside InkeffectPreview.smali and change them to their corresponding ones inside public.xml. Here is the correct order of ids inside public.xml:
- inkeffect_preview
- ink_effect_color_none
- ink_effect_color_pink
- ink_effect_color_orange
- ink_effect_color_green
- ink_effect_color_blue
- ink_effect_color_navy
- ink_effect_color_purple
- ink_effect_color_brown
- ink_effect_color_lightblue
- ink_effect_color_red
- ink_effect_color_black
- preview_image
- ink_help
- mode_list
- inkeffect_preview_list_item
- button_layout
- inkeffect_menu
- menu_cancel --> (type="string")
- menu_save
- menu_cancel --> (type="id")
Here is example:
You searched for first id in InkeffectPreview.smali (all ids begin with 0x7f) and it was for example (0x7f090514) and you know this should represent "inkeffect_preview" inside public.xml (according to the order above). So now open public.xml and search for "inkeffect_preview", if you find it, it will have an id like (0x7f040072) copy this id and put it instead of that one inside InkeffectPreview.smali and that is it. Do the same for the rest of ids as well.
Pay attention to "menu_cancel" id, it has two variables inside public.xml, type="string" and type="id". So make sure you use the correct one in public.xml for the correct one in InkeffectPreview.smali !!!
10. Now save changes.
V. LockScreenSettings.smali
1. Copy the files LockScreenSettings.smali
2. Go to smali\com\android\settings and paste it there and accept changes.
3. Open it and go to the following section:
Code:
:array_10
.array-data 0x4
0x09t 0xft 0x9t 0x7ft
0x0at 0xft 0x9t 0x7ft
0x4ft 0xdt 0x9t 0x7ft
0x50t 0xdt 0x9t 0x7ft
0x52t 0xdt 0x9t 0x7ft
0x53t 0xdt 0x9t 0x7ft
0x54t 0xdt 0x9t 0x7ft
0x51t 0xdt 0x9t 0x7ft
0x0bt 0xft 0x9t 0x7ft
.end array-data
4. You can see here several numbers... these are [ink_effect_color_nameofcolor] ids in public.xml
5. The first line will represent the “ink_effect_color_none” text in public.xml file. So we have to convert public.xml ids to array_10, SO PLEASE match to colors here:
Code:
<public type="string" name="ink_effect_color_none" id="[B][COLOR="DarkOrchid"]0x7f[/COLOR][COLOR="DeepSkyBlue"]09[/COLOR][COLOR="Lime"]0f[/COLOR][COLOR="Red"]09[/COLOR][/B]" />
to in array_10:
Code:
[B]0x[COLOR="Red"]09[/COLOR]t 0x[COLOR="Lime"]0f[/COLOR]t 0x[COLOR="DeepSkyBlue"]09[/COLOR]t [COLOR="DarkOrchid"]0x7f[/COLOR]t[/B]
6. Now we finish editing LockScreenSettings.smali for the none color ids (ink_effect_color_none) this will represent the text color name in settings menu later on, so make color orders as same as order in InkeffectPreview.smali or you will have wrong color to wrong text color name in settings menu!!
7. Do the same for the rest of colors.
8. Again we haven't finished yet, you have to link all ids inside LockScreenSettings.smali to correct ids in public.xml file (very annoying!!). Search for all ids inside LockScreenSettings.smali and change them to their corresponding ones inside public.xml. Here is the correct order of ids inside public.xml:
- lockscreen_settings
- information_ticker_only_weibo_summary
- ripple_effect_summary
- ripple_effect_second_summary
- wakeup_in_lockscreen_summary_nomotion
- information_ticker_weibo_summary
- information_ticker_facebook_summary
- message_network_unavailable
- motion_camera_short_cut_turn_on_motion
- motion_activation
- dlg_ok
- cancel --> (type="string")
Here is example:
You searched for first id in LockScreenSettings.smali (all ids begin with 0x7f) and it was for example (0x7f09071b) and you know this should represent "lockscreen_settings" inside public.xml (according to the order above). So now open public.xml and search for "lockscreen_settings", if you find it, it will have an id like (0x7f07003a) copy this id and put it instead of that one inside LockScreenSettings.smali and that is it. Do the same for the rest of ids as well.
Pay attention to "cancel" id inside public.xml, the one that we want is with type="string" variable. So make sure you use the correct one in public.xml for the one in LockScreenSettings.smali !!!
9. Now save changes.
NOW we finally finish editing SecSettings.apk. Recompile the finished project and push it to your phone.
C. lib folder
Just copy the content of “to lib folder” to lib folder in system\lib in your phone.
Adding new ink colors
You are not satisfied with ink colors you have, so why you don't create your own!!
Let's start:
I. Image resource
Create new images of two forms [ink_nameofnewcolor.png] and [ink_nameofnewcolor_h.png] for the new color that you want to add and put them inside res\drawable-xhdpi folder.
II. Adding lines to strings.xml resources
1. Open strings.xml file and add new line just before </resources>
Code:
<string name="ink_effect_color_nameofnewcolor">Name of the new color</string>
2. And again you need to recompile your SecSettings.apk to generate new ids in public.xml files automatically!!
THEN decompile the new SecSettings.apk (we will work on this one now, so delete the previous SecSettings.apk project to not cause confusion!!)
III. LockScreenSettings.smali
1. Find the following line:
Code:
const/16 v0, 0x[B]b[/B]
This will represent how many ink colors you have in your ink colors list; here it is b (i.e 11 colors) so we will increase it to c (i.e 12 colors) and the line will be like this:
Code:
const/16 v0, 0x[B]c[/B]
2. Now go to array_10 list and add new array for your new color:
Code:
:array_10
.array-data 0x4
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
[B][COLOR="Red"]0xact 0x0t 0x9t 0x7ft[/COLOR][/B] [COLOR="Green"]<!-- New array line[/COLOR]
.end array-data
.end method
3. And as usual link it to "ink_effect_color_nameofnewcolor" id in public.xml
4. Save changes.
IV. InkeffectPreview.smali
1. Find the following line:
Code:
const/16 v1, 0x[B]b[/B]
This will represent how many ink colors you have in your ink colors list; here it is b (i.e 11 colors) so we will increase it to c (i.e 12 colors) and the line will be like this:
Code:
const/16 v1, 0x[B]c[/B]
2. Now go to array_14 list and array_2a and add new array for your new color:
Code:
.line 50
:array_14
.array-data 0x4
0xact 0x1t 0x2t 0x7ft
0xact 0x1t 0x2t 0x7ft
0xact 0x1t 0x2t 0x7ft
0xact 0x1t 0x2t 0x7ft
0xact 0x1t 0x2t 0x7ft
0xact 0x1t 0x2t 0x7ft
0xact 0x1t 0x2t 0x7ft
0xact 0x1t 0x2t 0x7ft
0xact 0x1t 0x2t 0x7ft
0xact 0x1t 0x2t 0x7ft
0xact 0x1t 0x2t 0x7ft
[B][COLOR="Red"]0xact 0x1t 0x2t 0x7ft[/COLOR][/B] [COLOR="Green"]<!-- New array line[/COLOR]
.end array-data
.line 62
:array_2a
.array-data 0x4
0xadt 0x1t 0x2t 0x7ft
0xadt 0x1t 0x2t 0x7ft
0xadt 0x1t 0x2t 0x7ft
0xadt 0x1t 0x2t 0x7ft
0xadt 0x1t 0x2t 0x7ft
0xadt 0x1t 0x2t 0x7ft
0xadt 0x1t 0x2t 0x7ft
0xadt 0x1t 0x2t 0x7ft
0xadt 0x1t 0x2t 0x7ft
0xadt 0x1t 0x2t 0x7ft
0xadt 0x1t 0x2t 0x7ft
[B][COLOR="Red"]0xadt 0x1t 0x2t 0x7ft[/COLOR][/B] [COLOR="Green"]<!-- New array line[/COLOR]
.end array-data
.end method
And as usual link the one in array_14 to "ink_nameofnewcolor" id in public.xml and the one in array_2a to "ink_nameofnewcolor_h" id in public.xml
3. Search down for this line:
Code:
const/16 v2, 0x[B]b[/B]
And yes change b to c to be like this:
Code:
const/16 v2, 0x[B]c[/B]
4. Now we need to add the new color to the list, so search for these lines:
Code:
sget-object v2, Lcom/android/settings/InkeffectPreview;->mInkcolorItem:[Ljava/lang/String;
const/16 v3, 0x[B][COLOR="Red"]a[/COLOR][/B]
invoke-virtual {p0}, Lcom/android/settings/InkeffectPreview;->getResources()Landroid/content/res/Resources;
move-result-object v4
const v5, [B][COLOR="Red"]0x7f090d55[/COLOR][/B]
invoke-virtual {v4, v5}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;
const-string v4, "[B][COLOR="Red"]Black[/COLOR][/B]"
aput-object v4, v2, v3
Copy these lines and paste them again bellow them, and change the red color values above to blue ones:
Code:
sget-object v2, Lcom/android/settings/InkeffectPreview;->mInkcolorItem:[Ljava/lang/String;
const/16 v3, 0x[B][COLOR="Blue"]b[/COLOR][/B] [COLOR="Green"]<!-- Next number in the list[/COLOR]
invoke-virtual {p0}, Lcom/android/settings/InkeffectPreview;->getResources()Landroid/content/res/Resources;
move-result-object v4
const v5, [B][COLOR="Blue"]0x7f??????[/COLOR][/B] [COLOR="Green"]<!-- id of "ink_effect_color_nameofnewcolor" in public.xml[/COLOR]
invoke-virtual {v4, v5}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;
const-string v4, "[B][COLOR="Blue"]Name of the new color[/COLOR][/B]" [COLOR="Green"]<!-- Name of the new color[/COLOR]
aput-object v4, v2, v3
5. Save changes.
V. CircleUnlockRippleRenderer.smali
This file is found in android.policy.jar and it determines the RGB value of the color when rendering.
1. Find the following line:
Code:
const/16 v3, 0x[B]b[/B]
And yes change b to c to be like this:
Code:
const/16 v3, 0x[B]c[/B]
2. Find these lines:
Code:
const/16 v4, 0x[B][COLOR="Red"]a[/COLOR][/B]
new-array v5, v7, [F
fill-array-data v5, :array_[B][COLOR="Red"]26a[/COLOR][/B]
aput-object v5, v3, v4
Copy these lines and paste them again bellow them, and change the red color values above to blue ones:
Code:
const/16 v4, 0x[B][COLOR="Blue"]b[/COLOR][/B] [COLOR="Green"]<!-- Next number in the list
[/COLOR]
new-array v5, v7, [F
fill-array-data v5, :array_[B][COLOR="Blue"]26b[/COLOR][/B] [COLOR="Green"]<!-- Next number in the list[/COLOR]
aput-object v5, v3, v4
3. As we have new array_26b, so we have to make RGB hex code for it. Find ".end method" and add array data above it like this:
Code:
:array_26b [COLOR="Green"]<!-- Our new array[/COLOR]
.array-data 0x4
0x[B][COLOR="Purple"]00[/COLOR][/B]t 0x[B][COLOR="Purple"]00[/COLOR][/B]t 0x[B][COLOR="Purple"]00[/COLOR][/B]t 0x[B][COLOR="Purple"]00[/COLOR][/B]t [COLOR="Green"]<!-- Red value in hex[/COLOR]
0x[B][COLOR="Purple"]00[/COLOR][/B]t 0x[B][COLOR="Purple"]00[/COLOR][/B]t 0x[B][COLOR="Purple"]00[/COLOR][/B]t 0x[B][COLOR="Purple"]00[/COLOR][/B]t [COLOR="Green"]<!-- Green value in hex[/COLOR]
0x[B][COLOR="Purple"]00[/COLOR][/B]t 0x[B][COLOR="Purple"]00[/COLOR][/B]t 0x[B][COLOR="Purple"]00[/COLOR][/B]t 0x[B][COLOR="Purple"]00[/COLOR][/B]t [COLOR="Green"]<!-- Blue value in hex[/COLOR]
.end array-data
.end method
You need to change these values to their RGB Hex, Hex, Hex coding; but how!!
You need first to have RGB in decimal value (0-255) by using photoshop for example; then convert it to float value by dividing your decimal value on 255, then use IEEE floating point calculator (for Windows) to convert the result to hex.
Example:
You open your photoshop and choose this color values (light blue):
Here R=0, G=159, B=180
For R=0, we need to divide it on 255, the result will be 0
For G=159, we need to divide it on 255, the result will be about 0.62353
For B=180, we need to divide it on 255, the result will be about 0.70588
Now open IEEE floating point calculator and enter these numbers to convert them to hex
So..
For R:
For G:
For B:
So if we return back to our array_26b the result will be like this:
Code:
:array_26b
.array-data 0x4
0x[B][COLOR="Purple"]00[/COLOR][/B]t 0x[B][COLOR="Purple"]00[/COLOR][/B]t 0x[B][COLOR="Purple"]00[/COLOR][/B]t 0x[B][COLOR="Purple"]00[/COLOR][/B]t [COLOR="Green"]<!-- Red value in hex[/COLOR]
0x[B][COLOR="Purple"]a9[/COLOR][/B]t 0x[B][COLOR="Purple"]9f[/COLOR][/B]t 0x[B][COLOR="Purple"]1f[/COLOR][/B]t 0x[B][COLOR="Purple"]3f[/COLOR][/B]t [COLOR="Green"]<!-- Green value in hex[/COLOR]
0x[B][COLOR="Purple"]8d[/COLOR][/B]t 0x[B][COLOR="Purple"]b4[/COLOR][/B]t 0x[B][COLOR="Purple"]34[/COLOR][/B]t 0x[B][COLOR="Purple"]3f[/COLOR][/B]t [COLOR="Green"]<!-- Blue value in hex[/COLOR]
.end array-data
.end method
And viola we finished!!
4. Save changes.
Now recompile both SecSettings.apk and android.policy.jar and push them to your device
Integrating application in settings menu
This really handy one.. so take care!!
In this tutorial, we will add USB-Mode program to Settings menu as an example
On your PC
1) Decompile SecSettings.apk.
2) Decompile the program that you want to add to settings menu (USB-Mode)
3) Go to \res\drawable-xhdpi folder and add icon for your program that you want to add (you can take it from decompiled wanted program (USBMode folder).
4) Go to \res\values folder and open strings.xml by NotePad++ and add these lines just before </resources> for your program
Code:
<string name="gloryromaddons">GloryROM Addons</string>
<string name="usbswitcher_text">USB mode switcher</string>
Here change “gloryromaddons” with any thing you want to show as a header in the Settings menu. “usbswitcher_text” is your wanted program
5) Go to \res\xml folder and open settings_headers.xml by NotePad++ and add these lines (the place you put these lines will be the place where added program will be displayed in Settings menu)
Code:
<header android:title="@string/gloryromaddons" />
<header android:icon="@drawable/usbswitcher" android:title="@string/usbswitcher_text">
<intent android:targetPackage="in.zatta.USB_switch" android:action="android.intent.action.MAIN" android:targetClass="in.zatta.USB_switch.USB_switcherActivity" />
</header>
The first line reflect the header title in settings menu (So gloryromaddons will be seen as “GloryROM Addons” in the phone, see strings.xml that we edited and you will figure it out!!)
The 2nd line is for added program:
android:[email protected]/name of icon you put in drawable-xhdpi folder (here we put usbswitcher as the icon name inside drawable-xhdpi)
android:[email protected]/name of string put for added program in strings.xml (here we put usbswitcher_text as in strings.xml)
The 3rd line is the functionality and is the most difficult one:
android:targetPackage=package of wanted program inside its own AndroidManifest.xml (here it is “in.zatta.USB_switch”)
android:action=first action of wanted program inside its own AndroidManifest.xml (here it is “android.intent.action.MAIN”)
androidtargetClass= android:targetPackage.Activity (we have android:targetPackage from previous step but we need also .Activity how to get it??) This is the tricky one so do the following:
On your phone:
install the program you want to add (USB mode switcher) and ADW launcher from Google play and make ADW launcher as your phone launcher. Find a blank area on your homescreen(s), long press, then select custom shortcut --> pick your activity --> activities --> browse down until you find USB switcher app and expand with the arrow on the left of USB switcher, you will see several activities (some may have only one). The first one in the list is usually its opening class; it is in between the ( )'s. In this example it is .USB_switcherActivity
Go back to your PC:
So now androidtargetClass= android:targetPackage.Activity will be:
androidtargetClass= in.zatta.USB_switch.USB_switcherActivity
Another way to get targetPackage and activity is here; credits to apurvapatel
Click to expand...
Click to collapse
6) Now compile SecSettings and push it to your phone.
Additional step:
If you want to hide this app from applications drawer do the followings:
1) Decompile your desired app (here USB-Mode.apk)
2) Go to AndroidManifest.xml file and open it by NotePad++
3) Delete this line :
Code:
<category android:name="android.intent.category.LAUNCHER" />
4) Compile your app as non system apk and sign it then push it to your phone
Results example:
Continue moddings!!
Reserved
CSC features
Reserved
Continue moddings!!
Notification panel extra toggles - the original way (Airplane, Torch, AllShareCast, WiFiHotSpot)
In this tutorial, we will be working with 3 files; SystemUI.apk, SecSettings.apk and SecSettingsProvider.apk
First download the View attachment 2362446 file.
SystemUI.apk:
Here we will put all missing resources for Torch toggle (other resources for Airplane and AllShareCast are already exist).
- Decompile SystemUI.apk
- Go to res\drawable-xhdpi folder and add new image resources [tw_quick_panel_icon_flashlight_off.png] and [tw_quick_panel_icon_flashlight_on.png].
- Go to res\values folder and open strings.xml and add this line resource:
Code:
<string name="quickpanel_flashlight_text">Torch</string>
- Now compile SystemUI.apk, then decompile the newly compiled SystemUI.apk again (this is to generate new ids from new resources in public.xml).
- In the new decompiled SystemUI.apk, go to res\values and open public.xml and locate these lines:
Code:
<public type="string" name="quickpanel_flashlight_text" id="0x7f0a01b7" />
<public type="drawable" name="tw_quick_panel_icon_flashlight_on" id="0x7f02033d" />
<public type="drawable" name="tw_quick_panel_icon_flashlight_off" id="0x7f02033c" />
You might get different ids, just use what is in your public.xml..!!
- Leave public.xml opened
- Copy FlashlightQuickSettingButton.smali from resource file to smali\com\android\systemui\statusbar\policy\quicksetting folder
- Open FlashlightQuickSettingButton.smali and change the 3 ids that starts with 0x7f?????? with new ids generated in public.xml in the following orders:
Code:
.method public constructor <init>(Landroid/content/Context;)V
.locals 9
.prologue
const/4 v6, 0x0
.line 35
const/4 v2, 0x0
const v3, [B][COLOR="Red"]0x7f0a01b7[/COLOR] [COLOR="Green"]<!-- id of quickpanel_flashlight_text[/COLOR][/B]
const v4, [B][COLOR="Red"]0x7f02033d[/COLOR] [COLOR="Green"]<!-- id of tw_quick_panel_icon_flashlight_on[/COLOR][/B]
const v5, [B][COLOR="Red"]0x7f02033c[/COLOR] [COLOR="Green"]<!-- id of tw_quick_panel_icon_flashlight_off[/COLOR][/B]
move-object v0, p0
- Save changes.. and that's all for SystemUI.apk.. Compile.
SecSettings.apk:
We will also add the missing resources only..!!
- Decompile SecSettings.apk
- Go to res\drawable-xhdpi folder and add new image resources [notification_panel_airplane.png] and [notification_panel_flashlight.png]
- Go to res\values folder and add these line resources to strings.xml:
Code:
<string name="notification_panel_airplane">Airplane Mode</string>
<string name="notification_panel_flashlight">Torch</string>
- Go to smali\com\android\settings folder and open NotificationPanel.smali file.
- Search for the method ".method public MakeConvertPanelName()V" and add the blue lines (make sure to match all registers v and p according to your smali):
Code:
.method public MakeConvertPanelName()V
.registers 4
.prologue
.line 119
iget-object [B][COLOR="Red"]v0, p0[/COLOR][/B], Lcom/android/settings/NotificationPanel;->mConvertPanelItemstring:Ljava/util/HashMap;
const-string [B][COLOR="Red"]v1[/COLOR][/B], "Wifi"
const-string [B][COLOR="Red"]v2[/COLOR][/B], "notification_panel_wifi"
invoke-virtual {[B][COLOR="Red"]v0, v1, v2[/COLOR][/B]}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
...
...
.line 137
iget-object [B][COLOR="Red"]v0, p0[/COLOR][/B], Lcom/android/settings/NotificationPanel;->mConvertPanelItemstring:Ljava/util/HashMap;
const-string [B][COLOR="Red"]v1[/COLOR][/B], "Sync"
const-string [B][COLOR="Red"]v2[/COLOR][/B], "notification_panel_sync"
invoke-virtual {[B][COLOR="Red"]v0, v1, v2[/COLOR][/B]}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
[B][COLOR="RoyalBlue"] # Airplane patch start
iget-object v0, p0, Lcom/android/settings/NotificationPanel;->mConvertPanelItemstring:Ljava/util/HashMap;
const-string v1, "AirplaneMode"
const-string v2, "notification_panel_airplane"
invoke-virtual {v0, v1, v2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
# End
# Torch patch start
iget-object v0, p0, Lcom/android/settings/NotificationPanel;->mConvertPanelItemstring:Ljava/util/HashMap;
const-string v1, "Flashlight"
const-string v2, "notification_panel_flashlight"
invoke-virtual {v0, v1, v2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
# End[/COLOR][/B]
.line 138
iget-object v0, p0, Lcom/android/settings/NotificationPanel;->mConvertPanelItemstring:Ljava/util/HashMap;
const-string v1, "Empty"
const-string v2, "notification_panel_empty"
invoke-virtual {v0, v1, v2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 139
iget-object [B][COLOR="Red"]v0, p0[/COLOR][/B], Lcom/android/settings/NotificationPanel;->mConvertPanelItemstring:Ljava/util/HashMap;
const-string [B][COLOR="Red"]v1[/COLOR][/B], "notification_panel_wifi"
const-string [B][COLOR="Red"]v2[/COLOR][/B], "Wifi"
invoke-virtual {[B][COLOR="Red"]v0, v1, v2[/COLOR][/B]}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
...
...
.line 157
iget-object [B][COLOR="Red"]v0, p0[/COLOR][/B], Lcom/android/settings/NotificationPanel;->mConvertPanelItemstring:Ljava/util/HashMap;
const-string [B][COLOR="Red"]v1[/COLOR][/B], "notification_panel_sync"
const-string [B][COLOR="Red"]v2[/COLOR][/B], "Sync"
invoke-virtual {[B][COLOR="Red"]v0, v1, v2[/COLOR][/B]}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
[B][COLOR="RoyalBlue"] # Airplane patch start
iget-object v0, p0, Lcom/android/settings/NotificationPanel;->mConvertPanelItemstring:Ljava/util/HashMap;
const-string v1, "notification_panel_airplane"
const-string v2, "AirplaneMode"
invoke-virtual {v0, v1, v2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
# End
# Torch patch start
iget-object v0, p0, Lcom/android/settings/NotificationPanel;->mConvertPanelItemstring:Ljava/util/HashMap;
const-string v1, "notification_panel_flashlight"
const-string v2, "Flashlight"
invoke-virtual {v0, v1, v2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
# End[/COLOR][/B]
.line 158
iget-object v0, p0, Lcom/android/settings/NotificationPanel;->mConvertPanelItemstring:Ljava/util/HashMap;
const-string v1, "notification_panel_empty"
const-string v2, "Empty"
invoke-virtual {v0, v1, v2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
- Go to smali\com\android\settings folder and open WirelessSettings.smali
- In the method ".method public onCreate(Landroid/os/Bundle;)V", locate this part and delete or comment out the red line:
Code:
.line 525
move-object/from16 v0, p0
iget-object v0, v0, Lcom/android/settings/WirelessSettings;->mMediaShareCategory:Landroid/preference/PreferenceCategory;
move-object/from16 v23, v0
const-string v24, "allshare_cast_settings"
move-object/from16 v0, p0
move-object/from16 v1, v24
invoke-virtual {v0, v1}, Lcom/android/settings/WirelessSettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
move-result-object v24
[B][COLOR="Red"]invoke-virtual/range {v23 .. v24}, Landroid/preference/PreferenceCategory;->removePreference(Landroid/preference/Preference;)Z[/COLOR][/B]
This will show AllShareCast tab in Settings -> More settings menu under Media share category but it will not functioned yet..!!
- Now we need to add smali resources for AllShareCast.. Go to res\values and open public.xml and keep it opened, we will use it later.
- Now copy the entire folder resource [wfd] in smali\com\android\settings\ folder
- Now the funny part begins, inside [wfd] folder, open WfdHelpActivity.smali, WfdPickerActivity.smali and WfdPickerDialog.smali and change all ids that start with 0x7f with ids in public.xml. To make this easy, I wrote a comment beside each id to which it must be referred to in public.xml, example:
Code:
const v3, 0x7f090392 [B][COLOR="Green"]#wifi_p2p_scan_title[/COLOR][/B]
In this example, you need to see what is the id in public.xml for wifi_p2p_scan_title and then put it instead of 0x7f090392
- Save changes and compile.
- Now open the new compiled SecSettings.apk by WinRAR or 7-zip and go to res folder and drop out the raw folder in your computer then drop it back and set compression method to STORE.. see picture
and that's all for SecSettings.apk.
SecSettingsProvider.apk:
- Decompile SecSettingsProvider.apk
- Go to res\values and open strings.xml and add this new database to this string id (the blue):
Code:
<string name="def_candidate_notification_list_q1">DrivingMode;SmartStay;[B][COLOR="RoyalBlue"]AirplaneMode;Flashlight;AllShareCast;[/COLOR][/B]</string>
- That's all for SecSettingsProvider.apk,,
Finally, push all 3 modified apks and Torch.apk from resource file to your phone,, fix permissions (644) and reboot. After booting complete, open titanium backup --> manipulate data --> wipe data for user & system app --> delete the data of settings storage, then reboot for the new database in settings.db to load.
If you don't have titanium backup, then you need to do full data wipe.!!
If you want to implement WiFi Hot Spot, see this post here by @tkari4:
http://forum.xda-developers.com/showpost.php?p=47690448&postcount=610
Click to expand...
Click to collapse
Thanks to:
@shoman94 and @jeboo who introduce this mod first.
@tkari4 for doing most of AllShareCast porting from Note 2 and WiFi HotSpot
@Goldie: for his idea of using titanium backup instead of full wipe to load the new database and for his valuable advices.
Create CSC features controller tab in settings menu
I already wrote a long tutorial for that here..
http://forum.xda-developers.com/showthread.php?p=47872809#post47872809
Disable TW UI and enable AOSP UI
A great guide by @mr.harsh in this post here:
http://forum.xda-developers.com/showpost.php?p=48152116&postcount=678
This mod is still under development. If you are interested helping @mr.harsh to kill all bugs, please give some of your valuable constructive advices for editing
Continue moddings!!
Reservd
Continue moddings!!
Reserved
Continue moddings!!
Reserved
CSC features
<< This post and next post are dedicated to CSC Features that can be enabled in GT-N7000 >>​
★ Enabled CSC Features ★​
General how to:
In your phone, go to /system/csc folder and open others.xml or feature.xml (depending on your firmware) and add the new csc feature line anywhere after <FeatureSet> and before </FeatureSet> then reboot the phone for changes to take effect.
Template example:
Code:
[B][COLOR="Red"]<FeatureSet>[/COLOR][/B]
<CscFeature_XXX>TRUE</CscFeature_XXX>
[B][COLOR="Red"]</FeatureSet>[/COLOR][/B]
Adding Call Button to Contacts and Logs
Code:
<CscFeature_Contact_EnableCallButtonInList>TRUE</CscFeature_Contact_EnableCallButtonInList>
Results example:
Call and message block
Code:
<CscFeature_Setting_EnableMenuBlockCallMsg>TRUE</CscFeature_Setting_EnableMenuBlockCallMsg>
Results example:
Factory data reset password
Code:
<CscFeature_Setting_EnableFactoryResetPasswordWhenNoSIM>TRUE</CscFeature_Setting_EnableFactoryResetPasswordWhenNoSIM>
Results example:
About device extra and hiding displays
Display installed variant:
Code:
<CscFeature_Common_EnableRegionalDevice>TRUE</CscFeature_Common_EnableRegionalDevice>
Display hardware version:
Code:
<CscFeature_Setting_EnableHwVersionDisplay>TRUE</CscFeature_Setting_EnableHwVersionDisplay>
Hide Update Software option:
Code:
<CscFeature_Setting_DisableMenuSoftwareUpdate>TRUE</CscFeature_Setting_DisableMenuSoftwareUpdate>
Results example:
Enabling Folder view in message app
Code:
<CscFeature_Message_EnableFolderView>TRUE</CscFeature_Message_EnableFolderView>
Results example:
Enabling Callback number in message app
Code:
<CscFeature_Message_EnableSmsCallbackNumber>TRUE</CscFeature_Message_EnableSmsCallbackNumber>
Results example:
Disable Page Rotation in TW Launcher
Code:
<CscFeature_Launcher_DisablePageRotation>TRUE</CscFeature_Launcher_DisablePageRotation>
Results example:
Disable Tilt Effect in TW Launcher
Code:
<CscFeature_Launcher_DisableTiltEffect>TRUE</CscFeature_Launcher_DisableTiltEffect>
Results example:
Enable Home Screen Edit Mode in TW Launcher
Code:
<CscFeature_Launcher_HomeScreenEditMode>TRUE</CscFeature_Launcher_HomeScreenEditMode>
Results example:
Change Day Color in SPlanner widget
Code:
<CscFeature_Calendar_SetColorOfDays>XXXXRBX</CscFeature_Calendar_SetColorOfDays>
N.B:
Here X means no change, R means red and B means blue. The order is same as days of week.
Click to expand...
Click to collapse
Results example:
Adding Exit button in default web browser
Code:
<CscFeature_Web_AddOptionToTerminate>TRUE</CscFeature_Web_AddOptionToTerminate>
Results example:
Adding Home button in default web browser
Code:
<CscFeature_Web_EnableHomepageOption>TRUE</CscFeature_Web_EnableHomepageOption>
Results example:
Adding Version info in default web browser
Code:
<CscFeature_Web_ShowVersionInSetting>TRUE</CscFeature_Web_ShowVersionInSetting>
Results example:
Desktop view by default in default web browser
Code:
<CscFeature_Web_EnableDesktopSiteAsDefault>TRUE</CscFeature_Web_EnableDesktopSiteAsDefault>
Results example:
Enable prompt to exit in default web browser
Code:
<CscFeature_Web_EnablePromptToExit>TRUE</CscFeature_Web_EnablePromptToExit>
Results example:
Enable Camera Shutter Sound menu
Thanks to @danivancouver for contributing..
Code:
<CscFeature_Camera_ShutterSoundMenu>TRUE</CscFeature_Camera_ShutterSoundMenu>
Results example:
Excellent
Great summary! I am sure there is more to come and add in near future for you
Nicely done !!
honestly i like the way you have put things together here, everything in order sorted as it should be. and of course understandable for any human being (the one who doesn't understand has a PROBLEM with me) hehe :laugh:
as eybee said more to come for sure there are still many mods to be done there is another one you can write in here (not 100% functional but works) the SecBrowser (MaxTab mod) you can add this to your list, for a professional way it needs by far more GFX but i have no intention of doing that still you can use it to get rid of that 16 max limit.
another thing the lockscreen has another approach to enable it this one is still clean the other requires deleting a line as it's similar to SmartRotation trick
last thing i promise XD the SecPhone mode you can enable the ExtraVolume feature too by going to the CallFeature.smali as soon as you are there you will know what i mean :good:
Good Luck

[JUN 27] SUPER USER MOD For XPERIA V

SUPER USER MOD
{
"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"
}
MOD BY
FEATURES
What is super user mod ?
Some of the app from xperia zu .......etc .... Is not installing after moving into system with correct permission
after installing this mod will enable the user to use app with out any problem SUCH AS WIDGETS , WALKMAN, ETC FROM XPERIA ZU.....
NEDDED
1. ROOTED AND DEODEXED JB FIRMWARE.
INSTALLING
1. EXTRACT THE ZIP MOVE BOTH FILES WITH R W W PERMISSION TO SYSTEM / FRAMEWORK ...
2.REBOOT AND INSTALL WHICH APP YOU WANT..ENJOY.:fingers-crossed:
FOR DOWNLOAD:
DOWNLOAD: http://www.mediafire.com/download/6jd247ilk20lyw9/SUPER_USER_FOR_XPERIA_V_BY_AERON.zip
CREDITS :
danisariandi for xperia v files.
DON'T FORGET TO HIT THANKS​
nobody feedback
---------- Post added at 03:37 PM ---------- Previous post was at 02:41 PM ----------
@Aeron Sagar: set permissison rw-r-r or r-w-w bro
---------- Post added at 04:00 PM ---------- Previous post was at 03:37 PM ----------
PS: Work fine on xperia V, thank Aeron
charmidz said:
nobody feedback
---------- Post added at 03:37 PM ---------- Previous post was at 02:41 PM ----------
@Aeron Sagar: set permissison rw-r-r or r-w-w bro
---------- Post added at 04:00 PM ---------- Previous post was at 03:37 PM ----------
PS: Work fine on xperia V, thank Aeron
Click to expand...
Click to collapse
Apps from ZU is working now?
Sent from my LT25i using xda premium
soncarl said:
Apps from ZU is working now?
Sent from my LT25i using xda premium
Click to expand...
Click to collapse
Yep !
Widget and walkman worked like a charm
what did you do? Bypass signature check?
eybee1970 said:
what did you do? Bypass signature check?
Click to expand...
Click to collapse
Download file and extract, push framework.jar and service.jar to system/framework , set permission rw-r-r and reboot
Push app xperia z ultra you want to system/app
Reboot
Note: only for V
Sent from my LT25i using xda premium
charmidz said:
Download file and extract, push framework.jar and service.jar to system/framework , set permission rw-r-r and reboot
Push app xperia z ultra you want to system/app
Reboot
Note: only for V
Sent from my LT25i using xda premium
Click to expand...
Click to collapse
lol...that was not my question...I know how to push files
I diffed the 2 files and now I know what has been changed and can do it on Xperia T without having to use Xperia V-files...one is disabling signature check, the other is a change in audio smalis
eybee1970 said:
lol...that was not my question...I know how to push files
I diffed the 2 files and now I know what has been changed and can do it on Xperia T without having to use Xperia V-files...one is disabling signature check, the other is a change in audio smalis
Click to expand...
Click to collapse
Yep, sorry mate lol
Sent from my LT25i using xda premium
eybee1970 said:
lol...that was not my question...I know how to push files
I diffed the 2 files and now I know what has been changed and can do it on Xperia T without having to use Xperia V-files...one is disabling signature check, the other is a change in audio smalis
Click to expand...
Click to collapse
Plz put a link up if you mod it for T
Sent from my LT30p using xda premium
This mod also make 4.2 apps from Z to work on our phone? Thanks
Sent from my LT25i using xda premium
josephnero said:
Plz put a link up if you mod it for T
Sent from my LT30p using xda premium
Click to expand...
Click to collapse
I shut down my pc for today...will upload tomorrow morning german time
eybee1970 said:
what did you do? Bypass signature check?
Click to expand...
Click to collapse
yes...
SP
Aeron sagar said:
yes...
Click to expand...
Click to collapse
MOD for SP Please
attached you find flashable zip for SUPER USER MOD for Xperia T Jelly Bean based on latest FW .142
Just flash in Recovery without any Wipes. If you don't have Recovery installed, just unzip and push both files to /system/framework, set permissions and reboot.
ATTENTION: this is for deodexed ROMs only!!!!!
@Aeron sagar
feel free to add to your OP
eybee1970 said:
attached you find flashable zip for SUPER USER MOD for Xperia T Jelly Bean based on latest FW .142
Just flash in Recovery without any Wipes. If you don't have Recovery installed, just unzip and push both files to /system/framework, set permissions and reboot.
ATTENTION: this is for deodexed ROMs only!!!!!
@Aeron sagar
feel free to add to your OP
Click to expand...
Click to collapse
hehe, eybee: can you port x-reality for xperia V, T, TX
Zeroinfinity, he had ported for xperia z, zl, I tried it, maybe it not work for xperia v,t, tx because I flashed Widget, album, movie,.. of ZL/Z but not work
I'm not dev , so need someone make a zip flashble for V, T, TX
charmidz said:
hehe, eybee: can you port x-reality for xperia V, T, TX
Zeroinfinity, he had ported for xperia z, zl, I tried it, maybe it not work for xperia v,t, tx because I flashed Widget, album, movie,.. of ZL/Z but not work
I'm not dev , so need someone make a zip flashble for V, T, TX
Click to expand...
Click to collapse
I had a look on that already...there is nothing device specific inside his zip...so nothing to port...if it does not work for V, T, TX I can not help...most probably there are other things already in place on Z that miss on our devices...you tried to flash his zip, but did not work? Tried together with SUPER USER MOD? Someone would have to reverse engineer, but this is clearly far above my skills...
eybee1970 said:
I had a look on that already...there is nothing device specific inside his zip...so nothing to port...if it does not work for V, T, TX I can not help...most probably there are other things already in place on Z that miss on our devices...you tried to flash his zip, but did not work? Tried together with SUPER USER MOD? Someone would have to reverse engineer, but this is clearly far above my skills...
Click to expand...
Click to collapse
yep, mate , I tried super user mod and success
maybe, x-reality is impossible
Can you give me link of XPERIA ZU's apps?
Mahthenewgamer1998 said:
Can you give me link of XPERIA ZU's apps?
Click to expand...
Click to collapse
http://forum.xda-developers.com/showthread.php?t=2339632
How To modify files for SUPER USER MOD
as I get lots of PMs how to modify the 2 jars to enable SUPER USER MOD for other devices, here is little How TO:
What you need:
you need to be on deodexed ROM
2 files from your ROM / device (Sony based!) --> framework.jar + services.jar
smali/baksmali for decompile/recompile the jars (DO NOT ASK ME HOW TO USE!!!!! I assume you know that!!!)
Notepad++ for editing smalis
a brain
Decompile framework.jar (this is for changing Audio Values...)
go to \android\media\AudioService.smali and open with Notepad++
search for '.line 231'
you will see this
Code:
.line 231
.line 231
:array_2e2
.array-data 0x4
[COLOR=Red]0x5t 0x0t 0x0t 0x0t[/COLOR]
0x7t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
[COLOR=Red]0xft 0x0t 0x0t 0x0t[/COLOR]
0x7t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
[COLOR=Red]0xft 0x0t 0x0t 0x0t[/COLOR]
0x7t 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
.end array-data
Change red parts and result will look like this:
Code:
.line 231
:array_2e2
.array-data 0x4
[COLOR=Blue]0x7t 0x0t 0x0t 0x0t[/COLOR]
0x7t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
[COLOR=Blue] 0x1et 0x0t 0x0t 0x0t[/COLOR]
0x7t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
[COLOR=Blue]0x1et 0x0t 0x0t 0x0t[/COLOR]
0x7t 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
.end array-data
save and close
recompile framework.jar
now decompile services.jar (this is for disabling nasty signature check...)
go to \com\android\server\pm\PackageManagerService.smali and open with Notepad++
search for '.method static compareSignatures'
you will see this:
Code:
.method static compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I
.registers 9
.parameter "s1"
.parameter "s2"
.prologue
.line 2284
if-nez p0, :cond_8
.line 2285
if-nez p1, :cond_6
const/4 v6, 0x1
.line 2304
:goto_5
return v6
.line 2285
:cond_6
const/4 v6, -0x1
goto :goto_5
.line 2289
:cond_8
if-nez p1, :cond_c
.line 2290
const/4 v6, -0x2
goto :goto_5
.line 2292
:cond_c
new-instance v3, Ljava/util/HashSet;
invoke-direct {v3}, Ljava/util/HashSet;-><init>()V
.line 2293
.local v3, set1:Ljava/util/HashSet;,"Ljava/util/HashSet<Landroid/content/pm/Signature;>;"
move-object v0, p0
.local v0, arr$:[Landroid/content/pm/Signature;
array-length v2, v0
.local v2, len$:I
const/4 v1, 0x0
.local v1, i$:I
:goto_14
if-ge v1, v2, :cond_1e
aget-object v5, v0, v1
.line 2294
.local v5, sig:Landroid/content/pm/Signature;
invoke-virtual {v3, v5}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
.line 2293
add-int/lit8 v1, v1, 0x1
goto :goto_14
.line 2296
.end local v5 #sig:Landroid/content/pm/Signature;
:cond_1e
new-instance v4, Ljava/util/HashSet;
invoke-direct {v4}, Ljava/util/HashSet;-><init>()V
.line 2297
.local v4, set2:Ljava/util/HashSet;,"Ljava/util/HashSet<Landroid/content/pm/Signature;>;"
move-object v0, p1
array-length v2, v0
const/4 v1, 0x0
:goto_26
if-ge v1, v2, :cond_30
aget-object v5, v0, v1
.line 2298
.restart local v5 #sig:Landroid/content/pm/Signature;
invoke-virtual {v4, v5}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
.line 2297
add-int/lit8 v1, v1, 0x1
goto :goto_26
.line 2301
.end local v5 #sig:Landroid/content/pm/Signature;
:cond_30
invoke-virtual {v3, v4}, Ljava/util/HashSet;->equals(Ljava/lang/Object;)Z
move-result v6
if-eqz v6, :cond_38
.line 2302
const/4 v6, 0x0
goto :goto_5
.line 2304
:cond_38
const/4 v6, -0x3
goto :goto_5
.end method
substitute the whole method so result will look like this:
Code:
.method static compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I
.registers 9
const/4 v0, 0x0
return v0
.end method
save and close
recompile services.jar
push both files to /system/framework, set permissions and reboot
you are done and ready to use
Disclaimer: I am not responsible if you brick your device - YOU ARE RESPONSIBLE!

[GUIDE][SMALI] How to port Mokee ListView Animation for CyanogenMod.11

Guide for CyanogenMod11 KOT49H
HOW TO PORT "Mokee ListView Animations" for CyanogenMod11 only !!
Hello guys, I want to share to you smali Guide how to port with settings. custom Mokee ListView Animation,.
credit to Mokee rom
ok lets go to Guide:
first of all need some requirement for this MOD-GUIDE
REQUIREMENT:
- BRAIN
- Patient
- experience
- Know how to decompile/recompiling Apk and JAR file
- notepad++
- Tool for decompiling, : apkmanager/apktool/Virtous/apkmultitools/ or else
Settings.apk
Decompile your CM11 Settings.apk
1. Settings.apk\res\values\arrays.xml
add this to end of it before
Code:
</resources>
so it will be like this
Code:
<string-array name="listview_animation_entries">
<item>@string/listview_off</item>
<item>@string/listview_wave_left</item>
<item>@string/listview_wave_right</item>
<item>@string/listview_scale</item>
<item>@string/listview_alpha</item>
<item>@string/listview_stack_top</item>
<item>@string/listview_stack_bottom</item>
<item>@string/listview_unfold</item>
<item>@string/listview_fold</item>
<item>@string/listview_translate_left</item>
<item>@string/listview_translate_right</item>
<item>@string/listview_rotate</item>
</string-array>
<string-array name="listview_animation_values">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>
<item>8</item>
<item>9</item>
<item>10</item>
<item>11</item>
</string-array>
<string-array name="listview_interpolator_entries">
<item>@string/listview_off</item>
<item>@string/listview_accelerate_interpolator</item>
<item>@string/listview_decelerate_interpolator</item>
<item>@string/listview_accelerate_decelerate_interpolator</item>
<item>@string/listview_anticipate_interpolator</item>
<item>@string/listview_overshoot_interpolator</item>
<item>@string/listview_anticipate_overshoot_interpolator</item>
<item>@string/listview_bounce_interpolator</item>
</string-array>
<string-array name="listview_interpolator_values">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>
</string-array>
[COLOR="Blue"]</resources>[/COLOR]
2. Settings.apk\res\values\strings.xml
add this to end of it before
Code:
</resources>
so it will be like this
Code:
<string name="listview_animation_title">ListView animation</string>
<string name="listview_off">Off</string>
<string name="listview_wave_left">Wave (left)</string>
<string name="listview_wave_right">Wave (right)</string>
<string name="listview_alpha">Alpha</string>
<string name="listview_scale">Scale</string>
<string name="listview_stack_top">Stack (top)</string>
<string name="listview_stack_bottom">Stack (bottom)</string>
<string name="listview_unfold">Unfold</string>
<string name="listview_fold">Fold</string>
<string name="listview_translate_left">Translate (left)</string>
<string name="listview_translate_right">Translate (right)</string>
<string name="listview_rotate">Rotate</string>
<string name="listview_interpolator_title">ListView interpolator</string>
<string name="listview_accelerate_interpolator">Accelerate</string>
<string name="listview_decelerate_interpolator">Decelerate</string>
<string name="listview_accelerate_decelerate_interpolator">Accelerate decelerate</string>
<string name="listview_anticipate_interpolator">Anticipate</string>
<string name="listview_overshoot_interpolator">Overshoot</string>
<string name="listview_anticipate_overshoot_interpolator">Anticipate overshoot</string>
<string name="listview_bounce_interpolator">Bounce</string>
[COLOR="Blue"]</resources>[/COLOR]
3. Settings.apk\res\xml\system_ui_settings.xml
add this line
Code:
<PreferenceScreen android:title="@string/listview_animation_title" android:key="listview_animation_settings" android:fragment="com.android.settings.adi.ListViewSettings" />
this is the example :
Code:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen android:title="@string/system_interface_title"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
<PreferenceScreen android:title="@string/status_bar_title" android:key="status_bar" android:fragment="com.android.settings.cyanogenmod.StatusBar" />
<PreferenceScreen android:title="@string/quick_settings_panel_title" android:key="quick_settings_panel" android:fragment="com.android.settings.quicksettings.QuickSettings" />
<PreferenceScreen android:title="@string/notification_drawer_title" android:key="notification_drawer" android:fragment="com.android.settings.cyanogenmod.NotificationDrawer" />
<PreferenceCategory android:title="@string/power_menu_expanded_desktop" android:key="expanded_desktop_category">
<ListPreference android:persistent="false" android:entries="@array/expanded_desktop_entries" android:title="@string/expanded_desktop_style" android:key="expanded_desktop" android:entryValues="@array/expanded_desktop_values" />
<com.android.settings.cyanogenmod.SystemSettingCheckBoxPreference android:title="@string/expanded_desktop_system_bars_visibility" android:key="expanded_desktop_system_bars_visibility" android:summary="@string/expanded_desktop_system_bars_visibility_summary" android:defaultValue="false" />
</PreferenceCategory>
<Preference android:key="touch_screen_gesture_settings">
<intent android:targetPackage="com.cyanogenmod.settings.device" android:action="com.cyanogenmod.action.LAUNCH_TOUCHSCREEN_GESTURE_SETTINGS" android:targetClass="com.cyanogenmod.settings.device.TouchscreenGestureSettings" />
</Preference>
[COLOR="Red"]<PreferenceScreen android:title="@string/listview_animation_title" android:key="listview_animation_settings" android:fragment="com.android.settings.adi.ListViewSettings" />[/COLOR]
<PreferenceScreen android:title="@string/ram_bar" android:key="recents_panel" android:fragment="com.android.settings.adi.RecentsPanelSettings" />
<PreferenceCategory android:title="@string/navigation_bar_category">
<CheckBoxPreference android:title="@string/navbar_enable_bar" android:key="enable_nav_bar" android:summary="@string/navbar_enable_bar_summary" android:defaultValue="true" />
<PreferenceScreen android:title="@string/navbar_style_dimen_title" android:key="navbar_dimen_settings" android:dependency="enable_nav_bar" android:fragment="com.android.settings.adi.NavbarDimenSettings" />
<PreferenceScreen android:title="@string/navigation_bar_title" android:key="navigation_bar" android:dependency="enable_nav_bar" android:fragment="com.android.settings.cyanogenmod.NavBar" />
<PreferenceScreen android:title="@string/navigation_ring_title" android:key="navigation_ring" android:dependency="enable_nav_bar" android:fragment="com.android.settings.cyanogenmod.NavRing" />
<com.android.settings.cyanogenmod.SystemSettingCheckBoxPreference android:title="@string/navigation_bar_left_title" android:key="navigation_bar_left" android:summary="@string/navigation_bar_left_summary" android:dependency="enable_nav_bar" android:defaultValue="false" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/hw_keys_title" android:key="hw_keys_on_navbar">
<CheckBoxPreference android:title="@string/key_back_enabled" android:key="key_back_enabled" android:defaultValue="true" />
<CheckBoxPreference android:title="@string/key_menu_enabled" android:key="key_menu_enabled" android:defaultValue="true" />
<CheckBoxPreference android:title="@string/key_home_enabled" android:key="key_home_enabled" android:defaultValue="true" />
</PreferenceCategory>
</PreferenceScreen>
4. Download attached file and merge to your decompiled Settings.apk, done and recompile it
5. Decompile the newly Recompiled APK again
- Next go to res/values/public.xml
open it with Notepad++
search for this line
Code:
<public type="xml" name="adi_mokee_listview_animations" id="[COLOR="Red"]??????????[/COLOR]" />
and pay attention to this ??????????
leave it, but keep it open
6. from the second decompiled Settings.apk , go to Settings.apk\smali\com\android\settings\adi\ListViewSettings.smali
search for this line
Code:
const v6, 0x7f050076
change this ids value 0x7f050076 in the smali
from here
Code:
<public type="xml" name="adi_mokee_listview_animations" id="[COLOR="Red"]??????????[/COLOR]" />
7. Done and recompile your settings.apk
framework.jar
1. Decompile your CM11 framework.jar
go to framework.jar\classout\android\widget\
remove all AbsListView.smali and its subs file
replace them with attached file
2. Decompile your CM11 framework-res.apk
go to \framework-res.apk\res\values\public.xml
search for this lines :
Code:
<public type="attr" name="absListViewStyle" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="style" name="Animation.TypingFilter" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="style" name="Animation.TypingFilterRestore" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="layout" name="typing_filter" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="drawable" name="list_selector_background" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="anim" name="accelerate_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="anim" name="decelerate_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="anim" name="accelerate_decelerate_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="anim" name="anticipate_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="anim" name="overshoot_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="anim" name="anticipate_overshoot_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="anim" name="bounce_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
pay attention to the red highlight the last 5 digits of each line 0x010?????
3. open AbsListView.smali file I gave
and search for this
- const v0, 0x101006a
change the last 5 digits ids 1006a in the smali according to your own have in
Code:
<public type="attr" name="absListViewStyle" id="0x010[COLOR="Red"]?????[/COLOR]" />
do it too to all of line below
- const v2, 0x10301ed
Code:
<public type="style" name="Animation.TypingFilter" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v2, 0x10301ee
Code:
<public type="style" name="Animation.TypingFilterRestore" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v1, 0x10900b8
Code:
<public type="layout" name="typing_filter" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v1, 0x1080062
Code:
<public type="drawable" name="list_selector_background" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v2, 0x10a0005
Code:
<public type="anim" name="accelerate_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v2, 0x10a0006
Code:
<public type="anim" name="decelerate_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v2, 0x10a0004
Code:
<public type="anim" name="accelerate_decelerate_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v2, 0x10a0007
Code:
<public type="anim" name="anticipate_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v2, 0x10a0008
Code:
<public type="anim" name="overshoot_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v2, 0x10a0009
Code:
<public type="anim" name="anticipate_overshoot_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v2, 0x10a000a
Code:
<public type="anim" name="bounce_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
4. Done and compile your framework.jar
That's it, have a nice moding
good luck
Screenshot
youtube : http://youtu.be/y_dhcNnueB8
Attention !
if you guys, having such of problem when compiling , try to use this smali file http://forum.xda-developers.com/showpost.php?p=51213812&postcount=14
credit to @lacoursiere18
don't forget to press his thanks button
fertamax!!
hope work jb 4.1 om
dugeriss said:
fertamax!!
hope work jb 4.1 om
Click to expand...
Click to collapse
if the framework jar smali file doesn't work on JB 4.1 .
try to use file from my JB 4.2/CM10.1 rom http://forum.xda-developers.com/showthread.php?t=2584348
also for non CyanogenMod 11, if you dont have
Settings.apk\res\xml\system_ui_settings.xml
you can put the line in other xml , eg.
display_settings.xml
system_settings.xml
etc
in doing comparisons of beanning v2 rom this can be anything not host
I hope it will work at cm11 Gt-I9082 bro..
Good job bro.... i think you should get Recognized Themer..
Adi Aisiteru Reborn said:
That's it, have a nice moding
good luck
Screenshot
youtube : http://youtu.be/y_dhcNnueB8
Click to expand...
Click to collapse
try in ics 4.04 and stay in bootlop
you think you can carry for ics?
Greetings.
uriel_zo said:
try in ics 4.04 and stay in bootlop
you think you can carry for ics?
Greetings.
Click to expand...
Click to collapse
compare CM11 stock smali with this guide smali, I use/push all Mokee 4.4. smali in this guide withoout any editting to the smali
then see what is the different.
am not sure, but as long as the line in public.xml I mention in this guide is exist in ICS public.xml , it should work.
Good luck
very nice guide
Working at CM11 Dualsim, tanks a lot bro Adi .. :good::good:
With permission from @Adi Aisiteru Reborn..
Here is all his smali that was moddified.. I made it so it compiles fine. You don't have to go through and remove any lines..
YOU do NEED to add your correct public id's though!
View attachment ListView_Settings.apk.zip
View attachment ListView_framework.jar.out.zip
Thanks again for this guide @Adi Aisiteru Reborn.. :good:
lacoursiere18 said:
With permission from @Adi Aisiteru Reborn..
Here is all his smali that was moddified.. I made it so it compiles fine. You don't have to go through and remove any lines..
YOU do NEED to add your correct public id's though!
View attachment 2639109
View attachment 2639110
Thanks again for this guide @Adi Aisiteru Reborn.. :good:
Click to expand...
Click to collapse
added to Post #4 http://forum.xda-developers.com/showpost.php?p=51174473&postcount=4
as I written in first post , this guide need :
REQUIREMENT:
- BRAIN
- Patient
- experience
Thank YOU
Thanks for the guide sir it work on my My|Phone a919i aka micromax a116 mt6589
Adi Aisiteru Reborn said:
framework.jar
1. Decompile your CM11 framework.jar
go to framework.jar\classout\android\widget\
remove all AbsListView.smali and its subs file
replace them with attached file
2. Decompile your CM11 framework-res.apk
go to \framework-res.apk\res\values\public.xml
search for this lines :
Code:
<public type="attr" name="absListViewStyle" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="style" name="Animation.TypingFilter" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="style" name="Animation.TypingFilterRestore" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="layout" name="typing_filter" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="drawable" name="list_selector_background" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="anim" name="accelerate_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="anim" name="decelerate_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="anim" name="accelerate_decelerate_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="anim" name="anticipate_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="anim" name="overshoot_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="anim" name="anticipate_overshoot_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="anim" name="bounce_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
pay attention to the red highlight the last 5 digits of each line 0x010?????
3. open AbsListView.smali file I gave
and search for this
- const v0, 0x101006a
change the last 5 digits ids 1006a in the smali according to your own have in
Code:
<public type="attr" name="absListViewStyle" id="0x010[COLOR="Red"]?????[/COLOR]" />
do it too to all of line below
- const v2, 0x10301ed
Code:
<public type="style" name="Animation.TypingFilter" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v2, 0x10301ee
Code:
<public type="style" name="Animation.TypingFilterRestore" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v1, 0x10900b8
Code:
<public type="layout" name="typing_filter" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v1, 0x1080062
Code:
<public type="drawable" name="list_selector_background" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v2, 0x10a0005
Code:
<public type="anim" name="accelerate_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v2, 0x10a0006
Code:
<public type="anim" name="decelerate_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v2, 0x10a0004
Code:
<public type="anim" name="accelerate_decelerate_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v2, 0x10a0007
Code:
<public type="anim" name="anticipate_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v2, 0x10a0008
Code:
<public type="anim" name="overshoot_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v2, 0x10a0009
Code:
<public type="anim" name="anticipate_overshoot_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v2, 0x10a000a
Code:
<public type="anim" name="bounce_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
4. Done and compile your framework.jar
Click to expand...
Click to collapse
Try it to JB 4,2, but in framework.jar nothing see framework/classout/android/widget/
A mod ? There is a simplest way to add it ! With XPosed, install XuiMod module for Xposed and enable ListView Animation in Xuimod’s options.
http://forum.xda-developers.com/showpost.php?p=46337056
Adi Aisiteru Reborn said:
framework.jar
1. Decompile your CM11 framework.jar
go to framework.jar\classout\android\widget\
remove all AbsListView.smali and its subs file
replace them with attached file
2. Decompile your CM11 framework-res.apk
go to \framework-res.apk\res\values\public.xml
search for this lines :
Code:
<public type="attr" name="absListViewStyle" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="style" name="Animation.TypingFilter" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="style" name="Animation.TypingFilterRestore" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="layout" name="typing_filter" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="drawable" name="list_selector_background" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="anim" name="accelerate_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="anim" name="decelerate_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="anim" name="accelerate_decelerate_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="anim" name="anticipate_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="anim" name="overshoot_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="anim" name="anticipate_overshoot_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
Code:
<public type="anim" name="bounce_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
pay attention to the red highlight the last 5 digits of each line 0x010?????
3. open AbsListView.smali file I gave
and search for this
- const v0, 0x101006a
change the last 5 digits ids 1006a in the smali according to your own have in
Code:
<public type="attr" name="absListViewStyle" id="0x010[COLOR="Red"]?????[/COLOR]" />
do it too to all of line below
- const v2, 0x10301ed
Code:
<public type="style" name="Animation.TypingFilter" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v2, 0x10301ee
Code:
<public type="style" name="Animation.TypingFilterRestore" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v1, 0x10900b8
Code:
<public type="layout" name="typing_filter" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v1, 0x1080062
Code:
<public type="drawable" name="list_selector_background" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v2, 0x10a0005
Code:
<public type="anim" name="accelerate_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v2, 0x10a0006
Code:
<public type="anim" name="decelerate_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v2, 0x10a0004
Code:
<public type="anim" name="accelerate_decelerate_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v2, 0x10a0007
Code:
<public type="anim" name="anticipate_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v2, 0x10a0008
Code:
<public type="anim" name="overshoot_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v2, 0x10a0009
Code:
<public type="anim" name="anticipate_overshoot_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
- const v2, 0x10a000a
Code:
<public type="anim" name="bounce_interpolator" id="0x010[COLOR="Red"]?????[/COLOR]" />
4. Done and compile your framework.jar
Click to expand...
Click to collapse
Succes on Stock JB 4.2 sir :good: :laugh: MTK device
Thanks for your guide
ported successfully to MIUI in my xiaomi mi3w.
:victory:
thank you

How to Port Lidroid Toggles to JB 4.2 MTK / STOK BASE / NON CM / JB 4.2/ JB 4.3 / KK

HOW TO PORT JB 4.2 HORIZONTAL LIDROID TOGGLES
TO MTK / STOK BASE / NON CM / JB 4.2 /JB 4.3 / KK
Oke guys, I am back again here, I want to share how to port Lidroid toggle for Jelly Bean 4.2 up. : MTK / STOK BASE / NON CM / JB 4.2 / JB 4.3 / KK
do not try this on CM Base rom, or you will ended with SystemUI force closes :laugh::fingers-crossed:
Credit & Thank you very much , to
- lidroid, and Wanam for Guide [MOD][Android 4.1.2] Add Customizable 23 Statusbar Toggles To Samsung Jelly bean Roms,. and Thanks too to peetr_I learn some code from his thread [MOD][JB][ICS] Xperia T/TX/V port of Lidroid power widget,. and also thanks to
XDA.AGM I learn some code from his thread too [ JB ] [ A.0.400/1.100 ] [ XP-XU ]SystemUI with Lidroid Custom 18 Toggles [version 6], and you must thanks them too
- Recognized contributor @BOND1987
- Denny Mbol , Device Lenovo a316i MTK 6572
- CyanogenMod
- and also Thanks to Recognized Developer/themer @serajr for some toggles created by him
- [Unofficial Community] Galaxy Wonder CyanogenMod Indonesia
so we are going to port 21 Lidroid toggles :
( -Lock screen/screen-off action, -Reboot action, -Shutdown action, -Bluetoth, -GPS, -Flashlight, -Lockscreen, -MobileData, -Orientation, -ScreenTimeOut, -Sound, -Sync, -Wi-fi, -Wi-fi Hotspot, Battery info, USB Connection mode, USB Debugging, PlayPause, Next track, Previous track, Network mode 2G/3G )
ok lets go to Guide:
first of all need some requirement for this MOD-GUIDE
REQUIREMENT:
- BRAIN
- Patient
- experience
- Know how to decompile/recompiling Apk file
- Know how to decompile/recompiling jar Apk file
- notepad++
- Tool for decompiling, : apkmanager/apktool/Virtous/apkmultitools/ or else[/B]
STEP - 1
Decompile your SystemUI.apk
- Download attached Merge_to_SystemUI.apk exstract it and merge to your decompiled systemUI.apk
- SystemUI.apk/res/layout/gemini_status_bar_expanded.xml
add the red line
Code:
<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.phone.NotificationPanelView android:id="@id/notification_panel" android:background="@drawable/notification_panel_bg" android:paddingTop="@dimen/notification_panel_padding_top" android:layout_width="0.0dip" android:layout_height="wrap_content" 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">
<View android:id="@id/handle" android:background="@drawable/status_bar_close" android:visibility="invisible" android:layout_width="fill_parent" android:layout_height="@dimen/close_handle_height" />
<include android:layout_gravity="bottom" android:layout_width="fill_parent" android:layout_height="@dimen/carrier_label_height" android:layout_marginBottom="@dimen/close_handle_height" layout="@layout/gemini_carrier_label" />
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="@dimen/close_handle_underlap" android:animateLayoutChanges="false">
<include android:layout_width="fill_parent" android:layout_height="@dimen/notification_panel_header_height" layout="@layout/status_bar_expanded_header" />
[COLOR="Red"]<com.adi.systemui.powerwidget.PowerWidget android:id="@id/adi_widget" android:layout_width="fill_parent" android:layout_height="wrap_content" />[/COLOR]
<FrameLayout android:id="@id/toolBarSwitchPanel" android:background="@drawable/notification_header_bg" android:layout_width="fill_parent" android:layout_height="103.0dip">
<include layout="@layout/toolbar_view" />
<include layout="@layout/toolbar_indicator" />
<include layout="@layout/toolbar_divider" />
</FrameLayout>
<FrameLayout android:layout_width="fill_parent" android:layout_height="wrap_content">
<ViewStub android:id="@id/flip_settings_stub" android:layout="@layout/flip_settings" android:layout_width="fill_parent" android:layout_height="wrap_content" />
<ScrollView android:id="@id/scroll" android:fadingEdge="none" android:layout_width="fill_parent" android:layout_height="wrap_content" android:overScrollMode="ifContentScrolls">
<com.android.systemui.statusbar.policy.NotificationRowLayout android:id="@id/latestItems" android:layout_width="fill_parent" android:layout_height="wrap_content" systemui:rowHeight="@dimen/notification_row_min_height" />
</ScrollView>
</FrameLayout>
</LinearLayout>
</com.android.systemui.statusbar.phone.NotificationPanelView>
- SystemUI.apk/res/values/arrays.xml
add the red lines, to end of it before </resources>
Code:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="navbar_search_targets">
<item>@null</item>
<item>@*android:drawable/ic_action_assist_generic</item>
<item>@null</item>
<item>@null</item>
</array>
<array name="navbar_search_target_descriptions">
<item>@null</item>
<item>@*android:string/description_target_search</item>
<item>@null</item>
<item>@null</item>
</array>
<array name="navbar_search_direction_descriptions">
<item>@null</item>
<item>@*android:string/description_direction_up</item>
<item>@null</item>
<item>@null</item>
</array>
[COLOR="Red"]<string-array name="shutdown_reboot_options">
<item>@string/reboot</item>
<item>@string/reboot_recovery</item>
<item>@string/reboot_download</item>
</string-array>
<string-array name="shutdown_reboot_actions">
<item></item>
<item>recovery</item>
<item>download</item>
</string-array>
<string-array name="usb_connection_mode_options">
<item>@string/usb_mpt_mode</item>
<item>@string/usb_msc_mode</item>
</string-array>
<string-array name="usb_connection_mode_actions">
<item>mtp</item>
<item>mass_storage</item>
</string-array>
<string-array name="battery_info_options">
<item>@string/battery_info_info</item>
<item>@string/battery_info_usage</item>
</string-array>
<string-array name="battery_info_actions">
<item>battery_info</item>
<item>battery_usage</item>
</string-array>[/COLOR]
</resources>
- SystemUI.apk/res/values/ids.xml
add the red lines, to end of it before </resources>
Code:
<item type="id" name="sim_name">false</item>
<item type="id" name="sim_switch">false</item>
<item type="id" name="tool_bar_view">false</item>
<item type="id" name="close">false</item>
<item type="id" name="title">false</item>
<item type="id" name="bottom">false</item>
<item type="id" name="notification_inspect_item">false</item>
<item type="id" name="recent_remove_item">false</item>
<item type="id" name="recent_inspect_item">false</item>
[COLOR="Red"]<item type="id" name="adi_widget">false</item>
<item type="id" name="power_widget_button_text">false</item>
<item type="id" name="power_widget_button_indic">false</item>
<item type="id" name="power_widget_button">false</item>
<item type="id" name="power_widget_button_image">false</item>[/COLOR]
</resources>
- SystemUI.apk/res/values/integers.xml
add the red lines, to end of it before </resources>
Code:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="config_maxNotificationIcons">5</integer>
<integer name="config_show_search_delay">200</integer>
<integer name="config_vibration_duration">0</integer>
<integer name="config_search_panel_view_vibration_duration">20</integer>
<integer name="one_finger_pop_duration_ms">10</integer>
<integer name="status_bar_recents_bg_gradient_degrees">90</integer>
<integer name="navigation_bar_deadzone_hold">333</integer>
<integer name="navigation_bar_deadzone_decay">333</integer>
<integer name="config_recent_item_min_alpha">3</integer>
<integer name="quick_settings_num_columns">3</integer>
<integer name="quick_settings_user_time_settings_tile_span">1</integer>
<integer name="quick_settings_brightness_dialog_short_timeout">2000</integer>
<integer name="quick_settings_brightness_dialog_long_timeout">4000</integer>
<integer name="blinds_pop_duration_ms">10</integer>
<integer name="notification_panel_layout_gravity">0x37</integer>
<integer name="settings_panel_layout_gravity">0x37</integer>
[COLOR="Red"]<integer name="quickpanel_scroll_threshold_port">5</integer>
<integer name="quickpanel_scroll_threshold_land">8</integer>[/COLOR]
</resources>
- SystemUI.apk/res/values/strings.xml
add the red lines, to end of it before </resources>
Code:
<string name="status_bar_help_text">"Access them anytime by swiping down.
Swipe down again for system controls."</string>
<string name="shutdown_prompt_title">Shutdown</string>
<string name="shutdown_prompt_message">Low battery and then will be auto shutdown</string>
<string name="shutdown_prompt_message_before">Low battery ! Your phone will shutdown in</string>
<string name="shutdown_prompt_message_after">seconds</string>
[COLOR="Red"]<string name="quickpanel_wifi_text">Wi-Fi</string>
<string name="quickpanel_dc_text">Data</string>
<string name="quickpanel_network_mode_text">Network</string>
<string name="quickpanel_sound_text">Sound</string>
<string name="quickpanel_sound_vibration_text">Ring.vibrate</string>
<string name="quickpanel_silent_text">Silent</string>
<string name="quickpanel_vibration_text">Vibration</string>
<string name="quickpanel_rotation_text">Rotation</string>
<string name="quickpanel_bluetooth_text">Bluetooth</string>
<string name="quickpanel_gps_text">GPS</string>
<string name="quickpanel_autosync_text">Auto Sync</string>
<string name="quickpanel_brightness_text">Brightness</string>
<string name="quickpanel_screen_timeout_text">Timeout</string>
<string name="quickpanel_lockscreen_text">Lockscreen</string>
<string name="quickpanel_airplane_text">Flightmode</string>
<string name="quickpanel_flashlight_text">Flashlight</string>
<string name="quickpanel_reboot_text">Reboot</string>
<string name="quickpanel_shutdown_text">Shutdown</string>
<string name="airplane_mode">In Flight mode</string>
<string name="shutdown_confirm">Your phone will shut down.</string>
<string name="screen_timeout_seconds">Screen timeout set to: %d second(s)</string>
<string name="screen_timeout_minutes">Screen timeout set to: %d minute(s)</string>
<string name="screen_timeout_hours">Screen timeout set to: %d hour(s)</string>
<string name="hamster">Phone Options</string>
<string name="yes">OK</string>
<string name="no">Cancel</string>
<string name="reboot">Reboot</string>
<string name="reboot_recovery">Recovery</string>
<string name="reboot_download">Download</string>
<string name="quickpanel_nfc_text">NFC</string>
<string name="quickpanel_wifi_ap_text">Wifi AP</string>
<string name="quickpanel_lockscreen_action_text">Sleep</string>
<string name="quickpanel_androidbeam_text">Android Beam</string>
<string name="brightness_settings_automatic">AUTO</string>
<string name="brightness_settings_title" />
<string name="quickpanel_usb_debugging_text">Debugging</string>
<string name="quickpanel_usb_connection_mode_text">USB Mode</string>
<string name="quickpanel_usb_current_mtp_title">Current mode: MPT</string>
<string name="quickpanel_usb_current_msc_title">Current mode: MSC</string>
<string name="usb_mpt_mode">MPT - Media Transfer</string>
<string name="usb_msc_mode">MSC - Mass Storage</string>
<string name="quickpanel_stay_awake_plugged_text">Stay Awake</string>
<string name="quickpanel_battery_info_text">Battery</string>
<string name="battery_info_info">Battery Information</string>
<string name="battery_info_usage">Battery Power Usage</string>
<string name="quickpanel_playpause_text">Play-Pause</string>
<string name="quickpanel_next_text">Next</string>
<string name="quickpanel_previous_text">Previous</string>
<string name="quickpanel_screenshots_text">Screenshot</string>[/COLOR]
</resources>
- Done and recompile your systemUI.apk
NOTE :
if you are using Apk Tool 2.0 or newer, and gettings error recompiling in the smali file,. check this explanation by :
- Recognized Themer @lacoursiere18 , here http://forum.xda-developers.com/showpost.php?p=53798727&postcount=34
and by Recognized Themer @Ticklefish, here http://forum.xda-developers.com/showpost.php?p=53824313&postcount=37
Credits and Thanks to them
STEP - 2
- Decompile the newly Recompiled APK again
Next go to
res/values/public.xml
open it with Notepad++
leave it, but keep it open
- smali/com/android/systemui/statusbar/phone/PhoneStatusBar.smali
add the red lines :
Code:
.field private mOldPlmn:Ljava/lang/String;
.field mPixelFormat:I
.field private mPlmnLabel:Landroid/widget/TextView;
.field mPositionTmp:[I
.field mPostCollapseCleanup:Ljava/lang/Runnable;
[COLOR="Red"].field mPowerWidget:Lcom/adi/systemui/powerwidget/PowerWidget;[/COLOR]
.field private mPreviousConfigFontScale:F
.field private mPrevioutConfigOrientation:I
.field mQS:Lcom/android/systemui/statusbar/phone/QuickSettings;
.field mQueueLock:Ljava/lang/Object;
.field private mRecentsClickListener:Landroid/view/View$OnClickListener;
Code:
.end local v6 #signal:Landroid/view/View;
.end local v7 #systemIcons:Landroid/view/View;
:cond_0
iget-object v8, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mLightsOutAnimation:Landroid/animation/Animator;
invoke-virtual {v8}, Landroid/animation/Animator;->cancel()V
.line 2213
iget-object v8, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mLightsOnAnimation:Landroid/animation/Animator;
invoke-virtual {v8}, Landroid/animation/Animator;->cancel()V
.line 2215
if-eqz p1, :cond_1
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mLightsOutAnimation:Landroid/animation/Animator;
.line 2216
.local v0, a:Landroid/animation/Animator;
:goto_0
invoke-virtual {v0}, Landroid/animation/Animator;->start()V
.line 2218
invoke-virtual {p0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->setAreThereNotifications()V
.line 2219
return-void
.line 2215
.end local v0 #a:Landroid/animation/Animator;
:cond_1
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mLightsOnAnimation:Landroid/animation/Animator;
goto :goto_0
.end method
[COLOR="Red"].method private setupPowerWidget()V
.locals 2
.prologue
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarWindow:Lcom/android/systemui/statusbar/phone/StatusBarWindowView;
const v1, [COLOR="Blue"]0x7f08012a[/COLOR]
invoke-virtual {v0, v1}, Lcom/android/systemui/statusbar/phone/StatusBarWindowView;->findViewById(I)Landroid/view/View;
move-result-object v0
check-cast v0, Lcom/adi/systemui/powerwidget/PowerWidget;
iput-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mPowerWidget:Lcom/adi/systemui/powerwidget/PowerWidget;
iput-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mPowerWidget:Lcom/adi/systemui/powerwidget/PowerWidget;
invoke-virtual {v0}, Lcom/adi/systemui/powerwidget/PowerWidget;->setupWidget()V
iput-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mPowerWidget:Lcom/adi/systemui/powerwidget/PowerWidget;
invoke-virtual {v0}, Lcom/adi/systemui/powerwidget/PowerWidget;->updateWidget()V
return-void
.end method[/COLOR]
.method private showAlwaysAskOrInternetCall(J)V
.locals 3
.parameter "simId"
.prologue
const/4 v2, 0x0
.line 3231
const/4 v0, 0x1
iput-boolean v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mSimIndicatorIconShow:Z
.line 3232
const-wide/16 v0, -0x2
cmp-long v0, p1, v0
if-nez v0, :cond_0
.line 3233
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mSimIndicatorIcon:Landroid/widget/ImageView;
const v1, 0x7f020137
invoke-virtual {v0, v1}, Landroid/widget/ImageView;->setBackgroundResource(I)V
.line 3239
:goto_0
iget-boolean v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mAirplaneMode:Z
if-nez v0, :cond_2
.line 3240
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mSimIndicatorIcon:Landroid/widget/ImageView;
invoke-virtual {v0, v2}, Landroid/widget/ImageView;->setVisibility(I)V
.line 3245
:goto_1
return-void
.line 3234
:cond_0
const-wide/16 v0, -0x3
cmp-long v0, p1, v0
if-nez v0, :cond_1
.line 3235
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mSimIndicatorIcon:Landroid/widget/ImageView;
const v1, 0x7f020136
invoke-virtual {v0, v1}, Landroid/widget/ImageView;->setBackgroundResource(I)V
goto :goto_0
.line 3237
:cond_1
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mSimIndicatorIcon:Landroid/widget/ImageView;
const v1, 0x7f020135
invoke-virtual {v0, v1}, Landroid/widget/ImageView;->setBackgroundResource(I)V
goto :goto_0
change this, 0x7f08012a according to the value you got in your own public.xml
Code:
<public type="id" name="adi_widget" id="0x7f??????" />
search this method
Code:
.method protected makeStatusBarView()Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;
scroll down in that method and add the red line
Code:
move-object/from16 v0, p0
iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mBroadcastReceiver:Landroid/content/BroadcastReceiver;
invoke-virtual {v11, v1, v12}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
.line 772
invoke-direct/range {p0 .. p0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->resetUserSetupObserver()V
[COLOR="Red"] invoke-direct/range {p0 .. p0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->setupPowerWidget()V[/COLOR]
.line 774
new-instance v20, Landroid/content/IntentFilter;
invoke-direct/range {v20 .. v20}, Landroid/content/IntentFilter;-><init>()V
.line 775
.local v20, simInfoIntentFilter:Landroid/content/IntentFilter;
const-string v1, "android.intent.action.SIM_SETTING_INFO_CHANGED"
OR
you can put the line here
Code:
iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mMediaEjectBroadcastReceiver:Landroid/content/BroadcastReceiver;
invoke-virtual {v11, v1, v15}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
.line 800
move-object/from16 v0, p0
[COLOR="Red"] invoke-direct/range {p0 .. p0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->setupPowerWidget()V[/COLOR]
iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;
return-object v1
.line 440
.end local v12 #filter:Landroid/content/IntentFilter;
.end local v14 #indicator:Lcom/android/systemui/statusbar/toolbar/ToolBarIndicator;
.end local v15 #mediaEjectFilter:Landroid/content/IntentFilter;
.end local v19 #signalCluster:Lcom/android/systemui/statusbar/SignalClusterViewGemini;
.end local v20 #simInfoIntentFilter:Landroid/content/IntentFilter;
.end local v21 #tickerView:Lcom/android/systemui/statusbar/phone/TickerView;
:cond_d
const/4 v1, 0x0
goto/16 :goto_0
NOTE !! if your device / os
Code:
.method protected makeStatusBarView()Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;
doesn't have this line
Code:
move-object/from16 v0, p0
change this
Code:
invoke-direct/range {p0 .. p0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->setupPowerWidget()V
to like this
Code:
invoke-direct {p0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->setupPowerWidget()V
STEP -3
Next : Download attached Powerwidget_public, and open it with Notepad++
so you have two public.xml now which is opened in the Notepad++
1. secondly decompiled public.xml
2. Powerwidget_public.xml
- go to , smali/com/adi/systemui/powerwidget/here...
there are a lot of smalis there
FIND ALL IDS in all that smalis THAT'S STARTED WITH
Code:
0x7fxxxxxx
EXAMPLE :
AutoRotateButton.smali
Code:
.method protected getText()I
.locals 1
const v0, [COLOR="Red"]0x7f0b00f9[/COLOR]
return v0
.end method
find this const v0, 0x7f0b00f9 in PowerWidget_public.xml what is calling for
and we find that is for
Code:
<public type="[COLOR="Red"]string[/COLOR]" name="[COLOR="Red"]quickpanel_rotation_text[/COLOR]" id="[COLOR="Blue"]0x7f0b00f9[/COLOR]" />
the IDS can be strings, ids, integer, arays, drawable, or layout, so you have to pay attention to this
next go to your own public.xml search for the value you got
Code:
<public type="[COLOR="Red"]string[/COLOR]" name="[COLOR="Red"]quickpanel_rotation_text[/COLOR]" id="[COLOR="Blue"]0x7f0??????[/COLOR]" />
and change the IDS in the smali with your own value
Code:
.method protected getText()I
.locals 1
const v0, [COLOR="Blue"]0x7f0??????[/COLOR]
return v0
.end method
Do it too, to all
Code:
0x7fxxxxxx
in all smalis in the Powerwidget folder.
STEP - 4
- Disable signature check
here : http://forum.xda-developers.com/showthread.php?t=1698352
or in here : http://forum.xda-developers.com/showpost.php?p=47592101&postcount=3
- AndroidManifest.xml
add the red line
Code:
<manifest [COLOR="Red"]android:sharedUserId="android.uid.system" android:process="system"[/COLOR] android:versionCode="17" android:versionName="4.2.2-eng.njdbuild03.1389868812" package="com.android.systemui" coreApp="true"
Code:
<uses-permission android:name="android.permission.ACCESS_ALL_DOWNLOADS" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
[COLOR="Red"]<uses-permission android:name="android.permission.REBOOT" />
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />[/COLOR]
<application android:label="@string/app_label" android:icon="@*android:drawable/platlogo" android:allowClearUserData="false" android:persistent="true" android:allowBackup="false">
<service android:name="SystemUIService" android:exported="true" />
<service android:name=".screenshot.TakeScreenshotService" android:exported="false" android:process=":screenshot" />
Code:
<service android:label="@string/jelly_bean_dream_name" android:name=".BeanBagDream" android:enabled="false" android:exported="true">
<intent-filter>
<action android:name="android.service.dreams.DreamService" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</service>
<activity android:theme="@*android:style/Theme.Wallpaper.NoTitleBar" android:label="@string/start_dreams" android:icon="@mipmap/ic_launcher_dreams" android:name=".Somnambulator" android:exported="true" android:excludeFromRecents="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.DESK_DOCK" />
</intent-filter>
</activity>
[COLOR="Red"]<receiver android:name="com.adi.systemui.powerwidget.NetworkModeReceiver" android:process="com.android.phone">
<intent-filter>
<action android:name="com.serajr.powertoggles.POWERTOGGLES_CHANGE_NETWORK_MODE" />
<action android:name="com.serajr.powertoggles.POWERTOGGLES_NEW_NETWORK_MODE" />
</intent-filter>
</receiver>[/COLOR]
</application>
</manifest>
- Done and recompile it , don't forget to sign it,
I ussually use ApkMultitools to decompile/recompile/sign APK
so if you use ApkMultitools, you can use my signer keys
download attached file, exstract it and merge to your ApkMultitools / other / here
- Download Attached Powerwidget.apk and Torch.apk, push it to your system/app/reboot
- edit your build.prop , to make USB connection mode toggle working properly
Code:
ro.sys.usb.storage.type=mtp[COLOR="Red"],mass_storage[/COLOR]
Additional :
- if the Flashlight toggle force closes, try to use this Torch.apk by raffie_archildz http://d-h.st/n99
- But if still force closes try to use this guide
if the Flashlight toggle from the guide doesn't work, try to use this smali http://d-h.st/mgb
- and don't forget to match the IDS too,.
- AndroidManifest.xml
Code:
<uses-permission android:name="android.permission.ACCESS_ALL_DOWNLOADS" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
[COLOR="Red"]<uses-permission android:name="android.permission.CAMERA" />[/COLOR]
[COLOR="Blue"]<uses-permission android:name="android.permission.REBOOT" />
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />[/COLOR]
<application android:label="@string/app_label" android:icon="@*android:drawable/platlogo" android:allowClearUserData="false" android:persistent="true" android:allowBackup="false">
<service android:name="SystemUIService" android:exported="true" />
Screenshots
{
"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"
}
fertamax om :victory: !!
Thread Updated !, please use New_PowerWidget.apk,.
cuz re-order prefrence doesn't work on the old PowerWidget.apk
:laugh:
Finally EPIC mod for Mediatek has come.
Thanx mastah!
Thanks a lot
Thanks a lot SIR for making a guide for MTK Devices ..Will try today .....
Great job!!
Another awesome write up!! Congrats bro!!
And you have used my network mode receiver too... great! :highfive:
thanx...
Thanks a ton !!! Great Guide
got working in 2nd try on my Mediatek mt6577 (LAVA IRIS 405) DEVICE with JB 4.2.2 ...
thanks a lot ....
But if i toggle to 3g mode then no network .
still i need to fix reboot and flashlight rest all working fine i've attached logcat of reboot fc pls have a look, i googled didn't find anything useful
Again thanks a lot for this mod :good:
pavan kr said:
got working in 2nd try on my Mediatek mt6577 (LAVA IRIS 405) DEVICE with JB 4.2.2 ...
thanks a lot ....
But if i toggle to 3g mode then no network .
still i need to fix reboot and flashlight rest all working fine i've attached logcat of reboot fc pls have a look, i googled didn't find anything useful
Again thanks a lot for this mod :good:
Click to expand...
Click to collapse
please check again all IDS in your smali got the correct value
ihiirrrrr love it ....work like a charm mastah...on imo raptor...:good:
wow
:good:work ...thx teacher
your awesome...another great guides from u... sungkem dulu ama guru... _/|\_
thanks...
Sent from my GT-I9152 using Tapatalk
It's touchwiz 4.2 :good::laugh:
budi78 said:
:good:work ...thx teacher
Click to expand...
Click to collapse
sitifire said:
your awesome...another great guides from u... sungkem dulu ama guru... _/|\_
thanks...View attachment 2791477
Sent from my GT-I9152 using Tapatalk
Click to expand...
Click to collapse
awesome guide suhu sangat sangat Thanks :good:
thanks lord adi...
Working in my MTK device..
Working in my MTK device.. But pls someone help me to understand the Steps .. Wrongs icons and names and icons merging with the toggle names

[MOD][GUIDE][SYSTEMUI] Header Machine

Hi all, this time I want to provide a "Header Machine Guide", this guide for change the background of Expanded Header.. Hopefully it works for all ..
This guide is based on the Asus Zenfone 4S (T00Q) Lollipop firmware.
Feature:
Header BG with option (Default, Color, BG Picker, Timer/Omni)
Header BG Timer/Omni style (Default, Modern, Poly)
Header BG alpha
Header BG animation
Enable/disable blur BG
Add options to set date for Idul Fitri, Idul Adha and birthday
Add Blur BG preview
Requirement:
- Understanding about APK compile/decompile
- APKTool
- Notepad++ (PC)
Step:
Part AsusSystemUI:
1. Decompile AsusSystemUI.apk
2. Copy smali and res folder from guide to your systemui.. Overwrite if exist..
3. Open AndroidManifest.xml
Find:
Code:
<activity android:excludeFromRecents="true" android:name="com.android.keyguard.KeyguardIntruderView" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
</intent-filter>
</activity>
Add this just below:
Code:
<activity android:theme="@android:style/Theme.Holo" android:label="Header Machine Preference" android:icon="@null" android:name="com.bamzzz.prefs.HeaderMachineActivity" android:excludeFromRecents="true" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
4. Open res/layout/asus_status_bar_expanded_header.xml (Asus) or status_bar_expanded_header.xml (Other phone)
Find:
Code:
<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.phone.StatusBarHeaderView android:layout_gravity="@integer/notification_panel_layout_gravity" android:id="@id/header" android:background="@null" android:paddingBottom="@dimen/asus_quicksetting_panel_header_padding_bottom" android:focusable="true" android:clickable="true" android:layout_width="@dimen/notification_panel_width" android:layout_height="@dimen/asus_status_bar_header_height" android:baselineAligned="false" android:paddingStart="@dimen/notification_side_padding" android:paddingEnd="@dimen/notification_side_padding"
xmlns:android="http://schemas.android.com/apk/res/android">
Add this just below:
Code:
<com.bamzzz.HeaderMachine android:id="@id/header_machine"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:scaleType="fitXY"
android:adjustViewBounds="true" />
For Asus Zenfone only:
Find:
Code:
<Button android:textSize="@dimen/asus_notification_clear_all_text_size" android:textColor="@color/asus_notification_clear_all_text_color" android:id="@id/clear_all_button" android:background="@drawable/ic_notify_clear" android:layout_width="wrap_content" android:layout_height="@dimen/asus_notification_clear_all_height" android:text="@string/status_bar_clear_all_button" android:layout_alignParentBottom="true" android:contentDescription="@string/accessibility_clear_all" android:fontFamily="sans-serif" android:layout_marginEnd="@dimen/asus_quicksetting_button_margin_right" android:layout_alignParentEnd="true" />
Add this after "<Button "
Code:
android:layout_marginBottom="@dimen/asus_quicksetting_panel_header_padding_bottom"
Looks like this:
Code:
<Button [COLOR="Blue"]android:layout_marginBottom="@dimen/asus_quicksetting_panel_header_padding_bottom"[/COLOR] android:textSize="@dimen/asus_notification_clear_all_text_size" android:textColor="@color/asus_notification_clear_all_text_color" android:id="@id/clear_all_button" android:background="@drawable/ic_notify_clear" android:layout_width="wrap_content" android:layout_height="@dimen/asus_notification_clear_all_height" android:text="@string/status_bar_clear_all_button" android:layout_alignParentBottom="true" android:contentDescription="@string/accessibility_clear_all" android:fontFamily="sans-serif" android:layout_marginEnd="@dimen/asus_quicksetting_button_margin_right" android:layout_alignParentEnd="true" />
5. Open res/values/ids.xml and add this:
Code:
<item type="id" name="header_machine">false</item>
<item type="id" name="header_machine_layout">false</item>
<item type="id" name="header_machine_time_title">false</item>
<item type="id" name="header_machine_idul_fitri_text">false</item>
<item type="id" name="header_machine_idul_fitri_button">false</item>
<item type="id" name="header_machine_idul_adha_text">false</item>
<item type="id" name="header_machine_idul_adha_button">false</item>
<item type="id" name="header_machine_birthday_text">false</item>
<item type="id" name="header_machine_birthday_button">false</item>
<item type="id" name="header_machine_background_title">false</item>
<item type="id" name="header_machine_background_content">false</item>
<item type="id" name="header_machine_checkBlur">false</item>
<item type="id" name="header_machine_background_button_pick">false</item>
<item type="id" name="header_machine_background_button_set">false</item>
<item type="id" name="header_machine_tip_text">false</item>
6. This step should not be applied !!! Especially for Asus Zenfone, is used to remove the default background or default theme:
Open /smali/com/android/systemui/statusbar/phone/StatusBarHeaderView.smali
Find:
Code:
# instance fields
Add this just below:
Code:
.field private mHeaderMachine:I
Find:
Code:
.method private setImageViewDrawable()V
Then find:
Code:
invoke-virtual {p0, v0}, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->setBackground(Landroid/graphics/drawable/Drawable;)V
Add this just above:
Code:
iget v8, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mHeaderMachine:I
const/4 v9, 0x0
if-ne v8, v9, :cond_brut
const-string v8, "BamzzzHeaderMachine"
new-instance v9, Ljava/lang/StringBuilder;
invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
const-string v10, "Header Machine disable -> "
invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v9
iget v10, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mHeaderMachine:I
invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v9
invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v9
invoke-static {v8, v9}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
Find again:
Code:
invoke-virtual {p0, v0}, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->setBackground(Landroid/graphics/drawable/Drawable;)V
Add this just below:
Code:
goto :goto_brutt
:cond_brut
const-string v8, "BamzzzHeaderMachine"
new-instance v9, Ljava/lang/StringBuilder;
invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
const-string v10, "Header Machine enable -> "
invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v9
iget v10, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mHeaderMachine:I
invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v9
invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v9
invoke-static {v8, v9}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
const/4 v8, 0x0
invoke-virtual {p0, v8}, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->setBackgroundResource(I)V
:goto_brutt
Find:
Code:
.line 199
.local v8, "paddingBottom":I
const/4 v12, 0x0
invoke-virtual {p0, v7, v12, v7, v8}, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->setPaddingRelative(IIII)V
.line 200
return-void
Above it add:
Code:
const/4 v8, 0x0
Find:
Code:
.method public updateEverything()V
Above return void add:
Code:
invoke-static {}, Lcom/bamzzz/HeaderMachine;->getVisibilities()I
move-result v0
iput v0, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mHeaderMachine:I
invoke-direct {p0}, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->setImageViewDrawable()V
7. Recompile SystemUI, then push and reboot phone.
8. Done
Part Settings:
Goto post 2
Attention: Don't rename or modify path of smali from this guide without my permissions !!!
Header Machine demo video: https://youtu.be/TaFGTlTdrMI
Created by [email protected]
fb.me/bamz4ever
http://forum.xda-developers.com/member.php?u=4672359
ZenControl by [email protected] & [email protected]
http://forum.xda-developers.com/android/apps-games/app-rom-control-app-devs-t3146567
Idea from StatusBar Header Machine and some drawables and some methods from OmniROM Project
Thanks to SyahrulLail for idea of Date picker preference
Part Settings
Optional..!!! You can using ZenControl.apk (Lollipop only) or/and include preference into Settings.apk
Add Preference using ZenControl.apk :
1. Decompile ZenControl.apk
2. Open res/xml/dropdown_prefs.xml and add this:
Code:
<PreferenceScreen android:title="@string/header_machine_title" android:summary="@string/header_machine_summary">
<PreferenceCategory android:title="@string/header_machine_title" />
<com.wubydax.romcontrol.prefs.MyListPreference
android:entries="@array/header_machine_style_entries"
android:title="@string/header_machine_style_title"
android:key="header_machine_style"
android:defaultValue="3"
android:entryValues="@array/header_machine_style_values" />
<com.wubydax.romcontrol.prefs.MyListPreference
android:entries="@array/header_machine_bg_style_entries"
android:title="@string/header_machine_bg_style_title"
android:key="header_machine_bg_style"
android:defaultValue="1"
android:entryValues="@array/header_machine_bg_style_values" />
<com.wubydax.romcontrol.prefs.ColorPickerPreference
android:title="@string/header_machine_color_title"
android:key="header_machine_color"
android:defaultValue="\#00000000"
alphaSlider="true" />
<com.wubydax.romcontrol.prefs.SeekBarPreference
android:icon="@null"
android:max="255"
android:title="@string/header_machine_bg_alpha_title"
android:key="header_machine_bg_image_alpha"
android:defaultValue="100"
min="0"
unitsRight="" />
<CheckBoxPreference
android:defaultValue="false"
android:title="@string/header_machine_bg_animated_title"
android:key="header_machine_bg_animated"
android:summaryOn="@string/header_machine_enable"
android:summaryOff="@string/header_machine_disable" />
<CheckBoxPreference
android:defaultValue="false"
android:title="@string/header_machine_bg_image_blur_title"
android:key="header_machine_bg_image_blur"
android:summaryOn="@string/header_machine_enable"
android:summaryOff="@string/header_machine_disable" />
<PreferenceScreen
android:summary="@string/header_machine_preference_summary"
android:title="@string/header_machine_preference_title">
<intent
android:targetClass="com.bamzzz.prefs.HeaderMachineActivity"
android:targetPackage="com.android.systemui" />
</PreferenceScreen>
</PreferenceScreen>
3. Open res/values/strings.xml then add this:
Code:
<string name="header_machine_title">Header Machine</string>
<string name="header_machine_summary">Enable various bg options in expanded header</string>
<string name="header_machine_style_title">Header Machine Style</string>
<string name="header_machine_style_1_title">Default</string>
<string name="header_machine_style_2_title">Color</string>
<string name="header_machine_style_3_title">Custom Image</string>
<string name="header_machine_style_4_title">Timer (OMNI)</string>
<string name="header_machine_bg_style_title">Timer Background Style</string>
<string name="header_machine_bg_style_1_title">Default</string>
<string name="header_machine_bg_style_2_title">Modern</string>
<string name="header_machine_bg_style_3_title">Poly HD</string>
<string name="header_machine_color_title">Header Color</string>
<string name="header_machine_bg_alpha_title">Header BG Alpha</string>
<string name="header_machine_bg_animated_title">BG Animated</string>
<string name="header_machine_bg_image_blur_title">Blur BG</string>
<string name="header_machine_enable">Enable</string>
<string name="header_machine_disable">Disable</string>
<string name="header_machine_preference_title">Header Machine Preference</string>
<string name="header_machine_preference_summary">Set Header Machine Date and Custom Image Background</string>
4. Open res/values/arrays.xml and add this:
Code:
<string-array name="header_machine_bg_style_entries">
<item>@string/header_machine_bg_style_1_title</item>
<item>@string/header_machine_bg_style_2_title</item>
<item>@string/header_machine_bg_style_3_title</item>
</string-array>
<string-array name="header_machine_bg_style_values" translatable="false">
<item>0</item>
<item>1</item>
<item>2</item>
</string-array>
<string-array name="header_machine_style_entries">
<item>@string/header_machine_style_1_title</item>
<item>@string/header_machine_style_2_title</item>
<item>@string/header_machine_style_3_title</item>
<item>@string/header_machine_style_4_title</item>
</string-array>
<string-array name="header_machine_style_values" translatable="false">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
5. Recompile ZenControl..
6. Install ZenControl.apk
Add Preference include settings:
1. First apply my guide: http://forum.xda-developers.com/zenfone-4/themes-apps/guide-easy-preference-control-t3317849
2. Open res/xml/zen_prefs.xml and add this
Code:
<PreferenceScreen android:title="@string/header_machine_title" android:summary="@string/header_machine_summary">
<com.android.settings.bamzzz.prefs.MyListPreference
android:entries="@array/header_machine_style_entries"
android:title="@string/header_machine_style_title"
android:key="header_machine_style"
android:defaultValue="3"
android:entryValues="@array/header_machine_style_values" />
<com.android.settings.bamzzz.prefs.MyListPreference
android:entries="@array/header_machine_bg_style_entries"
android:title="@string/header_machine_bg_style_title"
android:key="header_machine_bg_style"
android:defaultValue="1"
android:entryValues="@array/header_machine_bg_style_values" />
<com.android.settings.bamzzz.prefs.ColorPickerPreference
android:title="@string/header_machine_color_title"
android:key="header_machine_color"
android:defaultValue="\#00000000"
alphaSlider="true" />
<com.android.settings.bamzzz.prefs.SeekBarPreference
android:icon="@null"
android:max="255"
android:title="@string/header_machine_bg_alpha_title"
android:key="header_machine_bg_image_alpha"
android:defaultValue="100"
min="0"
unitsRight="" />
<CheckBoxPreference
android:defaultValue="false"
android:title="@string/header_machine_bg_animated_title"
android:key="header_machine_bg_animated"
android:summaryOn="@string/header_machine_enable"
android:summaryOff="@string/header_machine_disable" />
<CheckBoxPreference
android:defaultValue="false"
android:title="@string/header_machine_bg_image_blur_title"
android:key="header_machine_bg_image_blur"
android:summaryOn="@string/header_machine_enable"
android:summaryOff="@string/header_machine_disable" />
<PreferenceScreen
android:summary="@string/header_machine_preference_summary"
android:title="@string/header_machine_preference_title">
<intent
android:targetClass="com.bamzzz.prefs.HeaderMachineActivity"
android:targetPackage="com.android.systemui" />
</PreferenceScreen>
</PreferenceScreen>
3. Open res/values/strings.xml and add this:
Code:
<string name="header_machine_title">Header Machine</string>
<string name="header_machine_summary">Enable various bg options in expanded header</string>
<string name="header_machine_style_title">Header Machine Style</string>
<string name="header_machine_style_1_title">Default</string>
<string name="header_machine_style_2_title">Color</string>
<string name="header_machine_style_3_title">Custom Image</string>
<string name="header_machine_style_4_title">Timer (OMNI)</string>
<string name="header_machine_bg_style_title">Timer Background Style</string>
<string name="header_machine_bg_style_1_title">Default</string>
<string name="header_machine_bg_style_2_title">Modern</string>
<string name="header_machine_bg_style_3_title">Poly HD</string>
<string name="header_machine_color_title">Header Color</string>
<string name="header_machine_bg_alpha_title">Header BG Alpha</string>
<string name="header_machine_bg_animated_title">BG Animated</string>
<string name="header_machine_bg_image_blur_title">Blur BG</string>
<string name="header_machine_enable">Enable</string>
<string name="header_machine_disable">Disable</string>
<string name="header_machine_preference_title">Header Machine Preference</string>
<string name="header_machine_preference_summary">Set Header Machine Date and Custom Image Background</string>
4. Open res/values/arrays.xml and add this:
Code:
<string-array name="header_machine_bg_style_entries">
<item>@string/header_machine_bg_style_1_title</item>
<item>@string/header_machine_bg_style_2_title</item>
<item>@string/header_machine_bg_style_3_title</item>
</string-array>
<string-array name="header_machine_bg_style_values" translatable="false">
<item>0</item>
<item>1</item>
<item>2</item>
</string-array>
<string-array name="header_machine_style_entries">
<item>@string/header_machine_style_1_title</item>
<item>@string/header_machine_style_2_title</item>
<item>@string/header_machine_style_3_title</item>
<item>@string/header_machine_style_4_title</item>
</string-array>
<string-array name="header_machine_style_values" translatable="false">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
5. Compile Settings. Done.
Attention: Don't rename or modify path of smali from this guide without my permissions !!!
Fix header machine on some devices
Fix header machine on some devices
Download attached file (smaliheader2.zip) and overwrite existing smali.. Then
Replace old script from statusbar_expanded_header.xml with this:
Code:
<com.bamzzz.HeaderMachine
android:id="@id/header_machine"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
Rebuild your SystemUI.. Done.
nicee niceee niceeeeeeeee :3
Yeay mas octo..
Why not for Asus ZenFone 400cg... and is there any way to change battery icon without xposed and disable headsup notification ( except calls ) with out xposed
....
Sent from my ASUS_T00I using XDA Free mobile app
Bro its affect on my notification bg ...my header is still black can you please help me
bamzzz said:
Hi all, this time I want to provide a "Header Machine Guide", this guide for change the background of Expanded Header.. Hopefully it works for all ..
This guide is based on the Asus Zenfone 4S (T00Q) Lollipop firmware.
Feature:
Header BG with option (Default, Color, BG Picker, Timer/Omni)
Header BG Timer/Omni style (Default, Modern, Poly)
Header BG alpha
Header BG animation
Enable/disable blur BG
Add options to set date for Idul Fitri, Idul Adha and birthday
Add Blur BG preview
Requirement:
- Understanding about APK compile/decompile
- APKTool
- Notepad++ (PC)
Step:
Part AsusSystemUI:
1. Decompile AsusSystemUI.apk
2. Copy smali and res folder from guide to your systemui.. Overwrite if exist..
3. Open AndroidManifest.xml
Find:
Code:
<activity android:excludeFromRecents="true" android:name="com.android.keyguard.KeyguardIntruderView" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
</intent-filter>
</activity>
Add this just below:
Code:
<activity android:theme="@android:style/Theme.Holo" android:label="Header Machine Preference" android:icon="@null" android:name="com.bamzzz.prefs.HeaderMachineActivity" android:excludeFromRecents="true" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
4. Open res/layout/asus_status_bar_expanded_header.xml (Asus) or status_bar_expanded_header.xml (Other phone)
Find:
Code:
<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.phone.StatusBarHeaderView android:layout_gravity="@integer/notification_panel_layout_gravity" android:id="@id/header" android:background="@null" android:paddingBottom="@dimen/asus_quicksetting_panel_header_padding_bottom" android:focusable="true" android:clickable="true" android:layout_width="@dimen/notification_panel_width" android:layout_height="@dimen/asus_status_bar_header_height" android:baselineAligned="false" android:paddingStart="@dimen/notification_side_padding" android:paddingEnd="@dimen/notification_side_padding"
xmlns:android="http://schemas.android.com/apk/res/android">
Add this just below:
Code:
<com.bamzzz.HeaderMachine android:id="@id/header_machine"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:scaleType="fitXY"
android:adjustViewBounds="true" />
For Asus Zenfone only:
Find:
Code:
<Button android:textSize="@dimen/asus_notification_clear_all_text_size" android:textColor="@color/asus_notification_clear_all_text_color" android:id="@id/clear_all_button" android:background="@drawable/ic_notify_clear" android:layout_width="wrap_content" android:layout_height="@dimen/asus_notification_clear_all_height" android:text="@string/status_bar_clear_all_button" android:layout_alignParentBottom="true" android:contentDescription="@string/accessibility_clear_all" android:fontFamily="sans-serif" android:layout_marginEnd="@dimen/asus_quicksetting_button_margin_right" android:layout_alignParentEnd="true" />
Add this after "<Button "
Code:
android:layout_marginBottom="@dimen/asus_quicksetting_panel_header_padding_bottom"
Looks like this:
Code:
<Button [COLOR="Blue"]android:layout_marginBottom="@dimen/asus_quicksetting_panel_header_padding_bottom"[/COLOR] android:textSize="@dimen/asus_notification_clear_all_text_size" android:textColor="@color/asus_notification_clear_all_text_color" android:id="@id/clear_all_button" android:background="@drawable/ic_notify_clear" android:layout_width="wrap_content" android:layout_height="@dimen/asus_notification_clear_all_height" android:text="@string/status_bar_clear_all_button" android:layout_alignParentBottom="true" android:contentDescription="@string/accessibility_clear_all" android:fontFamily="sans-serif" android:layout_marginEnd="@dimen/asus_quicksetting_button_margin_right" android:layout_alignParentEnd="true" />
5. Open res/values/ids.xml and add this:
Code:
<item type="id" name="header_machine">false</item>
<item type="id" name="header_machine_layout">false</item>
<item type="id" name="header_machine_time_title">false</item>
<item type="id" name="header_machine_idul_fitri_text">false</item>
<item type="id" name="header_machine_idul_fitri_button">false</item>
<item type="id" name="header_machine_idul_adha_text">false</item>
<item type="id" name="header_machine_idul_adha_button">false</item>
<item type="id" name="header_machine_birthday_text">false</item>
<item type="id" name="header_machine_birthday_button">false</item>
<item type="id" name="header_machine_background_title">false</item>
<item type="id" name="header_machine_background_content">false</item>
<item type="id" name="header_machine_checkBlur">false</item>
<item type="id" name="header_machine_background_button_pick">false</item>
<item type="id" name="header_machine_background_button_set">false</item>
<item type="id" name="header_machine_tip_text">false</item>
6. This step should not be applied !!! Especially for Asus Zenfone, is used to remove the default background or default theme:
Open /smali/com/android/systemui/statusbar/phone/StatusBarHeaderView.smali
Find:
Code:
# instance fields
Add this just below:
Code:
.field private mHeaderMachine:I
Find:
Code:
.method private setImageViewDrawable()V
Then find:
Code:
invoke-virtual {p0, v0}, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->setBackground(Landroid/graphics/drawable/Drawable;)V
Add this just above:
Code:
iget v8, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mHeaderMachine:I
const/4 v9, 0x0
if-ne v8, v9, :cond_brut
const-string v8, "BamzzzHeaderMachine"
new-instance v9, Ljava/lang/StringBuilder;
invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
const-string v10, "Header Machine disable -> "
invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v9
iget v10, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mHeaderMachine:I
invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v9
invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v9
invoke-static {v8, v9}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
Find again:
Code:
invoke-virtual {p0, v0}, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->setBackground(Landroid/graphics/drawable/Drawable;)V
Add this just below:
Code:
goto :goto_brutt
:cond_brut
const-string v8, "BamzzzHeaderMachine"
new-instance v9, Ljava/lang/StringBuilder;
invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
const-string v10, "Header Machine enable -> "
invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v9
iget v10, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mHeaderMachine:I
invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v9
invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v9
invoke-static {v8, v9}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
const/4 v8, 0x0
invoke-virtual {p0, v8}, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->setBackgroundResource(I)V
:goto_brutt
Find:
Code:
.line 199
.local v8, "paddingBottom":I
const/4 v12, 0x0
invoke-virtual {p0, v7, v12, v7, v8}, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->setPaddingRelative(IIII)V
.line 200
return-void
Above it add:
Code:
const/4 v8, 0x0
Find:
Code:
.method public updateEverything()V
Above return void add:
Code:
invoke-static {}, Lcom/bamzzz/HeaderMachine;->getVisibilities()I
move-result v0
iput v0, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mHeaderMachine:I
invoke-direct {p0}, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->setImageViewDrawable()V
7. Recompile SystemUI, then push and reboot phone.
8. Done
Part Settings:
Goto post 2
Attention: Don't rename or modify path of smali from this guide without my permissions !!!
Header Machine demo video: https://youtu.be/TaFGTlTdrMI
Created by [email protected]
fb.me/bamz4ever
http://forum.xda-developers.com/member.php?u=4672359
ZenControl by [email protected] & [email protected]
http://forum.xda-developers.com/android/apps-games/app-rom-control-app-devs-t3146567
Idea from StatusBar Header Machine and some drawables and some methods from OmniROM Project
Thanks to SyahrulLail for idea of Date picker preference
Click to expand...
Click to collapse
I cant
Find: the Code:
<activity android:excludeFromRecents="true" android:name="com.android.keyguard.KeyguardIntruderView" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
</intent-filter>
</activity>
and then I also add the code
<activity android:theme="@android:style/Theme.Holo" android:label="Header Machine Preference" android:icon="@null" android:name="com.bamzzz.prefs.HeaderMachineActivity" android:excludeFromRecents="true" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
,I finish all the guide,I find that Blur Bg cant work, I also cant find Header machine preference MENU in the setting,can you help me,send from my aosp lollipop.
Someone tell me how to make so that the picture overlaps the area allocated for the screenshot?
Baru jajal...?
.Nice guide mbah..?
Sent from my A75 using XDA-Developers Legacy app
@bamzzz
I'm using Asus Padfone S 4.4.2, and I found out there are two related xmls there:
Code:
asus_status_bar_expanded_header.xml
status_bar_expanded_header.xml
Which one should I edit? Could you tell me why there are two similar function xmls existing there, is it the feature of Asus UI?
By the way, do you konw how to change navbar size in Asus UI? I already tried to mod related strings in framework-res.apk, but only the change of status bar worked, the navbar ones didn't.
Big appreciate for your magic:good:
Nice work sir. I like this mod but i never succeeded in Header Machine Preference section in Rom Control
awatheeye said:
Nice work sir. I like this mod but i never succeeded in Header Machine Preference section in Rom Control
Click to expand...
Click to collapse
I will appreciate more if you put everything needed in zen control and upload for downloading because my major problem is with the intent area as seen in my attachment.
Thanks nice
nice
can u give me a clue this guide to apply on miui rom...???

Categories

Resources