[Tutorial][P6810][MOD] Extended Power Menu for ICS - Galaxy Tab 7.7 Android Development

Here is another tutorial which will teach you how to add a powermenu to your stock rom ICS for the P6810 only.
Sources:
http://forum.xda-developers.com/showthread.php?t=1805408
http://forum.xda-developers.com/showthread.php?t=1208320
http://forum.xda-developers.com/showthread.php?t=1801137
Files:
http://www.mediafire.com/?46ta4oa6woe923d,8pcaw7edzd4isk0,8n0ibr7b0127zm5
Step 0: Requirements
Java JRE, JDE and notepad++;
apktool, aapt.exe and autosign (attached in this thread) for editing framework-res.apk;
smali, baksmali;
a framework-res.apk for your device;
an android.policy.jar for your device.
Step 1: Editing framework-res.apk
Create a folder decompiling where you can put all the files.
First decompile the framework-res.apk :
open a terminal (cmd) and type
Code:
java -jar apktool.jar d framework-res.apk framework-res
you'll have a framework-res folder.
Go to
Code:
\Decompiling\framework-res\res\values\
Edit with notepad++ strings.xml and add this line
Code:
<string name="reboot_title">Reboot Options</string>
at the very end and before
Code:
sources>
then open public.xml and add this line :
Code:
<public type="string" name="reboot_title" id="0x01040695" />
The id must be the highest number of the whole file and of course must be unique.
When finished, you have to recompile it :
Code:
apktool b framework-res framework-res.apk
Then copy this file into the autosign folder and launch sign.bat
The framework-res.apk must be the only apk file !
Now you're done with this file.
Step 2: Editing android.policy.jar
open a terminal (cmd) and type
Code:
java -Xmx512m -jar baksmali.jar android.policy.jar
If everything's ok, you'll have an "out" subfolder. Go to
Code:
\out\com\android\internal\policy\impl
copy the three files : GlobalActions$99$1.smali, GlobalActions$99$2.smali, GlobalActions$99.smali. into it.
In file "GlobalActions$99.smali" there is id 0x1110008, you might want to check that this id is same in you roms public.xml (config_sf_slowBlur ). Check also that ids 0x104000a = "ok" -string and 0x104 = "cancel" -string matches in your framework.
Edit with notepad++ GlobalActions.smali
-Search mRestart and check these lines just before mRestart
Code:
new-instance v0, Lcom/android/internal/policy/impl/GlobalActions$5;
Code:
invoke-direct {v0, p0, v1, v2}, Lcom/android/internal/policy/impl/GlobalActions$5;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
the 5 could be different so just be sure to have the same line.
-Change number 6 to 99 (both of them) :
Code:
new-instance v0, Lcom/android/internal/policy/impl/GlobalActions$99;
Code:
invoke-direct {v0, p0, v1, v2}, Lcom/android/internal/policy/impl/GlobalActions$99;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
Now edit with notepad++ GlobalActions$SinglePressAction.smali
-Before line "# instance fields"
paste following code :
Code:
# static fields
.field protected static rebootMode:I
.field protected static final rebootOptions:[Ljava/lang/String;
Then after line "# direct methods"
paste following code :
Code:
.method static constructor <clinit>()V
.registers 3
const/4 v0, 0x3
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, "Recovery"
aput-object v2, v0, v1
const/4 v1, 0x2
const-string v2, "Download"
aput-object v2, v0, v1
sput-object v0, Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;->rebootOptions:[Ljava/lang/String;
return-void
.end method
Compile your jar :
Code:
java -Xmx512m -jar smali.jar out -o classes.dex
You'll obtain a classes.dex file. Open your android.policy.jar original and replace the classes.dex by the new one.
Now you're done !
I put the final work attached to this thread with the other files so you can test it.
Maybe there's another way to do this so feel free to leave comments
Good luck !

Good work mate. :thumbup:
Been having a few issues getting this done previously. Will have a look a see if I've messed anything up and compare my method to this. Probably lack of sleep didn't help....
Hopefully will have time to try again for my upcoming build v2.1 release. Just on the progress of optimizing every apk png. Rather long process......
Sent from my GT-I9300 using xda premium

UpInTheAir said:
Good work mate. :thumbup:
Been having a few issues getting this done previously. Will have a look a see if I've messed anything up and compare my method to this. Probably lack of sleep didn't help....
Hopefully will have time to try again for my upcoming build v2.1 release. Just on the progress of optimizing every apk png. Rather long process......
Sent from my GT-I9300 using xda premium
Click to expand...
Click to collapse
Well I could have forgotten some stuff cause of lack of sleep too
just tell me which step is wrong
Thanks mate

nah... the step is quite thorough... i dont have any problem following it... kind of miss read in some of the other thread that you link... i was tinkering the firmware for extended power menu base of it last time... but still... lack of sleep is not helping.. and reading in those condition is worse...

mengpo said:
Well I could have forgotten some stuff cause of lack of sleep too
just tell me which step is wrong
Thanks mate
Click to expand...
Click to collapse
Sorry, didn't mean to imply there is anything wrong with your guide / process.
Meant that a have just tried using a different guide (and failed with this build) and may have made some errors due to lack of sleep at the time.
I will give your guide a try soon. Will report what kind of success. Edit: Hopefully you will see the results in my next build ! Been a long day, so not the best time to do it right now.
Haven't even had the time to try your kernel too, busy busy busy.

Worked a treat thanks. :good:
Used my own framework-res.apk and android.policy.jar so my current mods would be unaffected.
Saved me a lot of time figuring out where I went wrong with a previous attempt from another guide, probably a typo somewhere I was more careful following your guide, and not so tired
You'll see this mod in my next ROM build v2.1 very soon, . Thanks

UpInTheAir said:
Worked a treat thanks. :good:
Used my own framework-res.apk and android.policy.jar so my current mods would be unaffected.
Saved me a lot of time figuring out where I went wrong with a previous attempt from another guide, probably a typo somewhere I was more careful following your guide, and not so tired
You'll see this mod in my next ROM build v2.1 very soon, . Thanks
Click to expand...
Click to collapse
You're welcome !
I'm so happy (and proud ) my mod will be used in your rom

mengpo said:
Here is another tutorial which will teach you how to add a powermenu to your stock rom ICS for the P6810 only.
Sources:
http://forum.xda-developers.com/showthread.php?t=1805408
http://forum.xda-developers.com/showthread.php?t=1208320
http://forum.xda-developers.com/showthread.php?t=1801137
Files:
http://www.mediafire.com/?46ta4oa6woe923d,8pcaw7edzd4isk0,8n0ibr7b0127zm5
Step 0: Requirements
Java JRE, JDE and notepad++;
apktool, aapt.exe and autosign (attached in this thread) for editing framework-res.apk;
smali, baksmali;
a framework-res.apk for your device;
an android.policy.jar for your device.
Step 1: Editing framework-res.apk
Create a folder decompiling where you can put all the files.
First decompile the framework-res.apk :
open a terminal (cmd) and type
Code:
java -jar apktool.jar d framework-res.apk framework-res
you'll have a framework-res folder.
Go to
Code:
\Decompiling\framework-res\res\values\
Edit with notepad++ strings.xml and add this line
Code:
<string name="reboot_title">Reboot Options</string>
at the very end and before
Code:
sources>
then open public.xml and add this line :
Code:
<public type="string" name="reboot_title" id="0x01040695" />
The id must be the highest number of the whole file and of course must be unique.
When finished, you have to recompile it :
Code:
apktool b framework-res framework-res.apk
Then copy this file into the autosign folder and launch sign.bat
The framework-res.apk must be the only apk file !
Now you're done with this file.
Step 2: Editing android.policy.jar
open a terminal (cmd) and type
Code:
java -Xmx512m -jar baksmali.jar android.policy.jar
If everything's ok, you'll have an "out" subfolder. Go to
Code:
\out\com\android\internal\policy\impl
copy the three files : GlobalActions$99$1.smali, GlobalActions$99$2.smali, GlobalActions$99.smali. into it.
In file "GlobalActions$99.smali" there is id 0x1110008, you might want to check that this id is same in you roms public.xml (config_sf_slowBlur ). Check also that ids 0x104000a = "ok" -string and 0x104 = "cancel" -string matches in your framework.
Edit with notepad++ GlobalActions.smali
-Search mRestart and check these lines just before mRestart
Code:
new-instance v0, Lcom/android/internal/policy/impl/GlobalActions$5;
Code:
invoke-direct {v0, p0, v1, v2}, Lcom/android/internal/policy/impl/GlobalActions$5;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
the 5 could be different so just be sure to have the same line.
-Change number 6 to 99 (both of them) :
Code:
new-instance v0, Lcom/android/internal/policy/impl/GlobalActions$99;
Code:
invoke-direct {v0, p0, v1, v2}, Lcom/android/internal/policy/impl/GlobalActions$99;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
Now edit with notepad++ GlobalActions$SinglePressAction.smali
-Before line "# instance fields"
paste following code :
Code:
# static fields
.field protected static rebootMode:I
.field protected static final rebootOptions:[Ljava/lang/String;
Then after line "# direct methods"
paste following code :
Code:
.method static constructor <clinit>()V
.registers 3
const/4 v0, 0x3
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, "Recovery"
aput-object v2, v0, v1
const/4 v1, 0x2
const-string v2, "Download"
aput-object v2, v0, v1
sput-object v0, Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;->rebootOptions:[Ljava/lang/String;
return-void
.end method
Compile your jar :
Code:
java -Xmx512m -jar smali.jar out -o classes.dex
You'll obtain a classes.dex file. Open your android.policy.jar original and replace the classes.dex by the new one.
Now you're done !
I put the final work attached to this thread with the other files so you can test it.
Maybe there's another way to do this so feel free to leave comments
Good luck !
Click to expand...
Click to collapse
I have started to add reboot and recovery options to my phone MMX a110
The following thread has details of what I've done. Please suggest me to move further.
I am stuck at globalAction.smali
http://forum.xda-developers.com/showthread.php?p=36944844#post36944844

would any of you know how to add home to the powermenu, all guides I could find are for cm7?

Related

[REF] How to add Reboot to power menu (updated 10/21/2010)

this is the final method that will add reboot,recovery and download options
to the power menu updated 10/21/2010
============================================================
Step 1.
the first thing we need to do is add string and image resources to framwork-res
for this example I am using a stock JI6 ROM your resource id's will be different
if on another ROM
use apk_manager to decompile framework-res
open "values\strings.xml" and add our string resources
Code:
<string name="reboot_recovery">Recovery</string>
<string name="reboot_download">Download</string>
<string name="reboot">Reboot</string>
save and close
open "values\public.xml" and assign our strings resource id's
scroll until you get to the end of the "<public type="string"" id list
note the id of the last string, in this example it is "10403c2" sometimes
the id's are out of order so search for "10403c2 + 1" or "10403c3"
if the next id is unused then we can start assigning id's to the strings
we added.
Code:
<public type="string" name="reboot_recovery" id="0x010403c3" />
<public type="string" name="reboot_download" id="0x010403c4" />
<public type="string" name="reboot" id="0x010403c5" />
now is a good time to add the image resources so add your icons to
"res\drawable-hdpi"
and assign id's to them the same way we did for the strings
in this example, using the example icons in the zip file I had
Code:
<public type="drawable" name="reboot" id="0x010803aa" />
<public type="drawable" name="recovery" id="0x010803ab" />
<public type="drawable" name="download" id="0x010803ac" />
save and close
now framework-res has the resources needed for this mod use
apk_manager to compile.
============================================================
Step 2.
next we need to modify Samsung's shutdown method to accept 3 more options
so decompile framework and open "com\android\internal\app\ShutdownThread.smali"
since we are going to pass an integer to ShutdownThread and then evaluate
that integer when the code runs we have to have a spot for the integer so
add this to line 37
Code:
.field public static mReboot:I
then in method run at line 1463 add this code before "invoke-static {}, Landroid/os/Power;->shutdown()V"
Code:
sget v1, Lcom/android/internal/app/ShutdownThread;->mReboot:I
const/4 v2, 0x1
if-eq v1, v2, :reboot
const/4 v2, 0x2
if-eq v1, v2, :rebootRecovery
const/4 v2, 0x3
if-eq v1, v2, :rebootDownload
then after this code on about line 1477
Code:
.line 531
invoke-static {}, Landroid/os/Power;->shutdown()V
.line 532
return-void
add this code
Code:
:reboot
const-string v4, "now"
invoke-static {v4}, Landroid/os/Power;->reboot(Ljava/lang/String;)V
return-void
:rebootRecovery
const-string v4, "recovery"
invoke-static {v4}, Landroid/os/Power;->reboot(Ljava/lang/String;)V
return-void
:rebootDownload
const-string v4, "download"
invoke-static {v4}, Landroid/os/Power;->reboot(Ljava/lang/String;)V
return-void
save and close
compile framework
============================================================
Step 3.
now we are going to add the extra options to the power menu
decompile android.policy
open "com\android\internal\policy\impl\GlobalActions.smali"
the first thing that we need to do is increase the array length by 3
so in method createDialog on line 431 change this
Code:
const/4 v0, 0x3
new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;
to this
Code:
const/4 v0, 0x6
new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;
now add the new menu items this is where the resource id's that we added
to framework-res com into play so on line 457 after "aput-object v2, v0, v1"
add this code
Code:
const/4 v1, 0x3
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$7;
const v3, 0x10803aa # reboot icon resource id
const v4, 0x10403c5 # reboot string resource id
invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$7;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
aput-object v2, v0, v1
const/4 v1, 0x4
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$8;
const v3, 0x10803ab # recovery icon resource id
const v4, 0x10403c3 # recovery string resource id
invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$8;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
aput-object v2, v0, v1
const/4 v1, 0x5
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$9;
const v3, 0x10803ac # download icon resource id
const v4, 0x10403c4 # download string resource id
invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$9;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
aput-object v2, v0, v1
make sure to change the resource id's to match what you added to to framework-res
save and close
next add the code that runs when the menu item is pressed
copy GlobalActions$3.smali and name it GlobalActions$7.smali
open GlobalActions$7 and replace all instances of GlobalActions$3
with GlobalActions$7 then add this code to line 52 before
"invoke-static {v0, v1}, Lcom/android/internal/app/ShutdownThread;->shutdown(Landroid/content/Context;Z)V"
Code:
const/4 v2, 0x1
sput v2, Lcom/android/internal/app/ShutdownThread;->mReboot:I
save and close
copy GlobalActions$3.smali and name it GlobalActions$8.smali
open GlobalActions$8 and replace all instances of GlobalActions$3
with GlobalActions$8 then add this code to line 52 before
"invoke-static {v0, v1}, Lcom/android/internal/app/ShutdownThread;->shutdown(Landroid/content/Context;Z)V"
Code:
const/4 v2, 0x2
sput v2, Lcom/android/internal/app/ShutdownThread;->mReboot:I
save and close
copy GlobalActions$3.smali and name it GlobalActions$9.smali
open GlobalActions$9 and replace all instances of GlobalActions$3
with GlobalActions$9 then add this code to line 52 before
"invoke-static {v0, v1}, Lcom/android/internal/app/ShutdownThread;->shutdown(Landroid/content/Context;Z)V"
Code:
const/4 v2, 0x3
sput v2, Lcom/android/internal/app/ShutdownThread;->mReboot:I
save and close
compile android.policy
done test on the phone.
flash the attached update.zip with the stock updater.
Anyway to get this in a flashable zip? I don't know how to decompile files
BabyBoi.JN said:
Anyway to get this in a flashable zip? I don't know how to decompile files
Click to expand...
Click to collapse
bump Bump bump please
Nice
Sent from my vibrant
BabyBoi.JN said:
Anyway to get this in a flashable zip? I don't know how to decompile files
Click to expand...
Click to collapse
I second that. I miss that option
where is policy file
how to decompile
i use ubuntu
thx
Sent from my SGH-T959 using XDA App
sounds like a great add-in if could be made flashable
adm1jtg said:
sounds like a great add-in if could be made flashable
Click to expand...
Click to collapse
Either that or a how to for dummies version
Sent from Vibrant Frankin Twiz Update3 JI2 modem.bin jac kernel with voodoo lagfix on XDA app with no fc's FINALLY!
daddysays said:
Either that or a how to for dummies version!
Click to expand...
Click to collapse
EXACTLY!!! That's what I need LOL
untermensch said:
someone asked for this so here it is.
decompile android.policy
make a copy of GlobalActions$3.smali and name it to GlobalActions$7.smali open GlobalActions$7.smali
and replace all instances of GlobalActions$3 with GlobalActions$7
replace method onPress with this
Code:
.method public onPress()V
.registers 3
const-string v0, "Reboot Now"
invoke-static {v0}, Landroid/os/Power;->reboot(Ljava/lang/String;)V
return-void
.end method
save and close
now open GlobalActions.smali
and in method createDialog
the first thing that we need to do is increase the array length by 1 so find this
Code:
const/4 v0, 0x3
new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;
and change to
Code:
const/4 v0, 0x4
new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;
next we add the new menu item so on line 457 we add this next bit of code after "aput-object v2, v0, v1"
Code:
const/4 v1, 0x3 # position in the menu array
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$7;
const v3, 0x1080030 # power icon
const v4, 0x10402af # reboot string
invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$7;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
aput-object v2, v0, v1
framework-res already has a string for reboot so no modifications are needed to framework-res
save and close then compile android.policy
Click to expand...
Click to collapse
Hi,
Thanks so much for this, absolutely fantastic work like always!
For anyone that doesn't know how to decompile/compile apk files search for either APK Manager, or smali/baksmali tutorial/help/etc., it should help you out greatly.
And for those that want a flashable .zip, well, here you go, BUT, I'm lazy, so it requires some conditions:
1) You use a rom based on JI6 that's fully deodexed
2) you have previously flashed (or your custom rom included) the epic/puzzle lockscreen mod (also from untermensch)
3) You disable voodoo (if you use it) prior to flashing since this zip attempts to wipe your dalvik-cache
That said, zip should flash fine from clockwork, and all it does is replace your android.policy.jar with one pre-modded for lockscreen & reboot option support, and it wipes your dalvik-cache since that's the safest thing to do after applying any mod, period.
Cheers, =)
s0niqu3 said:
Hi,
Thanks so much for this, absolutely fantastic work like always!
For anyone that doesn't know how to decompile/compile apk files search for either APK Manager, or smali/baksmali tutorial/help/etc., it should help you out greatly.
And for those that want a flashable .zip, well, here you go, BUT, I'm lazy, so it requires some conditions:
1) You use a rom based on JI6 that's fully deodexed
2) you have previously flashed (or your custom rom included) the epic/puzzle lockscreen mod (also from untermensch)
3) You disable voodoo (if you use it) prior to flashing since this zip attempts to wipe your dalvik-cache
That said, zip should flash fine from clockwork, and all it does is replace your android.policy.jar with one pre-modded for lockscreen & reboot option support, and it wipes your dalvik-cache since that's the safest thing to do after applying any mod, period.
Cheers, =)
Click to expand...
Click to collapse
I was just about to upload the zip...
Oh well, beat me to it
s0niqu3 said:
Hi,
Thanks so much for this, absolutely fantastic work like always!
For anyone that doesn't know how to decompile/compile apk files search for either APK Manager, or smali/baksmali tutorial/help/etc., it should help you out greatly.
And for those that want a flashable .zip, well, here you go, BUT, I'm lazy, so it requires some conditions:
1) You use a rom based on JI6 that's fully deodexed
2) you have previously flashed (or your custom rom included) the epic/puzzle lockscreen mod (also from untermensch)
3) You disable voodoo (if you use it) prior to flashing since this zip attempts to wipe your dalvik-cache
That said, zip should flash fine from clockwork, and all it does is replace your android.policy.jar with one pre-modded for lockscreen & reboot option support, and it wipes your dalvik-cache since that's the safest thing to do after applying any mod, period.
Cheers, =)
Click to expand...
Click to collapse
You sir are a gentleman and a scholar
b0ricuaguerrero said:
You sir are a gentleman and a scholar
Click to expand...
Click to collapse
lol,
Appreciate the thought, but wrong gender, =)
b0ricuaguerrero said:
You sir are a gentleman and a scholar
Click to expand...
Click to collapse
LOL perhaps you meant you maam are a babe and a diva. Either way thanks so much for this.
Very nice, thank's for sharing.
Looks like I'm disabling Voodoo once again.
great job. done
Sent from my SGH-T959 using XDA App
Fyi the reboot after install takes longer than after installing a new rom
Sent from my SGH-T959
Many thanks for the file!
...but because I'm lazy and if I'm reading the file poster's req's correctly her version requires I flash a lockscreen I don't currently have, would any Gentleman or Lady be kind enough to build a .zip file which will work on a Stock Vibrant JI6 install?
Thnx!
I just got done flashing and it works great ty
Sent from bionix 1.9.1 jacs oc/uv vodoo kernel

{TUTORIAL}[How To] 4-Way Reboot + Theminig MediaTeK Devices - MTK & Low End Device

{TUTORIAL}[How To] 4-Way Reboot + Theminig MediaTeK Devices - MTK & Low End Device
Hello Everyone,
First Of All and Everything, Let me Thank Some People First To made it possible what I am posting Today.
Credits​@iBotPeaches - Without Him Decompiling and Recompiling any apk is a dream. So we must thank him for this (ApkTool).
@Ticklefish - For His Wonderful Tool TMA. Just loving to work with that at ease,
@Adi Aisiteru Reborn - A Wonderful Person, Very Helpful and have so many nice guides to go through and learn.
@majdinj- A wonderful Guide to get 4-way reboot method.
@bombaybadboy - A nice person and a really a nice contributor to this community.
@joehanh88 - A Good Guide to follow and will help you in everything you do.
@akash akya- A good friend who helped me in doing some nice thing for MediaTek Device and So many guides are also by him to follow with.
@ XDA Forum - Can't Say anything, As Its my school and being a student I will never like to hear anything wrong related to it.
@ To All Other Dev Who Made It possible or If I am including anything from yours so please PM to mention your name in Credits. Please....
Now Let's Star With this Guide :-
-: Transparent Status bar & Notification Full Down:-
​
The Most Common thing to get first but then also a difficult thing to figure it out.
Decompile your SystemUI.apk and go to SystemUI/res/values--
So the First thing is Changing the "Drawables.xml" -
Find this
Code:
<item type="drawable" name="status_bar_background">#[COLOR=Red]3f000000[/COLOR]</item>
Change this RED Values with anything that you want to as accordingly with the HEX Color values.
Wait we are not done with that.
Now Copy these lines at the end of drawable before this line "</resources>"
Code:
<item type="drawable" name="notification_header_bg">#[COLOR=Red]88000000[/COLOR]</item>
<item type="drawable" name="notification_panel_bg">#[COLOR=Red]88000000[/COLOR]</item>
<item type="drawable" name="status_bar_bg_tile">#[COLOR=Red]00000000[/COLOR]</item>
Again Same Change RED values with what your need is.
Now Open "Colors.xml"
and change this line -
Code:
<color name="notification_panel_solid_background">#[COLOR=Red]3f000000[/COLOR]</color>
The Transparency Values are like :-
Code:
#00000000 - black with 100% transparency
#3F000000 - black with 75% transparency
#7F000000 - black with 50% transparency
#BF000000 - black with 25% transparency
Now You need to find some ".9.png" and delete it.
So Go to - SystemUI/res/drwable-hdpi (as per the resolution of your devices).
Notification_panel_bg.9.png
Status_bar_bg_tile.9.png
Notification_header_bg.9.png
Delete this image where ever you find it in your SystemUI.apk
"Notification_panel_bg.9.png"
Deleting this will give you your notification panel transparency.
Now Lets Move To Editing Smali. So now go to SystemUI/smali/com/android/systemui/statusbar/phone/
And Open "PhoneStatusBar$FastColorDrawable.smali"
Find this
Code:
.parameter "canvas"
And in that method change this line
Code:
iget v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$FastColorDrawable;->mColor:I
To This
Code:
const v0, 0x[COLOR=Red]00000000[/COLOR]
. Again change RED to the transparency level to suit your need.
Now Decompile your "android.policy.jar"
And go to android.poliy.jar.out/smali/com/android/internal/policy/impl/---
Open "PhoneWindowManager.smali"
There do like mentioned below.
Delete RED Lines
Code:
.line 2627 ------*******
iget v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mSystemBottom:I
iput v0, p1, Landroid/graphics/Rect;->bottom:I ------ Find This line.
[COLOR=Red]
.line 3061
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mStatusBar:Landroid/view/WindowManagerPolicy$WindowState;
if-eqz v0, :cond_1b
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mStatusBar:Landroid/view/WindowManagerPolicy$WindowState;
invoke-interface {v0}, Landroid/view/WindowManagerPolicy$WindowState;->getSurfaceLayer()I
move-result v0
.line 3063
:goto_1a
return v0
.line 3062
:cond_1b
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mNavigationBar:Landroid/view/WindowManagerPolicy$WindowState;
if-eqz v0, :cond_26
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mNavigationBar:Landroid/view/WindowManagerPolicy$WindowState;
invoke-interface {v0}, Landroid/view/WindowManagerPolicy$WindowState;->getSurfaceLayer()I
move-result v0
goto :goto_1a
[/COLOR]
.line 3063 ------- *****This line number can be different in yours .
:cond_26
const/4 v0, 0x0
[COLOR=Blue]goto :goto_1a[/COLOR] -------- Change this to "[COLOR=Blue]return v0[/COLOR]"
.end method
Make Sure that the line marked with "******" will have a difference of 3.
So After Doing this it will look like this
Code:
.line 2627
iget v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mSystemBottom:I
iput v0, p1, Landroid/graphics/Rect;->bottom:I
.line 2630
:cond_1
const/4 v0, 0x0
return v0
.end method
Now Recompile your SystemUI.apk & android.policy.jar and flash it.
4-Way Reboot Menu - Thanks to majdinj sir​
Decompile Your "android.policy.jar"
Go To android.poliy.jar.out/smali/com/android/internal/policy/impl/
Open GlobalActions$3.smali and find this-***
Code:
invoke-interface {v0, v1}, Landroid/view/WindowManagerPolicy$WindowManagerFuncs;->reboot(Z)V
If its there then proceed and if not then find above line in all files with name "GlobalActions$#.smali" where "#" will be number.
Ok you find that so lets proceed.
Now in the same folder open "GlobalActions.smali"
And Change the lines (There will be two lines only) -
Code:
Lcom/android/internal/policy/impl/GlobalActions$3
Please Note :- You have to find the number same as in which you find the above *** mentioned lines.
So please make sure for this.
Now Change the "3" or "#" to "99" where "#" is the number in which you find the *** lines.
Done That.
Now Open - "GlobalActions$SinglePressAction.smali"
And Do like given -
Add the BLUE lines in that like its given below
Code:
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/android/internal/policy/impl/GlobalActions;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x40a
name = "SinglePressAction"
.end annotation
[COLOR=Blue][COLOR=Black] -----------------------Make Sure the gap will be of 2(two) lines[/COLOR]
# static fields
.field protected static rebootMode:I
.field protected static final rebootOptions:[Ljava/lang/String;[/COLOR]
[COLOR=Blue][COLOR=Black] -----------------------Make Sure the gap will be of 2(two) lines[/COLOR][/COLOR]
# instance fields
.field private final mIcon:Landroid/graphics/drawable/Drawable;
Now Find "#direct methods"
and paste these lines just after this and whithout any gap between "#direct methods" and the lines you pasted.
Code:
.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, "Normal Reboot"
aput-object v2, v0, v1
const/4 v1, 0x1
const-string v2, "Soft Reboot"
aput-object v2, v0, v1
const/4 v1, 0x2
const-string v2, "Hard Reboot"
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
Now Download the given zip file and extract it. Copy all the files of the zip to -
"android.poliy.jar.out/smali/com/android/internal/policy/impl/ here" (here=files downloaded from this guide).
Done That. Now Recompile it and Flash it. Make sure to make a backup before you flash any MOD.
You Successfully Modded these things then Don't Forget To Hit "THANKS" Button for all the persons mentioned in the "CREDITS" section and to Me Also p) and Rate This Thread 5 star.
If you Got in Trouble then post it here. I will be there to help you out. I work as machine but very Unfortunate to say that I am also a human being and I too have Office work, personal life, friends, families, etc. So please have patience. The Time I will see your post, I promise, I will try my best to help you out.
Need More Guides- Find those in post #3.
Want To See My Contributions [ SuperDroid-BOND ]
Though I know, I haven't contributed much to the Community, but here are few of my Works:-
Older Ones (Till 2015)
External Apps Modded :-
SlimKat Camera for CM11 & CM12 ROMs
ROM :-
TURBO-Zet™ ROM for Micromax A110
SLT-Nexus-TSUNAMI for Micromax A110
SLT-HYBRID-Rainbow for Micromax A110
RECOVERY :-
Carliv Touch Recovery & CWM Recovery 6.0.4.0 for Micromax A110 | Cynus T2 | Wiko Cing King
Cannibal Open Touch [COT] Recovery for Micromax A110 | Cynus T2 | Wiko Cing King
MODS :-
1) Sony Xperia Small App For 4.2.2
2) Sony Small Apps For 4.1.1
3) The Hybrid-UI MOD
4) The Transparency MOD
5) The Lockscreen MOD
GUIDES :-
1) The Power Menu + Screenshot GUIDE
2) The 4-Way Reboot Menu Guide
3) The Extra Theme to Device and Moving Toggles to Bottom
#@# My Dev-Host Account
Newer Ones [Since 2017]
MODs :-
1) Sultan SnapCam
ROMs :-
1) Vanir AOSP for OnePlus 3/T Unified
2) ColtOS for OnePlus 3/T Unified
Usefull Links - For MediaTek Buddies & Other Low End Devices
1) MTK Referrence Thread By @akash akya
2) Moving Toggles To the Bottom of Pull Down Menu By BOND1987.
More Will be Added After wards. Just Have Patience......:victory::victory::victory:
BOND1987 said:
1) MTK Referrence Thread By @akash akya
2) Moving Toggles To the Bottom of Pull Down Menu By BOND1987.
More Will be Added After wards. Just Have Patience......:victory::victory::victory:
Click to expand...
Click to collapse
good one... :good:
small tip, also make sure in dimensions (res/values/dimen.xml) :
Code:
<item type="dimen" name="status_bar_icon_drawing_alpha">100.0%</item>
else transparency look bit odd...
Nice work m8 and a well put together guide, here is your first 5☆ :thumbup:
Sent from my GT-I9100 using xda premium
bombaybadboy said:
Nice work m8 and a well put together guide, here is your first 5☆ :thumbup:
Sent from my GT-I9100 using xda premium
Click to expand...
Click to collapse
All of your works sir but with MTK modification.
akash akya said:
good one... :good:
small tip, also make sure in dimensions (res/values/dimen.xml) :
Code:
<item type="dimen" name="status_bar_icon_drawing_alpha">100.0%</item>
else transparency look bit odd...
Click to expand...
Click to collapse
Will add that also brother. I know it's auto dimming feature by "daxgirl".
""Hitting Thanks Don't Cost You Anything, then, Why You All Are Getting Bothered in Doing So. Hitting Thanks Increases My Motivation to Work for this Community....""
Hi Bond, Very nice guide.. Now i'll also give it a try.. :good:
Implementing Auto-Close SystemUI feature
@ Devs @BOND1987 , @akash akya ,
There is no need to edit any thing else but only systemuiservice.smali.....
I have taken these resources from Suvi v12 rom by bsuhas. So actual credits to bsuhas
Just Replace your entire OnClick Method by the below method:-
Code:
[B][COLOR="black"].method public [COLOR="red"]SettingsButton[/COLOR](Landroid/view/View;)V
.locals 3
.parameter "v"
.prologue
.line 2431
new-instance v0, Landroid/content/Intent;
invoke-direct {v0}, Landroid/content/Intent;-><init>()V
.line 2432
const-string v1, "[COLOR="Red"]com.android.settings[/COLOR]"
const-string v2, "[COLOR="red"]com.android.settings.Settings[/COLOR]"
invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->setClassName(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
const/high16 v2, 0x1000
invoke-virtual {v0, v2}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;
move-result-object v0
.line 2433
invoke-virtual {p0, v0}, Landroid/content/Context;->startActivity(Landroid/content/Intent;)V
const-string v1, "statusbar"
invoke-virtual {p0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/app/StatusBarManager;
[COLOR="red"]invoke-virtual {v0}, Landroid/app/StatusBarManager;->collapse()V[/COLOR]
.line 1720
return-void
.end method[/COLOR][/B]
and then make the following changes
* replace red ones with the following -
in the 1st line, give any name to the button u want to define . eg:- .method public ProfileButton(Landroid/view/ViewV
in const-string v1, " * put target class name here*
in const - string v2, " * put the target class name as well as an activity to call it *
for eg:-
in const - string v1 ----- target class is to call the complete app ---------> com.android.contacts
and in const - string v2 ----- add package name + an activity to call it --------> com.android.contacts.activities.PeopleActivity
Lets take an example for defining a method and calling it . i'll call Settings here
Code:
.method public [COLOR="red"]settingsButton[/COLOR](Landroid/view/View;)V
.locals 3
.parameter "v"
.prologue
.line 2431
new-instance v0, Landroid/content/Intent;
invoke-direct {v0}, Landroid/content/Intent;-><init>()V
.line 2432
const-string v1, "[COLOR="red"]com.android.settings[/COLOR]"
const-string v2, "[COLOR="red"]com.android.settings.Settings[/COLOR]"
invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->setClassName(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
const/high16 v2, 0x1000
invoke-virtual {v0, v2}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;
move-result-object v0
.line 2433
invoke-virtual {p0, v0}, Landroid/content/Context;->startActivity(Landroid/content/Intent;)V
const-string v1, "statusbar"
invoke-virtual {p0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/app/StatusBarManager;
invoke-virtual {v0}, Landroid/app/StatusBarManager;->collapse()V
.line 1720
return-void
.end method
after this we have to call it on clicking a tile . so lets define it in the quickpanel_quick_settings_space.xml
Add this wherever you want the tile to appear .
Code:
<RelativeLayout android:id="@id/settings_button" android:background="@drawable/tile_toggle" android:layout_width="125.0px" android:layout_height="150.0px" android:layout_weight="1.0">
<Button android:layout_gravity="center_horizontal" android:background="@drawable/set" android:layout_width="wrap_content" android:layout_height="wrap_content" [COLOR="Red"][SIZE="4"]android:onClick="settingsButton"[/SIZE][/COLOR] />
<TextView android:textSize="14.0dip" android:textColor="#ffffffff" android:gravity="center" android:background="#00000000" android:layout_width="240.0px" android:layout_height="wrap_content" android:layout_marginBottom="3.0px" android:text="Settings" android:singleLine="true" android:layout_alignParentBottom="true" />
</RelativeLayout>
Video to Confirm it working. :highfive:
Sorry if the above explaination is too long :fingers-crossed::fingers-crossed:
easy & nice tut...
@BOND1987
-: Transparent Status bar & Notification Full Down:-
Click to expand...
Click to collapse
4-Way Reboot Menu - Thanks to majdinj sir
Click to expand...
Click to collapse
I've successfully made my own transparent statusbar & 4 way rebooter according to ur guide & works very charm on my stock deodex rom.
thanks alot bro... :good::good:
1 question: how to increase statusbar height?
sir
recovery reboot doesn't work please help
Hi, I tried the 4-way reboot menu and it just replaced the shutdown function on the dialog box. It says reboot, but when I tap it, phone shutsdown. I'm on MT6575 running GB 2.3.6 which doesn't have reboot/restart function.
iZLeeP said:
Hi, I tried the 4-way reboot menu and it just replaced the shutdown function on the dialog box. It says reboot, but when I tap it, phone shutsdown. I'm on MT6575 running GB 2.3.6 which doesn't have reboot/restart function.
Click to expand...
Click to collapse
OK brother,
Upload you android policy. Jar and I'll try to solve this in my free time.
WinchyHanepp said:
recovery reboot doesn't work please help
Click to expand...
Click to collapse
Brother,
Regarding your problem, I asked my ""MAGIC BOWL"" that what's the problem, but....
Come on Guys,
I'm not a astrologer to judge what's gone wrong. I need logs and apps for checking what's the problem.
Sent from my A110 using Tapatalk
SuperDroid-BOND said:
OK brother,
Upload you android policy. Jar and I'll try to solve this in my free time.
Attached file as requested. Thanks mate.
Click to expand...
Click to collapse
Hey @SuperDroid-BOND sir... I tried for transparency but when i recompile the apk then gets this error.. Please can you help me.. Hope you will help me..
See error here :::-
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Abhinav_Rocks said:
Hey @SuperDroid-BOND sir... I tried for transparency but when i recompile the apk then gets this error.. Please can you help me.. Hope you will help me..
See error here :::-
Click to expand...
Click to collapse
Brother,
You have mentioned notification_header_bg two times in your drawable.xml inside the values folder.
Try deleting it. It will recompile easily.
Sent from my A110 using Tapatalk
SuperDroid-BOND said:
Brother,
You have mentioned notification_header_bg two times in your drawable.xml inside the values folder.
Try deleting it. It will recompile easily.
Sent from my A110 using Tapatalk
Click to expand...
Click to collapse
No sir.. Its only one time, See ::
Abhinav_Rocks said:
No sir.. Its only one time, See ::
Click to expand...
Click to collapse
If it's not there then how apktool is giving it's entries 2 times at line number 3 and 14.
If it's not there then get to compile it and if error occurs then give screenshot of the full error.
Sent from my A110 using Tapatalk
SuperDroid-BOND said:
If it's not there then how apktool is giving it's entries 2 times at line number 3 and 14.
If it's not there then get to compile it and if error occurs then give screenshot of the full error.
Sent from my A110 using Tapatalk
Click to expand...
Click to collapse
Sorry sir i m doing mistake.. really sorry.. mistake is that you say.. sorry again.. and now SystemUI.apk is recompiling done..
But in jar file recompiling this error, please help me out ::-
Here is my android.policy.jar file ::- Download
---------- Post added at 01:46 AM ---------- Previous post was at 12:54 AM ----------
Now trying once again.. working awesome.. Thanks a lot bro.. I m beginner and you are GURU of mine and i m CHELA.. I have learn so much from you.. Thanks again sir for this awesome thread with simple steps..
---------- Post added at 02:41 AM ---------- Previous post was at 01:46 AM ----------
Sir.. Can you please tell me whats the work of these lines.. please sir.. and check screen that i m right or wrong..?? If i m wrong then please guide me.. Thanks in advance sir..
Sir please reply.. its only take 2 mint.. Please..
SuperDroid /QUOTE said:
..\Decompiled_jar\android.policy\com\android\internal\policy\impl\GlobalActions$99$1.smali[27,4] Error for input '.parameter': Invalid directive
..\Decompiled_jar\android.policy\com\android\internal\policy\impl\GlobalActions$99$1.smali[42,4] Error for input '.parameter': Invalid directive
..\Decompiled_jar\android.policy\com\android\internal\policy\impl\GlobalActions$99$1.smali[43,4] Error for input '.parameter': Invalid directive
..\Decompiled_jar\android.policy\com\android\internal\policy\impl\GlobalActions$99$1.smali[42,15] mismatched input '"dialog"' expecting END_METHOD_DIRECTIVE
..\Decompiled_jar\android.policy\com\android\internal\policy\impl\GlobalActions$99.smali[78,4] Invalid literal value: 260. Low 16 bits must be zeroed out.
hmmm any advice?
Click to expand...
Click to collapse

[MOD][GUIDE][GB] WIFI & BT ON/OFF Switches on Settings ***HOT***

Hey dudes!
Ace-I Team is back with a new guide. One of the most advanced ICS Features now comes on Gingerbread! Admit it, Everyone has been attracted by this feature! That's why : THIS IS THE MOST WANTED GUIDE FOR GINGERBREAD DEVICES EVER!!
Wifi and bluetooth ON/OFF Switches on Settings!
Requirements :
-APK Multi Tool
-Notepad++
-Sources on the attachments
-High Smali & xml knowledge
-Brain
-Patience
Click to expand...
Click to collapse
Let's go!
PART I
1. Decompile Settings.apk
2. Extract the sources. Copy switch_holo_dark.xml from sources and paste it on drawable folder.
3. Copy the PNGs from the sources and paste them on drawable-mdpi folder.
4. Copy icon_checkbox_preference.xml from the sources and paste it on layout folder.
5. Go to res/values/styles.xml.
Paste this text on the end of the file before
Code:
<style name="Switch">
<item name="android:checkboxStyle">@style/Widget.CompoundButton.CheckBox.Holo.Dark</item>
</style>
<style name="Widget.CompoundButton.CheckBox.Holo.Dark" parent="@android:style/Widget.CompoundButton.CheckBox">
<item name="android:button">@drawable/switch_holo_dark</item>
</style>
6. Go to res/values/public.xml
Paste this text on the end of he file before
Code:
<public type="layout" name="icon_checkbox_preference" id="0x7f03005a" />
</resources>
7. Go to xml/Settings.xml
Replace this :
{
"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"
}
With this :
Code:
<com.android.settings.IconCheckBoxPreference android:title="WIFI" android:key="toggle_wifi" settings:icon="@drawable/ic_settings_wireless" />
<com.android.settings.IconCheckBoxPreference android:title="Bluetooth" android:key="toggle_bluetooth" settings:icon="@drawable/ic_settings_bluetooth2" />
After editing it will look like this :
8. Recompile Settings.
Click to expand...
Click to collapse
PART II
1. Decompile Settings.apk again
2. Go to smali/com/android/settings
3. Copy icon_checkbox_preference.smali from the source on the that folder.
4. Open R$Styleable
- Find :
Code:
# static fields
.field public static final BatteryHistoryChart:[I
Below that paste :
Code:
.field public static final IconPreference:[I
.field public static final IconPreference_icon:I
Click to expand...
Click to collapse
- Find :
Code:
const v1, 0x7f010001
aput v1, v0, v2
Below that paste :
Code:
sput-object v0, Lcom/android/settings/R$styleable;->IconPreference:[I
.line 6450
new-array v0, v3, [I
const v1, 0x7f010001
aput v1, v0, v2
After the edit it will look like this :
Code:
const v1, 0x7f010001
aput v1, v0, v2
sput-object v0, Lcom/android/settings/R$styleable;->IconPreference:[I
.line 6450
new-array v0, v3, [I
const v1, 0x7f010001
aput v1, v0, v2
sput-object v0, Lcom/android/settings/R$styleable;->IconPreferenceScreen:[I
Click to expand...
Click to collapse
5. Open Settings.smali
Below # instance fields paste this text :
Code:
.field private mBtEnabler:Lcom/android/settings/bluetooth/BluetoothEnabler;
.field private mWifiEnabler:Lcom/android/settings/wifi/WifiEnabler;
2 Lines Above # instance fields paste this text :
Code:
# static fields
.field private static final KEY_TOGGLE_BLUETOOTH:Ljava/lang/String; = "toggle_bluetooth"
.field private static final KEY_TOGGLE_WIFI:Ljava/lang/String; = "toggle_wifi"
After edition it will look like this :
Code:
# static fields
.field private static final KEY_TOGGLE_BLUETOOTH:Ljava/lang/String; = "toggle_bluetooth"
.field private static final KEY_TOGGLE_WIFI:Ljava/lang/String; = "toggle_wifi"
# instance fields
.field private mBtEnabler:Lcom/android/settings/bluetooth/BluetoothEnabler;
.field private mWifiEnabler:Lcom/android/settings/wifi/WifiEnabler;
.field private mIntentReceiver:Landroid/content/BroadcastReceiver
;
Click to expand...
Click to collapse
- Find :
Code:
invoke-virtual {p0, v4}, Lcom/android/settings/Settings;->addPreferencesFromResource(I)V
- Below that paste this text :
Code:
const-string v0, "toggle_wifi"
invoke-virtual {p0, v0}, Lcom/android/settings/Settings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
move-result-object v0
check-cast v0, Landroid/preference/CheckBoxPreference;
new-instance v1, Lcom/android/settings/wifi/WifiEnabler;
invoke-direct {v1, p0, v0}, Lcom/android/settings/wifi/WifiEnabler;->(Landroid/content/Context;Landroid/preference/CheckBoxPreference;)V
iput-object v1, p0, Lcom/android/settings/Settings;->mWifiEnabler:Lcom/android/settings/wifi/WifiEnabler;
const-string v0, "toggle_bluetooth"
invoke-virtual {p0, v0}, Lcom/android/settings/Settings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
move-result-object v0
check-cast v0, Landroid/preference/CheckBoxPreference;
new-instance v1, Lcom/android/settings/bluetooth/BluetoothEnabler;
invoke-direct {v1, p0, v0}, Lcom/android/settings/bluetooth/BluetoothEnabler;->(Landroid/content/Context;Landroid/preference/CheckBoxPreference;)V
iput-object v1, p0, Lcom/android/settings/Settings;->mBtEnabler:Lcom/android/settings/bluetooth/BluetoothEnabler;
- Find :
Code:
.method protected onPause()V
- Replace the whole method with this method :
Code:
.method protected onPause()V
.locals 1
invoke-super {p0}, Landroid/preference/PreferenceActivity;->onPause()V
iget-object v0, p0, Lcom/android/settings/Settings;->mWifiEnabler:Lcom/android/settings/wifi/WifiEnabler;
invoke-virtual {v0}, Lcom/android/settings/wifi/WifiEnabler;->pause()V
iget-object v0, p0, Lcom/android/settings/Settings;->mBtEnabler:Lcom/android/settings/bluetooth/BluetoothEnabler;
invoke-virtual {v0}, Lcom/android/settings/bluetooth/BluetoothEnabler;->pause()V
iget-object v0, p0, Lcom/android/settings/Settings;->mIntentReceiver:Landroid/content/BroadcastReceiver;
invoke-virtual {p0, v0}, Lcom/android/settings/Settings;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V
.line 78
return-void
.end method
- Find :
Code:
.line 65
invoke-super {p0}, Landroid/preference/PreferenceActivity;->onResume()V
- Below that paste this text :
Code:
iget-object v1, p0, Lcom/android/settings/Settings;->mWifiEnabler:Lcom/android/settings/wifi/WifiEnabler;
invoke-virtual {v1}, Lcom/android/settings/wifi/WifiEnabler;->resume()V
iget-object v1, p0, Lcom/android/settings/Settings;->mBtEnabler:Lcom/android/settings/bluetooth/BluetoothEnabler;
invoke-virtual {v1}, Lcom/android/settings/bluetooth/BluetoothEnabler;->resume()V
Click to expand...
Click to collapse
8. Follow Part III by iamareebjamal
Click to expand...
Click to collapse
Part III : Adding switched and disabling signature check
Adding Buttons in Settings.apk by custom style and Disabling Signature Verification
If you were successful in accomplishing the above procedure. Be happy, but not too much because the key part is left, and that is - Adding those custom ICS Buttons in Settings by overriding the default GB tickview. Or else, you will get checkboxes instead of Switches. You don't wanna do that? Do you?
Enough talking let's roll
Part III (a)
1. Open AndroidManifest.xml located in decompiled Settings.apk
2. Find this:
Code:
<activity android:label="@string/settings_label_launcher" android:name="Settings"
3. Modify it like this:
Code:
<activity android:theme="@style/Switch" android:label="@string/settings_label_launcher" android:name="Settings"
It means you have to add android:theme="@style/Switch" between <activity and android:label="@string/settings_label_launcher"
4. Save the file.
5. Now, as you have edited the AndroidManifest.xml . Android system won't accept your app and refuse to load it as its signature should be changed.
So, sign the recompile the apk and sign it
6. But again, there's one little problem. Android doesn't load system apps with modified signatures for stability of OS, so your app will disappear from app drawer and if you try to open it from any other source, it will say "App isn't installed"
So?
So, sign ALL system apps and framework apps with same key
...OR...
Follow the workaround in (b) part
Click to expand...
Click to collapse
You may have accomplished the above thing but still something needs to be done to complete the procedure. Believe me, it's the last thing
Android System doesn't accept the apks that are signed by default. So we, here, will render that option obsolete by editing some files.
Let's start
Part III (b)
1. Pull services.jar from /system/framework/
2. Extract it's classes.dex and decompile it via my ROM Tolls
3. Go to com/android/server/PackageManagerService.smali
4. Open it and search for
Code:
.method checkSignaturesLP([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I
5. Look below it, you should see something like this
Code:
.prologue
.line 1936
if-nez p1, :cond_1
6. Add this below .line 1936
Code:
const/4 v6, 0x0
return v6
Finally, it should look like this:
Code:
.method checkSignaturesLP([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I
.locals 7
.parameter "s1"
.parameter "s2"
.prologue
.line 1936
const/4 v6, 0x0
return v6
if-nez p1, :cond_1
7. Save the file and recompile classes.dex and then add it to services.jar
8. Now push services.jar and Settings.apk in their respective places and reboot the phone so that signature check changes are affected
9. Enjoy
Click to expand...
Click to collapse
Click to expand...
Click to collapse
Sources
The source : http://www.mediafire.com/download.php?bvcj2fa8r1lv0h7
PNG source only :
- SGS3 : Adding ASAP
-JellyBean/Holo : Adding ASAP
F.A.Q
Q: SGS3 Switches are small even if the image is large enough?
Solution :
1. Go to Res/layout/icon_check box_preference.xml
2. Find android:layout_width="68.0 px"
3. Change it to "85.0 px"
4. Find android:layout_height="20.0px"
5. Change it to "40.0 px"
Actually changing those pixels will not resize the switch pngs. It will make height's and width's available space larger, therefore switches can be strechted easily on their original size.
Click to expand...
Click to collapse
Click to expand...
Click to collapse
Q: On Part II, when editing .method onPause()V, should I delete only the title "method on pause()V" or from method on pause to .end method?
Solution :
You must replace whole method. Delete the on pause()V method then place the code I have written on the same place.
Click to expand...
Click to collapse
Screenshots:
SGS3
Jelly Bean
​
Credits:
Biggest biggest thanks and full credits to b16h22 for making this awesome mod and his open source heart to share it with us and guiding us through on how to accomplish it and giving us permissions to make this thread
loSconosciuto for Signature Verification Disabling Guide
Click to expand...
Click to collapse
Sniper Killer for starting this initiative
iamareebjamal for fixing the AndroidManifest to display the switches in Settings and applying idea of signature verification
Click to expand...
Click to collapse
Ace-i Team for bringing this to you
More UI Changes for Ace-i... Thanks @Sniper Killer :good:
.....
Give a screenshot of those Wifi & BT ON/OFF Switches on Settings in the OP... :fingers-crossed:
brijeshep said:
More UI Changes for Ace-i... Thanks @Sniper Killer :good:
.....
Give a screenshot of those Wifi & BT ON/OFF Switches on Settings in the OP... :fingers-crossed:
Click to expand...
Click to collapse
Y u only Thank him
Wait till the guide is complete
brijeshep said:
More UI Changes for Ace-i... Thanks @Sniper Killer :good:
.....
Give a screenshot of those Wifi & BT ON/OFF Switches on Settings in the OP... :fingers-crossed:
Click to expand...
Click to collapse
SS on the OP.
And btw, thank areeb too as he found the fix of the image. Follow the tut later. I will upload the sources when areeb will complete editing his post.
Cant wait
Sent from my GT-S5830i using xda premium
This is what i am talking about ...wooohoo
All the devs from ace-i section Rockz
Nice team work .
Thanks for the guide.
Sent from my GT-S5830i using xda app-developers app
brijeshep said:
More UI Changes for Ace-i... Thanks @Sniper Killer :good:
.....
Give a screenshot of those Wifi & BT ON/OFF Switches on Settings in the OP... :fingers-crossed:
Click to expand...
Click to collapse
Brijeshep, next version of Ace-i-Sure. Could you put this mod on your next version ROM? I'm got feeling excited!
Hohoho . Guys! Where is the sourses????
Sent from my GT-S5830i using xda premium
misha1996 said:
Hohoho . Guys! Where is the sourses????
Sent from my GT-S5830i using xda premium
Click to expand...
Click to collapse
**** my computer is broken I will fix it today and will upload sources
Sent from my GT-S5830i using Tapatalk 2
If we edit AndroidManifest.xml we must resign all apk of the rom.
If we not do it, app be work before first wipe. And it will work, if we install it from stokk app(settings for example) if we install it for clean system it will say "not installed"
Sent from my GT-S5830i using xda premium
misha1996 said:
If we edit AndroidManifest.xml we must resign all apk of the rom.
If we not do it, app be work before first wipe. And it will work, if we install it from stokk app(settings for example) if we install it for clean system it will say "not installed"
Sent from my GT-S5830i using xda premium
Click to expand...
Click to collapse
Read my post again.
PS - Part III (b) to be specific
Oh....im noob noob noobest in english:banghead:
And i understand only part A
Else....is it be work with stock settings.apk??
Sent from my GT-S5830i using xda premium
---------- Post added at 06:53 PM ---------- Previous post was at 06:50 PM ----------
Also....can try do update-script with textkey, which be resign all apk, what install
Sent from my GT-S5830i using xda premium
misha1996 said:
If we edit AndroidManifest.xml we must resign all apk of the rom.
If we not do it, app be work before first wipe. And it will work, if we install it from stokk app(settings for example) if we install it for clean system it will say "not installed"
Sent from my GT-S5830i using xda premium
Click to expand...
Click to collapse
As @iamareebjamal has already mentioned,
iamareebjamal said:
Android System doesn't accept the apks that are signed by default. So we, here, will render that option obsolete by editing some files.
Click to expand...
Click to collapse
I'd suggest you to read Part III (b) of the guide.
Hope you got your answers.
What about stock settings.apk?
Sent from my GT-S5830i using xda premium
misha1996 said:
What about stock settings.apk?
Sent from my GT-S5830i using xda premium
Click to expand...
Click to collapse
Not tested but you can give it a try.
Sent from my GT-S5830i using Tapatalk 2

[GUIDE][AOSP KK][4.4.2] 4 Way Reboot Menu (small fix changes)

This is just simple guide to add 4 way boot menu on reboot options. i'm already compare from @cargobr151 thread and finished my mod on 1 hours :cyclops:
I only make this tutorial and attach needed files. Everyone can use it way they want to, but give credit to me first :good:
Guide:
1. decompile your framework-res.apk first, then open public.xml (we really need this)
2. download attachment files first (we need it later)
3. decompile your android.policy.jar
4. now open your GlobalActions.smali and public.xml (from framework-res.apk) on the same time
5. Tricky part, be carefull on this part
6. find this line (another devices might have different number id on reboot button. You find right one by for example tracing reboot icon id from public.xml)
Code:
new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$6;
const v2, 0x108004d
const v3, 0x1040362
invoke-direct {v1, p0, v2, v3}, Lcom/android/internal/policy/impl/GlobalActions$6;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
7. now, we find the smali to call reboot action on power menu. that is GlobalActions$6 (we no need to change line, cz it wont work)
8. now open the attach file, rename the files like the smali above and then open that files, rename all GlobalActions$6 lines like to smali above.
example: my att files called GlobalActions$6, and your smali to call reboot action mode is GlobalActions$7. so, you need to rename the att files to GlobalActions$7 and change all of name the smaliinside from GlobalActions$6 to be GlobalActions$7. i hope you understand, cz i'm bad on english to explanation
9. done for GlobalActions.smali, save it. now, move to GlobalActions$SinglePressAction.smali
10. before line "# instance fields" paste the code below
Code:
# static fields
.field protected static rebootMode:I
.field protected static final rebootOptions:[Ljava/lang/String;
11. then after line "# direct methods" paste the code below
Code:
.method static constructor ()V
.registers 3
const/4 v0, 0x5
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 Boot"
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
const/4 v1, 0x4
const-string v2, "Shutdown"
aput-object v2, v0, v1
sput-object v0, Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;->rebootOptions:[Ljava/lang/String;
return-void
.end method
12. now, we done. save that file. then we move again to the GlobalActions$6 (the files we download earlier)
13. in file "GlobalActions$6.smali" there is id 0x1110010, you need to check that this id is same in your public.xml earlier. if not, chage the id with your id from public.xml, that id called config_sf_slowBlur
14. check also that ids 0x104000a="ok" -string and 0x1040000 = "cancel" -string matches in your public.xml
15. then, follow this guide http://forum.xda-developers.com/showpost.php?p=55357596&postcount=3
16. after done with all, save it. compile the jar file then flash. now you done
Screenshot:
{
"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"
}
Credits:
1. @kahvitahra for him guide 4 way reboot menu for JB
2. @cargobr151 for him mod Reboot mode for Nexus 5
NB:
Sorry if my english very very bad, forgive me :fingers-crossed:
Questions and Answer
A: it will work on any ROM running on Kitkat?
B: hmmm, not sure. but may will little bit different. just try it!
A: Hot reboot is not working!
B: Hot reboot uses command "pkill", so you need to have symlink for that command to the busybox binary. so, you need to download Busybox installer and instal the binary files to make it work
ok, i'm forgot to explaine small changes
1. open your GlobalAction$6.smali and GlobalAction$6$1.smali (from my att files)
2. find this line (line 74)
Lcom/android/internal/policy/impl/GlobalActions;->access$000(Lcom/android/internal/policy/impl/GlobalActionsLandroid/content/Context;
and this line (line 158)
Lcom/android/internal/policy/impl/GlobalActions;->access$000(Lcom/android/internal/policy/impl/GlobalActionsLandroid/content/Context;
3. now you need to change access$000 with your code from GlobalActions.smali (from your android.policy.jar). just find access$000 from your globalactions.smali, then your code must be like this
Code:
.method static synthetic access$000(Lcom/android/internal/policy/impl/GlobalActions;)Landroid/content/Context;
.registers 2
.parameter "x0"
.prologue
.line 94
iget-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mContext:Landroid/content/Context;
return-object v0
.end method
if not, just find this line Lcom/android/internal/policy/impl/GlobalActions;->mContext:Landroid/content/Context; and you'll get your access code
4. replace my code access$000 to your code access
example: my code is access$000 , and your code is access$200. just replace 000 to be 200
5. do it same thing on GlobalActions$6$1.smali. just replace access$000 to your access code
how to add screenshoot on power menu mastah ??
cleverior.ipul said:
how to add screenshoot on power menu mastah ??
Click to expand...
Click to collapse
check this out master http://forum.xda-developers.com/showpost.php?p=52943436&postcount=219
just download 2 attach files and compare with yours
i got errors
can you help me sir about my error's
thanks in advance
HELP master
i got issue can u help me master
tryman87 said:
i got issue can u help me master
Click to expand...
Click to collapse
maybe you miss something, try to rewrite again from begining sir
Done remodding
i start from scratch again but same result.. i already check compared my codes to your tuts but same output ... :crying::crying::crying:
Bug fix
i change the provided method on singlepressaction
.method static constructor ()V
to
.method static constructor <clinit>()V
recompile and success ..
thanks for this tutorial
:laugh:
tryman87 said:
i change the provided method on singlepressaction
.method static constructor ()V
to
.method static constructor <clinit>()V
recompile and success ..
thanks for this tutorial
:laugh:
Click to expand...
Click to collapse
nice. on some case, you need to improvise with your smali to make it works
Any idea for lollipop?
Do we have a tutorial for JB 4.2.2 sir?
ocoot said:
2. download attachment files first (we need it later)
Click to expand...
Click to collapse
You did not explained if these files are copies to the smali folder. the three files from the attached zip
thanks mastah, work on cm11

[GUIDE][MIUI12] Bring back blur to MIUI 12

How to enable the blur effects on MIUI 12
If you have a low-end device, you probably noticed the gray background color on your control center and notification shade. Let's bring back the glorious blur effect by patching MiuiSystemUI.apk.
Prerequisites:
adb
smali/baksmali
zip
a tool to decompile .apk file
Custom Recovery
Common knowledge. I'm not responsible if you bricked your device or caused a thermonuclear war.
### Prepare the tools needed.
Install the tools required for this operation. Use your favorite distro's package manager to install it or clone it from its github repository.
### Pull MiuiSystemUI.apk from your device
Bash:
$ adb pull /system/priv-app/MiuiSystemUI/MiuiSystemUI.apk .
The command above will copy the apk file to the current directory. It's recommended to create a backup. We will be overwriting it later.
### Decompile or Extract the APK
Decompile the APK with your favorite tool. I will use MT Manager, an android application, for this. Go to the extracted folder. It should contain:
assets/
kotlin/
META-INF/
res/
AndroidManifest.xml
classes.dex
resources.arsc
### Disassemble classes.dex
Disassemble it by:
Bash:
$ baksmali d classes.dex
This command should create the out/ folder. It will contain all the .smali files extracted from classes.dex.
Go inside the out/ folder.
### Editing .smali files to enable blur
This is the important part. There are two files we need to edit. The ControlPanelWindowManager.smali that will enable the blur on the control center and StatusBarWindowManager.smali that will enable the blur on the notification shade.
1. Open com/android/systemui/miui/statusbar/phone/ControlPanelWindowManager.smali with your favorite text editor.
2. Find the applyBlurRatio() method. It should be on line 101 to 148. Then change the whole function to:
Code:
.method private applyBlurRatio(F)V
.registers 5
.line 180
invoke-virtual {p0}, Lcom/android/systemui/miui/statusbar/phone/ControlPanelWindowManager;->hasAdded()Z
move-result v0
if-eqz v0, :cond_2b
.line 181
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "setBlurRatio: "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
const-string v1, "ControlPanelWindowManager"
invoke-static {v1, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 182
iget-object v0, p0, Lcom/android/systemui/miui/statusbar/phone/ControlPanelWindowManager;->mLpChanged:Landroid/view/WindowManager$LayoutParams;
iget-object v1, p0, Lcom/android/systemui/miui/statusbar/phone/ControlPanelWindowManager;->mControlPanel:Lcom/android/systemui/miui/statusbar/phone/ControlPanelWindowView;
invoke-virtual {v1}, Landroid/widget/FrameLayout;->getViewRootImpl()Landroid/view/ViewRootImpl;
move-result-object v1
const/4 v2, 0x0
invoke-static {v0, v1, p1, v2}, Landroid/view/SurfaceControlCompat;->setBlur(Landroid/view/WindowManager$LayoutParams;Landroid/view/ViewRootImpl;FI)V
.line 183
invoke-direct {p0}, Lcom/android/systemui/miui/statusbar/phone/ControlPanelWindowManager;->apply()V
:cond_2b
return-void
.end method
3. Save it.
4. Open com/android/systemui/statusbar/phone/StatusBarWindowManager.smali with your favorite text editor.
5. Find the applyBlurRatio() method. It should be on line 294 to 341. Then change the whole function to:
Code:
.method private applyBlurRatio(Lcom/android/systemui/statusbar/phone/StatusBarWindowManager$State;)V
.registers 6
.line 320
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;->mLpChanged:Landroid/view/WindowManager$LayoutParams;
iget-object v1, p0, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;->mStatusBarView:Landroid/view/ViewGroup;
invoke-virtual {v1}, Landroid/view/ViewGroup;->getViewRootImpl()Landroid/view/ViewRootImpl;
move-result-object v1
iget v2, p1, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager$State;->blurRatio:F
const/4 v3, 0x0
invoke-static {v0, v1, v2, v3}, Landroid/view/SurfaceControlCompat;->setBlur(Landroid/view/WindowManager$LayoutParams;Landroid/view/ViewRootImpl;FI)V
.line 323
iget-object p0, p0, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;->mBlurRatioListeners:Ljava/util/List;
invoke-interface {p0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object p0
:goto_14
invoke-interface {p0}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_26
invoke-interface {p0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager$BlurRatioChangedListener;
.line 324
iget v1, p1, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager$State;->blurRatio:F
invoke-interface {v0, v1}, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager$BlurRatioChangedListener;->onBlurRatioChanged(F)V
goto :goto_14
:cond_26
return-void
.end method
6. Save it.
### Assemble .smali files back to classes.dex
Inside out/ folder. Execute the command below to assemble all smali files back to classes.dex
Bash:
$ smali a . -o classes.dex
This should create a new classes.dex on the current directory.
### Build a new MiuiSystemUI.apk
Move or copy the compiled classes.dex to the extracted MiuiSystemUI.apk. This should replace the old one. Then delete the out/ folder. We don't need it anymore. Create a new MiuiSystemUI.apk by:
Bash:
$ zip -r MiuiSystemUI.apk assets/ kotlin/ META-INF/ res/ AndroidManifest.xml classes.dex resources.arsc
### Push the new MiuiSystemUI.apk
Go to your custom recovery, mount /system, then push the modified MiuiSystemUI.apk. Note that if you're rooted with Magisk, you can create a magisk module instead.
This will overwrite the default or stock MiuiSystemUI.apk so make sure you made a backup before doing this.
Bash:
$ adb push MiuiSystemUI.apk /system/priv-app/MiuiSystemUI/
### Finish!
Reboot.
PS.
This is my first contribution so go easy on me.
PPS.
Your warranty is now void. I'm not responsible if you bricked your device. You are choosing to make this modifications.
PPPS.
Another method of enabling blur using apktool.
Worked on my Redmi Note 8T with MIUI Global 12.0.3.0. Thanks A LOT!
HitFan said:
Worked on my Redmi Note 8T with MIUI Global 12.0.3.0. Thanks A LOT!
Click to expand...
Click to collapse
Can you help me if I give you the miuisystemui apk? I don't have access to laptop or pc, will you please help me?
HitFan said:
Worked on my Redmi Note 8T with MIUI Global 12.0.3.0. Thanks A LOT!
Click to expand...
Click to collapse
please make a video how it works.. i have the same phone and the same version.
Godspeed999 said:
Can you help me if I give you the miuisystemui apk? I don't have access to laptop or pc, will you please help me?
Click to expand...
Click to collapse
Here you go it's for Redmi Note 8T Miui 12.0.3.0 Global
Ahsene said:
please make a video how it works.. i have the same phone and the same version.
Click to expand...
Click to collapse
Here's video:
anyone can help me? i dont know how to do the process and i want the apk file or magisk module link for miui 12.0.5 ginkgo global please
HitFan said:
Here's video:
Click to expand...
Click to collapse
I am not able to convert the smali files back to classes.dex, can you help me out by telling me exactly what you did? Thanks in advance
ilovecookieee said:
How to enable the blur effects on MIUI 12
If you have a low-end device, you probably noticed the gray background color on your control center and notification shade. Let's bring back the glorious blur effect by patching MiuiSystemUI.apk.
Prerequisites:
adb
smali/baksmali
zip
a tool to decompile .apk file
Custom Recovery
Common knowledge. I'm not responsible if you bricked your device or caused a thermonuclear war.
### Prepare the tools needed.
Install the tools required for this operation. Use your favorite distro's package manager to install it or clone it from its github repository.
### Pull MiuiSystemUI.apk from your device
Bash:
$ adb pull /system/priv-app/MiuiSystemUI/MiuiSystemUI.apk .
The command above will copy the apk file to the current directory. It's recommended to create a backup. We will be overwriting it later.
### Decompile or Extract the APK
Decompile the APK with your favorite tool. I will use MT Manager, an android application, for this. Go to the extracted folder. It should contain:
assets/
kotlin/
META-INF/
res/
AndroidManifest.xml
classes.dex
resources.arsc
### Disassemble classes.dex
Disassemble it by:
Bash:
$ baksmali d classes.dex
This command should create the out/ folder. It will contain all the .smali files extracted from classes.dex.
Go inside the out/ folder.
### Editing .smali files to enable blur
This is the important part. There are two files we need to edit. The ControlPanelWindowManager.smali that will enable the blur on the control center and StatusBarWindowManager.smali that will enable the blur on the notification shade.
1. Open com/android/systemui/miui/statusbar/phone/ControlPanelWindowManager.smali with your favorite text editor.
2. Find the applyBlurRatio() method. It should be on line 101 to 148. Then change the whole function to:
Code:
.method private applyBlurRatio(F)V
.registers 5
.line 180
invoke-virtual {p0}, Lcom/android/systemui/miui/statusbar/phone/ControlPanelWindowManager;->hasAdded()Z
move-result v0
if-eqz v0, :cond_2b
.line 181
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "setBlurRatio: "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
const-string v1, "ControlPanelWindowManager"
invoke-static {v1, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 182
iget-object v0, p0, Lcom/android/systemui/miui/statusbar/phone/ControlPanelWindowManager;->mLpChanged:Landroid/view/WindowManager$LayoutParams;
iget-object v1, p0, Lcom/android/systemui/miui/statusbar/phone/ControlPanelWindowManager;->mControlPanel:Lcom/android/systemui/miui/statusbar/phone/ControlPanelWindowView;
invoke-virtual {v1}, Landroid/widget/FrameLayout;->getViewRootImpl()Landroid/view/ViewRootImpl;
move-result-object v1
const/4 v2, 0x0
invoke-static {v0, v1, p1, v2}, Landroid/view/SurfaceControlCompat;->setBlur(Landroid/view/WindowManager$LayoutParams;Landroid/view/ViewRootImpl;FI)V
.line 183
invoke-direct {p0}, Lcom/android/systemui/miui/statusbar/phone/ControlPanelWindowManager;->apply()V
:cond_2b
return-void
.end method
3. Save it.
4. Open com/android/systemui/statusbar/phone/StatusBarWindowManager.smali with your favorite text editor.
5. Find the applyBlurRatio() method. It should be on line 294 to 341. Then change the whole function to:
Code:
.method private applyBlurRatio(Lcom/android/systemui/statusbar/phone/StatusBarWindowManager$State;)V
.registers 6
.line 320
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;->mLpChanged:Landroid/view/WindowManager$LayoutParams;
iget-object v1, p0, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;->mStatusBarView:Landroid/view/ViewGroup;
invoke-virtual {v1}, Landroid/view/ViewGroup;->getViewRootImpl()Landroid/view/ViewRootImpl;
move-result-object v1
iget v2, p1, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager$State;->blurRatio:F
const/4 v3, 0x0
invoke-static {v0, v1, v2, v3}, Landroid/view/SurfaceControlCompat;->setBlur(Landroid/view/WindowManager$LayoutParams;Landroid/view/ViewRootImpl;FI)V
.line 323
iget-object p0, p0, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;->mBlurRatioListeners:Ljava/util/List;
invoke-interface {p0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object p0
:goto_14
invoke-interface {p0}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_26
invoke-interface {p0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager$BlurRatioChangedListener;
.line 324
iget v1, p1, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager$State;->blurRatio:F
invoke-interface {v0, v1}, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager$BlurRatioChangedListener;->onBlurRatioChanged(F)V
goto :goto_14
:cond_26
return-void
.end method
6. Save it.
### Assemble .smali files back to classes.dex
Inside out/ folder. Execute the command below to assemble all smali files back to classes.dex
Bash:
$ smali a . -o classes.dex
This should create a new classes.dex on the current directory.
### Build a new MiuiSystemUI.apk
Move or copy the compiled classes.dex to the extracted MiuiSystemUI.apk. This should replace the old one. Then delete the out/ folder. We don't need it anymore. Create a new MiuiSystemUI.apk by:
Bash:
$ zip -r MiuiSystemUI.apk assets/ kotlin/ META-INF/ res/ AndroidManifest.xml classes.dex resources.arsc
### Push the new MiuiSystemUI.apk
Go to your custom recovery, mount /system, then push the modified MiuiSystemUI.apk. Note that if you're rooted with Magisk, you can create a magisk module instead.
This will overwrite the default or stock MiuiSystemUI.apk so make sure you made a backup before doing this.
Bash:
$ adb push MiuiSystemUI.apk /system/priv-app/MiuiSystemUI/
### Finish!
Reboot.
PS.
This is my first contribution so go easy on me.
PPS.
Your warranty is now void. I'm not responsible if you bricked your device. You are choosing to make this modifications.
Click to expand...
Click to collapse
(Sorry for the dumb question )Is there any way to push the apk without root and custom recovery?
sudo_s said:
(Sorry for the dumb question )Is there any way to push the apk without root and custom recovery?
Click to expand...
Click to collapse
Probably not man , you need admin permissions and for that you either need a rooted device or custom recovery. BTW i tried this whole thing and it didnt work( Redmi 8a). Whats your device?
Tech x 125 said:
Probably not man , you need admin permissions and for that you either need a rooted device or custom recovery. BTW i tried this whole thing and it didnt work( Redmi 8a). Whats your device?
Click to expand...
Click to collapse
Mine is Redmi note 10,
Tech x 125 said:
Probably not man , you need admin permissions and for that you either need a rooted device or custom recovery. BTW i tried this whole thing and it didnt work( Redmi 8a). Whats your device?
Click to expand...
Click to collapse
That's what I thought, guess I've to wait till my bootloader gets unlocked. Mine is Redmi Note 10
gomeeez11 said:
anyone can help me? i dont know how to do the process and i want the apk file or magisk module link for miui 12.0.5 ginkgo global please
Click to expand...
Click to collapse
I have the magisk module for redmi note 8 Global 12.0.3, I hope I helped!
Can You Please Post The Apk For The Xiaomi Redmi Note 10 ?
The global version miui 12.0.10
batamam said:
I have the magisk module for redmi note 8 Global 12.0.3, I hope I helped!
Click to expand...
Click to collapse
Please patch and made a magisk mofule for me. Redmi Note 9
shawkath646 said:
Please patch and made a magisk mofule for me. Redmi Note 9
Click to expand...
Click to collapse
Doing that for you, reaching you back when I'm done
Thank you so much for your tutorial! Worked like a charm.
For those who want it, here's my patched MiuiSystemUI.apk for the Redmi Note 8T EEA [12.0.3].
[UNTESTED ON OTHER VERSIONS/PHONES, BE SURE TO BACKUP YOUR ORIGINAL]
shawkath646 said:
Please patch and made a magisk mofule for me. Redmi Note 9
Click to expand...
Click to collapse
Here it is, no need for the oat folder. Just replace this in recovery mode and you're good to go.
Rigby103_epic said:
Here it is, no need for the oat folder. Just replace this in recovery mode and you're good to go.
Click to expand...
Click to collapse
I thank you too much, I am the owner of the same terminal, but I still do not understand how to pass the file to the file if the system is in read mode, please notify the person who requested the patch if It really worked for him
Also, I wish I could do the same with my own hands, would you be so kind as to attach a folder with all the necessary files? If it is not much annoying, I await your answer, greetings
Rigby103_epic said:
Doing that for you, reaching you back when I'm done
Click to expand...
Click to collapse
Can you make one for Redmi 9C?
Thel_Vadam said:
I thank you too much, I am the owner of the same terminal, but I still do not understand how to pass the file to the file if the system is in read mode, please notify the person who requested the patch if It really worked for him
Also, I wish I could do the same with my own hands, would you be so kind as to attach a folder with all the necessary files? If it is not much annoying, I await your answer, greetings
Click to expand...
Click to collapse
You gotta go into recovery, file manager and then go to system/priv-app/MiuiSystemUI and replace the apk in there ^^

Categories

Resources