[BRAINSTORM] Increasing album art thumbnail resolution - Droid Incredible Android Development

Something I've noticed: if I place a large jpeg (like 1000x1000) inside of my mp3s, the album art will show up at a lower resolution in places like the lock screen. I think this is because of something called MediaStore that keeps a databse of thumbnails of all the album art on the phone, among many other things.
Applications use this instead of reading directly from the files for convenience. The whole point of this thread is to find out how to change the resolution of the pictures stored in this database (I'd recommend 480x480 or 800x800) so that they will look crisp even if blown up to fill the whole screen.
Anyone know if this is something that can be modified outside of the source code for android? If so, how? I think I know how! Read the second post to see!

Okay... so I did some digging, and I need your help, xda community. If you have a dev enviornment set up for AOSP froyo development I was wondering if:
On line 2685 (or so, the function called makeThumbInternal) in MediaProvider.java could someone change this:
Code:
// request a reasonably sized output image
// TODO: don't hardcode the size
while (opts.outHeight > 320 || opts.outWidth > 320) {
opts.outHeight /= 2;
opts.outWidth /= 2;
opts.inSampleSize *= 2;
}
to something like this:
Code:
// request a reasonably sized output image for people with phones made after 2008
// TODO: don't hardcode the size
while (opts.outHeight > 1000|| opts.outWidth > 1000) {
opts.outHeight /= 2;
opts.outWidth /= 2;
opts.inSampleSize *= 2;
}
and then post the modified binary.
I have no clue if the modified aosp binary will work on HTC-built roms, but I can't imagine testing it will do much harm! Any help would be GREATLY appreciated!
EDIT: Also, does anyone know how to force a manual rebuild of the album art database?

Perhaps another way would be to force the rebuilding of the database manually via an app that will have the size hard-coded to... 600x600 maybe?
Anyone wanna chime in?

What about this: android.provider.MediaStore.Images.Media.StoreThumbnail()
There is a static method called insertImage() in MediaStore that seems to use the method above. It also is hard coding a size.
Code:
.line 639
.local v1, miniThumb:Landroid/graphics/Bitmap;
const/high16 v4, 0x4248
const/high16 v5, 0x4248
const/4 v6, 0x3
move-object v0, p0
invoke-static/range {v0 .. v6}, Landroid/provider/MediaStore$Images$Media;
->StoreThumbnail(Landroid/content/ContentResolver;Landroid/graphics/Bitmap;
JFFI)Landroid/graphics/Bitmap;

ihtfp69 said:
What about this: android.provider.MediaStore.Images.Media.StoreThumbnail()
There is a static method called insertImage() in MediaStore that seems to use the method above. It also is hard coding a size.
Code:
.line 639
.local v1, miniThumb:Landroid/graphics/Bitmap;
const/high16 v4, 0x4248
const/high16 v5, 0x4248
const/4 v6, 0x3
move-object v0, p0
invoke-static/range {v0 .. v6}, Landroid/provider/MediaStore$Images$Media;
->StoreThumbnail(Landroid/content/ContentResolver;Landroid/graphics/Bitmap;
JFFI)Landroid/graphics/Bitmap;
Click to expand...
Click to collapse
Where'd you find the binary? And how'd you decompile it?
...and can you change that value to something higher to see if my theory's true?

ihtfp69 said:
What about this: android.provider.MediaStore.Images.Media.StoreThumbnail()
There is a static method called insertImage() in MediaStore that seems to use the method above. It also is hard coding a size.
Code:
.line 639
.local v1, miniThumb:Landroid/graphics/Bitmap;
const/high16 v4, 0x4248
const/high16 v5, 0x4248
const/4 v6, 0x3
move-object v0, p0
invoke-static/range {v0 .. v6}, Landroid/provider/MediaStore$Images$Media;
->StoreThumbnail(Landroid/content/ContentResolver;Landroid/graphics/Bitmap;
JFFI)Landroid/graphics/Bitmap;
Click to expand...
Click to collapse
Dude, you amaze me!

jermaine151 said:
Dude, you amaze me!
Click to expand...
Click to collapse
Now you too can be amazed from the comfort of your own home!
http://forum.xda-developers.com/showthread.php?t=640592
EDIT: Anyway... so have you tried it yet?

I was already in there the other day merging koush's media scanner with HTC's.
I haven't tried changing the thumbnails yet. I'm not sure I would have any way to test the results. You would probably be in a better position to test since you noticed the degrade. I'm more interested in increasing the resolution of contact pictures with an incoming/ongoing phone call. Someone else had fixed this before so I know it's possible.

The best way to test it is to import a bunch of new albums into the phone it's never seen before after patching mediascanner, so it generates new thumbnails.
As for the contact thumbnail generator, maybe you should grep the entire source for android and search for something like "generatethumbnail" or something? I remember seeing a google help topic about this very problem of yours and a google employee showed up and said, "we'll take care of it". I'm sure you can find it if you look around.
If you have a patched binary, could you upload it?

OK, I made some changes to a few files. I either doubled or tripled the values. Let me know the results. Oh, and I'm not responsible for this borking your phone.
For a true test, you may want to do a full wipe, push this to your phone and then reboot.
Download test framework -- > framework.jar

ihtfp69 said:
OK, I made some changes to a few files. I either doubled or tripled the values. Let me know the results. Oh, and I'm not responsible for this borking your phone.
For a true test, you may want to do a full wipe, push this to your phone and then reboot.
Download test framework -- > framework.jar
Click to expand...
Click to collapse
Seems to fail that pesky signature check... it just bootloops... good thing I did a nandroid!
EDIT: I may have spoken too soon... It seems to be rebuilding the dalvik cache like it would on first boot... I'll give it another shot and report back. This is what the adb is reporting:
Code:
D/dalvikvm( 205): DexOpt: load 10ms, verify 75ms, opt 2ms
D/installd( 107): DexInv: --- END '/system/app/HtcPhotoWidget.apk' (success) ---
I/dalvikvm( 140): DexOpt: mismatch dep signature for '/data/dalvik-cache/[email protected]@[email protected]'
D/installd( 107): DexInv: --- BEGIN '/system/app/com.htc.WeatherWidget.apk' ---
D/dalvikvm( 206): creating instr width table
D/dalvikvm( 206): DexOpt: load 19ms, verify 111ms, opt 3ms
D/installd( 107): DexInv: --- END '/system/app/com.htc.WeatherWidget.apk' (success) ---
I/dalvikvm( 140): DexOpt: mismatch dep signature for '/data/dalvik-cache/[email protected]@[email protected]'
D/installd( 107): DexInv: --- BEGIN '/system/app/DownloadProvider.apk' ---

Okay... so after wiping /data/ and the cache, the thumbnails seem to be exactly the same. No change...
Do you know where on the phone the thumbs are stored?

/data/data/com.android.providers.media/databases

Deleted the whole folder and still as low-res as always. This is on a fresh wipe BTW. I found some other "Android" directories on both my SD card AND internal storage and I deleted them too, which seemed to actually make the database rebuild. Still, low-res garbage

They have been barking on the google development page about the low res contact pics for a very long time.
If you guys find a fix, maybe you could post it there so Google can add it to the next build. They either don't care or can't figure it out.
This should be a top priority in my opinion as Android phones are marketed as multimedia devices.

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

[GUIDE]SystemUi.apk Control Widgets Porting

I'm editing this thread to now be a guide on how I was able port the QP from the i9000.
Here's how it was ported:
First I downloaded the i9000's (SGS) stock deodexed Systemui.apk and decompiled
Next I decompiled the SystemUI.apk from the Nexus S in apk manager 4.7 (4.9 gave me issues when attempting to recompile)
Once you decompile the SystemUI.apk from the i9000, navigate to out/smali/com/android/systemui/statusbar
You'll notice a folder in there called quickpanel. Open the same folder on the decompiled Nexus systemui.apk and copy the entire quickpanel folder to the Nexus. Now you have to edit all the xmls in the res folder, start with status bar expanded.xml in the res/layout. Then ids.xml, then strings.xml, then public.xml in your res/values folder. Basically your going to add in every value from the i9000 that starts with "quickpanel". The public is a doozy, you have to assign the new values their own unique hex value. You should really be familiar with the hex naming scheme in public before attempting this, it's easy to screw up but worse case scenario is it won't compile for you. The status_bar_expanded in the layout folder, you only want to add the top line to your file don't overwrite any of the xml files from the i9000, only merge the pieces of code that call the widget into display.
Next you have to move on to the smali code. Navigate to the decompiled folder res/values/ from both phones and open public.xml. After, navigate to /out/smali/com/android/systemui/statusbar/quickpanel/ from both phones, and open the autorotationsettingbutton.smali. What your going to be looking for first, is the hex codes that appear in public.xml.
Code:
.line 67
.local v2, rootView:Landroid/view/View;
const v5, 0x7f090023
Code:
.line 68
.local v0, icon:Landroid/widget/ImageView;
const v5, 0x7f090025
Code:
.line 82
return-void
.line 72
:pswitch_0
const v1, 0x7f020087
.line 73
const v4, 0x7f020085
.line 74
goto :goto_0
.line 76
:pswitch_1
const v1, 0x7f020086
.line 77
const v4, 0x7f020084
goto :goto_0
Each of these hex codes "0x7f0200xx" match up to a drawable in publix.xml. Start with the i9000 systemui.apk and see what picture it's pointing to by searching the number in the public.xml, then move over to the Nexus S systemui.apk and open the public (That you already modded and added the values in for the quickpanel items) and match to the name of the drawable in the i9000, to the name in public from Nexus, then copy the New hex code from the Nexus public to the autorotationsettingbutton.smali. This way your new smali file will be pointing to the correct drawable in the Nexus systemui.apk. Note all the way at the bottom of the smali file in both phones is 1 more hex value to change. Just scroll down to almost the bottom and look for another number that looks like the previous ones. Change that final hex and save your work. Now open all the other files ie bluetoothsettingsbutton gpssettingsbutton soundsettingsbutton, wifisettingsbutoon. Repeat the same steps for changing the hex values for picture display.
Now open the wifisettingsbutton.smali and we have to mod the code since our phones don't access the wifi the same.
Code:
.line 63
nop
:pswitch_data_0
.packed-switch 0x0
:pswitch_2
:pswitch_1
:pswitch_2
:pswitch_0
[B]:pswitch_1[/B]
.end packed-switch
.end method
In this code in wifisettingsbutton, the final line switch_1 is added, it's not present in the original. You must adjust this value.
Code:
.line 123
iget-object v1, p0, Lcom/android/systemui/statusbar/quickpanel/WifiSettingButton;->mWifiManager:Landroid/net/wifi/WifiManager;
const/4 v2, 0x1
invoke-virtual {v1, v2}, Landroid/net/wifi/WifiManager;->setWifiEnabledDialog(Z)Z
goto :goto_0
.end method
Code:
.line 123
iget-object v1, p0, Lcom/android/systemui/statusbar/quickpanel/WifiSettingButton;->mWifiManager:Landroid/net/wifi/WifiManager;
const/4 v2, 0x1
invoke-virtual {v1, v2}, Landroid/net/wifi/WifiManager;->setWifiEnabled(Z)Z
goto :goto_0
.end method
In the above two codes, the first is the i9000 wifisettingsbutton, notice the line >setWifiEnabledDialogue(Z)Z and under it the >setWifiEnabled(Z)Z, you must edit out the dialogue to keep it from erroing on the Nexus.
Up to now you have the code in place for this all to work, but you don't have the code in place to actually display the widget. Back out of the /quickpanel/ folder in file explorer and you should be in the /statusbar/ folder. Look for the smali file statusbarservice.smali
Search for the line .method private makeStatusBarView(Landroid/content/ContextV.
Mod the first line to look like this:
Code:
.locals 12
.parameter "context"
.prologue
const/4 v11, 0x0
const v10, 0x7f09000d
const/4 v9, 0x0
const/16 v8, 0x8
then your going to scroll down if your using notepad++ you'll look for line #776, you need to add in this line of code from the i9000
Code:
.line 371
const v6, 0x7f030006
invoke-static {p1, v6, v9}, Landroid/view/View;->inflate(Landroid/content/Context;ILandroid/view/ViewGroup;)Landroid/view/View;
move-result-object v5
check-cast v5, Lcom/android/systemui/statusbar/quickpanel/QuickSettingsView;
.line 373
.local v5, qsv:Lcom/android/systemui/statusbar/quickpanel/QuickSettingsView;
iget-object v6, p0, Lcom/android/systemui/statusbar/StatusBarService;->mExpandedView:Lcom/android/systemui/statusbar/ExpandedView;
invoke-virtual {v6, v5, v11}, Lcom/android/systemui/statusbar/ExpandedView;->addView(Landroid/view/View;I)V
.line 386
return-void
.end method
search for the same code inside the statusbarservice.smali from the i9000 source and you'll notice some changes like the last line invoke-virtual{v6, v5, v11} we can't use the same values as the i9000 because there is more code in that file than we need at the moment in the Nexus, so I had to figure out what numbers were compatible to both the phones. Also take note of this line
.line 371
const v6, 0x7f030006
This is calling an XML file into view that controls how the quickpanel looks on your phone. The number 0x7f03006 may very it depends on when you added the quickpanel items into public.xml, what value you gave the item quickpanelsettings. Quick panel settings is an xml file that can be found in the res/layout/ of the i9000 source systemui.apk and must be transferred over to the Nexus S systemui.apk res/layout/ as well.
This is all a broad guide to get you started, if you need more assistance, don't PM me, post here so everyone can learn together.
Here are all the source files from the i9000 and the properly modded files of the Nexus Systemui.apk
QuickPanel.zip
{
"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"
}
Would the help you're looking for be concurrent with the status bar issues being worked out in cm7?
Sent from my Nexus S 4G using Tapatalk
Have no clue tbh
I'm leaning toward the smali not calling the r.layout.quick_panel_settings.xml is it
Sent from my SPH-D700 using Tapatalk
Have u tried eclipse. It is generally pretty Good at telling u where the missing links are.
Sent from my Nexus S 4G using XDA Premium App
Looks like the framework.jar is going to have to be modded to accomplish this. My eyes are bleeding looking all this smali code but I did find one little snippet of code in the framework classes.dex located in com/android/internal/statusbar/
StatusBarNotification.smali
Code:
.method public isMiniCon()Z
.registers 2
.prologue
.line 126
iget-object v0, p0, Lcom/android/internal/statusbar/StatusBarNotification;->notification:Landroid/app/Notification;
iget v0, v0, Landroid/app/Notification;->twQuickPanelEvent:I
and-int/lit8 v0, v0, 0x1f
if-eqz v0, :cond_a
const/4 v0, 0x1
:goto_9
return v0
:cond_a
const/4 v0, 0x0
goto :goto_9
.end method
I incorporated this into our framework.jar recompiled and flashed. No display in the status bar still but no errors at all from the phone. I'm getting there but have to head to work now
Getting closer
Sent from my Nexus S 4G using Tapatalk
Dang! That looks fantastic! Good work man
suomaf said:
Dang! That looks fantastic! Good work man
Click to expand...
Click to collapse
Thanks been at it long time, can't get the on click listeners to work so the buttons don't click yet they just show up
Sent from my Nexus S 4G using Tapatalk
Now that's progress, good work!
Sent from my Nexus S 4G using XDA Premium App
raiderep said:
Now that's progress, good work!
Sent from my Nexus S 4G using XDA Premium App
Click to expand...
Click to collapse
Care to join in? I need fresh eyes mine are stumped I can catch you up to where I am
Sent from my SPH-D700 using Tapatalk
dreamsforgotten said:
Care to join in? I need fresh eyes mine are stumped I can catch you up to where I am
Sent from my SPH-D700 using Tapatalk
Click to expand...
Click to collapse
I know what you mean, sometimes you need to step back for a bit. Not sure where you're at on it but I'd be glad to have a look.
raiderep said:
I know what you mean, sometimes you need to step back for a bit. Not sure where you're at on it but I'd be glad to have a look.
Click to expand...
Click to collapse
I'll make you a zip matter of fact pm your email and I'll invite you in my dropbox share to centralize the work. I'll add in a txt change log of what files are modded tell you where I'm stuck, need to track down quick panel container its referenced in id and public
Sent from my Nexus S 4G using Tapatalk
dreamsforgotten said:
I'll make you a zip matter of fact pm your email and I'll invite you in my dropbox share to centralize the work. I'll add in a txt change log of what files are modded tell you where I'm stuck, need to track down quick panel container its referenced in id and public
Sent from my Nexus S 4G using Tapatalk
Click to expand...
Click to collapse
pm ur way...
Sent from my Nexus S 4G using XDA Premium App
Quick question, when you are done.do you think this would work on a nexus s i9100 t? The non 4g version?
suomaf said:
Quick question, when you are done.do you think this would work on a nexus s i9100 t? The non 4g version?
Click to expand...
Click to collapse
I'm sure you'll have to mod the files to match. It won't hurt to flash it and test but you'll have to compare the public.xml hex codes, the smali hex values inthe quick panel smali files.
Sent from my Nexus S 4G using Tapatalk
Progress update:
I'm am definitely on the verge of a release. I was hoping to contain all the code right inside the SystemUi.apk and there is still a slim chance I can mod the smali in there to speak with our framework.jar right. If not you'll have to flash SystemUi.apk and a modded framework.jar. Porting this to the non 4g version should be no harder than this was. I'm not going to port it, however I'll help out anyone who is willing to each step of the way. What works, auto rotation is done, works on and off. Gps is done, works just fine. Sound works 100%. Bluetooth, and wifi; however, do not work. Bluetooth turns on and off but the icon jumps over 1 slot and covers up the gps icon. You can then click the gps icon and get it to return to a gps image but I need to work this out. Wifi, don't work at all. It force closes the entire SystemUi.apk and you loose your status bar. I was able to get some good clean logcats and know where all the issues are located. It's only a matter of time to get this 100%. Now the last thing which is non important and will only take a second, is the length of the widget taking up all the real estate. That will be worked out as well.
dreamsforgotten said:
Progress update:
.. Porting this to the non 4g version should be no harder than this was. I'm not going to port it, however I'll help out anyone who is willing to each step of the way....
Click to expand...
Click to collapse
I would like to have a go at it, but I got no (ZERO/NADA/KAPUT) experience with this at all. I am the sort that believes in learn by doing however, if you are willing to help out, I could always do the grunt work. I have done a few android development tutorials but I don't think that they will help in this.
Very nice progress on this, I'm sure you'll get it done for us
raiderep said:
Very nice progress on this, I'm sure you'll get it done for us
Click to expand...
Click to collapse
I'm trying my ass off I'm using smali compiled for the i9000 sgs, and the handling of bluetooth and wifi are the only two settings that are different however searching through the decompiled frameworks.jar from both I'm just not seeing it.
Sent from my Nexus S 4G using Tapatalk
suomaf said:
I would like to have a go at it, but I got no (ZERO/NADA/KAPUT) experience with this at all. I am the sort that believes in learn by doing however, if you are willing to help out, I could always do the grunt work. I have done a few android development tutorials but I don't think that they will help in this.
Click to expand...
Click to collapse
You can do it with my help you just have to edit what I tell you so far its not too much to edit to point to our phones its hours of searching for the java files that the app is using. When its done there is no searching left I just show you the files. You have to edit public only cause your phone don't have 4g hex codes. Its not hard when you have a guide to do it.
Sent from my Nexus S 4G using Tapatalk

[Guide]Official MIUI Port Guide Translation

Hi guys,i translated the key part of this guide,untill now,this guide is not completed ,if it updated ,i'll update this thread too
and until now,our MIUI PORT TEAM have these guys:
me,gabwerkz,redy2006
N00BY0815 and SquaDrive after read this post and if you want to join in plz let me know anyone else wants to join in are welcomed
===========================================line
1.A Sample For Smali
imagane that there's a Hello worlk application,we install the apk and open it,we can see a blackscreen and at the first line written:Hello world!
ok,this is a simple app.now we decompile it.
===================
we get a folder,then find the HelloActivity.smali,there's its content:
Code:
.class public Lcom/example/android/helloactivity/HelloActivity;
.super Landroid/app/Activity;
.source "HelloActivity.java"
# direct methods
.method public constructor <init>()V
.locals 0
.prologue
.line 27
invoke-direct {p0}, Landroid/app/Activity;-><init>()V
return-void
.end method
# virtual methods
.method public onCreate(Landroid/os/Bundle;)V
.locals 2
.parameter "savedInstanceState"
.prologue
.line 33
invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V
.line 37
const/high16 v1, 0x7f03
invoke-virtual {p0, v1},
Lcom/example/android/helloactivity/HelloActivity;->setContentView(I)V
.line 38
const/high16 v1, 0x7f05
invoke-virtual {p0, v1},
Lcom/example/android/helloactivity/HelloActivity;->findViewById(I)Landroid/view/View;
move-result-object v0
check-cast v0, Landroid/widget/TextView;
.line 39
.local v0, txtView:android/widget/TextView;
const/high16 v1, 0x7f04
invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(I)V
.line 40
return-void
.end method
"#" refers to notes.
begin with a dot named "annotations".
".line" means line number,it mainly used for debug.
.metho and .end method means a method's starting and endding.
more code plz goto http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html
now we want to change the "Hello,world!" into "Happy,Craker!",what should we do?
in this smali
.lne 39 is
Code:
.local v0, txtView:android/widget/TextView;
const/high16 v1, 0x7f04
invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(I)V
and actually the source code is
Code:
txtView.setText(R.string.hello_activity_text_text)
here we can see it define a textview with R.string.hello_activity_text_text ,and i guess the string "Hello world!" is in it.
now we could not change the string,but we can replace it by change it directly
but how we do it in smali?
here we go
Code:
.line 39
.local v0, txtView:android/widget/TextView;
const-string v1, "Happy, Cracker!"
invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
ps.i can't explane it more clearly,but we can see we replace the id with our string.
==========================
2.Porting MIUI Framework
Before starting i should tell us :all porting is based on deodexed files.and there's a stock android rom and miui rom to show you a example to understand how we make the porting work.
the main idea is change the smali code to port it.cause we can't get the souce code of miui,and by this way we can port it to our phone too.
the three files we should touch is :framework.jar ,android.policy.jar andservices.jar.they are the "core" of android system
there's an attach file download and open it we can see:
porting-miui/
|-----------------android
|------------framework.jar
|------------services.jar
|------------android.policy.jar
|------------------miui
|----------framework.jar
|----------services.jar
|----------android.policy.jar
|-----------framework-res/
|-----------framework-miui-res.apk
the android folder is from stock android ,miui folder is miui's files,and we need your phone's files here too.and in this guide we assume your phone is I9100.now we should decompile all of them and compare,to "patch" miui things to your phone.
that means ,we need to compare stock files with our files,compare stock files with miui files
i.porting resources
decompile framework-res.apk,all the resources in miui we need porting to our rom,so copy them to your compiled framework-res folder and then recompile it.
framework-miui-res.apk is a resouces package,all the miui apps need it.in our rom we can find RES_cappuccino.apk,RES_sui.apk and RES_model.apk.
usually miui's resource's id is started with 0x03,and the stock rom has two resouce package,framework-res.apk is started with 0x01 and another is started with 0x02.so if your phone has more than two package,you need contact with us.in the future we'll considering make the resouce's id started with 0x06 in miui.
ii.after we finish the decompile we can use the script rmline.sh to delete all the lines started with .line to make us more easier to compare the difference with two smali code.but backup the original decomplied files first plz.we can debug from it.
then,if you based on linux,you'd try meld to compare,if you are on windows,use beyoun compare
between stock and miui,we can see there's a lot of new classes which started with Miui,and a new miui folder,just copy those new files and folders to our stock folders(with .line)
in the attach file,there's a change-list file,which list what miui did change.maybe it's a little different with what we compared by ourselves,but it's nop (dummy instruction),it caused by apktool,so we don't need to care it,just compare listed files.
there are 3 solutions
1.ex. ActivityThread.smali,miui changed the method "getTopLevelResources",but i9100's and stock is the same,this is the easiest situation and we can replace the miui code into our files happily
2.also in ActivityThread.smali,miui changed the another method "applyConfigurationToResourcesLocked",and after comparation,we can see miui changed this method,so i9100 does.then what should we do?let's see the miui's code first
Code:
.method final applyConfigurationToResourcesLocked(Landroid/content/res/Configuration;)Z
invoke-virtual {v5, p1}, Landroid/content/res/Configuration;->updateFrom(Landroid/content/res/Configuration;)I
move-result v0
.local v0, changes:I
invoke-static {v0}, Landroid/app/MiuiThemeHelper;->handleExtraConfigurationChanges(I)V
invoke-virtual {p0, v7}, Landroid/app/ActivityThread;->getDisplayMetricsLocked(Z)Landroid/util/DisplayMetrics;
move-result-object v1
.local v1, dm:Landroid/util/DisplayMetrics;
at line 5 is what miui changed.before that,we should know some rule about smali
all the local variable is started with "v"
.locals 8 means this method use 8 local variables.
all the parameters are started by "p".and local variable and parameters started from 0.for all the nonstatic method,p0 means itself,i.e "this" pointer.
here we can see miui added a new static method,the code like this we call it linear code.it as one entry and one exit.and in compiler it called basic block.
so we just need to copy this block and paste into 9100's files at the same position,and we done.
3.for example,in Resources.smali,miui changed the "loadDrawable" method.here's the code
Code:
.method loadDrawable(Landroid/util/TypedValue;I)Landroid/graphics/drawable/Drawable;
.end local v8 #e:Ljava/lang/Exception;
.end local v13 #rnf:Landroid/content/res/Resources$NotFoundException;
:cond_6
invoke-virtual/range {p0 .. p2},
Landroid/content/res/Resources;->loadOverlayDrawable(Landroid/util/TypedValue;I)Landroid/graphics/drawable/Drawable;
move-result-object v6
if-nez v6, :cond_1
:try_start_1
move-object/from16 v0, p0
from line 6 to line 9 is what miui added.then we compare 9100 and stock android,we can find it's totally different.then how should we do now?
the key is find the added code's entry and exit.
at line 4 we see a ":cond_6",it says there should be a goto command to this :cond_6.so we got to find where used the :cond_6 and we finally got this:
Code:
const-string v15, ".xml"
invoke-virtual {v9, v15}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
move-result v15
if-eqz v15, :cond_6
read this code block carefully,and seems it is check if the string "v9" is ending with ".xml",if not,goto :cond_6 .ok ,let's go to see 9100's framework.
so we search ".xml" in the loadDrable method.find this:
Code:
const-string v17, ".xml"
move-object v0, v10
move-object/from16 v1, v17
invoke-virtual {v0, v1}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
move-result v17
if-eqz v17, :cond_b
the logic is same as which in miui hmm?so goto :cond_b ,what we can see is totally same as miui's :cond_6 right? so we are sure this is where miui changed
look at the exit,miui has two exit point
one is if-nez v6, :cond_1 ,if so,goto :cond_1,if not,go on.so let's see what the :cond_1 did
here's cond_1's code
Code:
:cond_1
:goto_1
if-eqz v6, :cond_2
move-object/from16 v0, p1
iget v0, v0, Landroid/util/TypedValue;->changingConfigurations:I
and in 9100's file we can find this
Code:
:cond_1
:goto_1
if-eqz v7, :cond_2
move-object/from16 v0, p1
iget v0, v0, Landroid/util/TypedValue;->changingConfigurations:I
this time it check the v7's value,so we should add this into 9100
Code:
invoke-virtual/range {p0 .. p2},
Landroid/content/res/Resources;->loadOverlayDrawable(Landroid/util/TypedValue;I)Landroid/graphics/drawable/Drawable;
move-result-object v7
if-nez v7, :cond_1
a little dizzy hmm?take a break time and go back
iii.and the last we'll talk about inner class.
every inner class have a separete smali file.
e. ActivityThread$1.smali
if it is a Anonymous class,the name should be "outer class+$+number",else it should be "outer class+$+inner class"as its name.
if a inner class use outer class's privte method,the compiler will auto fill a static function like this:
Code:
public class Hello {
public class A {
void func() {
setup();
}
}
private void setup() {
}
we use the outer class's setup method in inner class A's "func" method.and we'll get the smali code:
part of Hello$A.smali
Code:
# virtual methods
.method func()V
.locals 1
.prologue
.line 5
iget-object v0, p0, LHello$A;->this$0:LHello;
#calls: LHello;->setup()V
invoke-static {v0}, LHello;->access$000(LHello;)V
.line 6
return-void
.end method
part of Hello.smali
Code:
.method static synthetic access$000(LHello;)V
.locals 0
.parameter
.prologue
.line 1
invoke-direct {p0}, LHello;->setup()V
return-void
.end method
we can see the compiler auto made a access$000 method,if we use a outer class's private method in a more complicate inner class,it'll made a new method,but every class may have various new class name,it changes a lot .compare it carefully,find the private method and find a name that you ever seened.
iiii.Finally there are some advices:
1.careful,find where to add miui's code
2.notice the local variable number
3.step by step,if you done a part of port,recompile it to see if it work
4.find a problem is not neccessary,use adb logcat and find what caused the problem.
5.more practice and you'll handle the smali code
==================================
because of my bad english ,if you can understand what i mean,plz point me out and i'll correct it as i can
if you think this post may help you,press the thanks button
here's the attachment:
http://www.multiupload.com/I33A07PRTF
For God Sake..
ahahahaha...
My head goin crazy...><..
maybe i need a little walk by learn..
after read those stuff i got fired up..
i want to learn Android from this..
can u guys teaching me little by little??
if so, count me on..i'm ready for testing every single build
and ready to burst my brain to learn this stuff..
SquaDrive said:
For God Sake..
ahahahaha...
My head goin crazy...><..
maybe i need a little walk by learn..
after read those stuff i got fired up..
i want to learn Android from this..
can u guys teaching me little by little??
if so, count me on..i'm ready for testing every single build
and ready to burst my brain to learn this stuff..
Click to expand...
Click to collapse
just use search...
after i tranlated this guide,i'd say i've understand a part of the "how to",and i'll gonna have a try based on v20n
dxdiag32 said:
after i tranlated this guide,i'd say i've understand a part of the "how to",and i'll gonna have a try based on v20n
Click to expand...
Click to collapse
Nice... and I'm just waiting here for your progress... LOL
Man, you got moves like jagger.
good luck dxdiag
Is there some progress?
Sent from my LG-P970 using XDA App
I would like to help, but I have too work now...
Good luck!
I think Huexxx should start porting MIUI to ours blacks xd His rom is good at this moment so he can make some break and create MIUI
doooh !
I really would offer my help but the only dev related thing I know is scripting with nsis. I don't know coding even if I'm pretty sure scripting and coding have similar principles. I don't even know what deodexing / zipaligning mean
As I learned everything by myself I know that all guides can't do 100% of the job. Learning is the key.
So I'm not sure if I can contribute but it will be a pleasure to join to your work.
Any news guys ?
Sent from my LG-P970 using xda premium

Guide: enable CRT effect for MT6577 JB phones

so after trying endless number of times including analyzing the smalis of a dozen guides for crt effect and the mysterious libsurfacelinger losing hwcomposer error in logcat which causes the phone to soft reboot after crt animation, i finally have gotten it to work, so let us begin
1st off we need to decompile services.jar and open up smali/com/android/server/PowerManagerService$ScreenBrightnessAnimator.smali
look for this line (code in LIME might look different in your smali)
Code:
.line 2716
.restart local[COLOR="Lime"] v1 [/COLOR] #turningOff:Z
:[COLOR="Lime"]cond_e[/COLOR]
add this after the code, note color in LIME might be different in your smali
Code:
iget-object v4, p0, Lcom/android/server/PowerManagerService$ScreenBrightnessAnimator;->this$0:Lcom/android/server/PowerManagerService;
const/16 v3, 0x10
#calls: Lcom/android/server/PowerManagerService;->nativeStartSurfaceFlingerAnimation(I)V
invoke-static {v4, v3}, Lcom/android/server/PowerManagerService;->access$[COLOR="Lime"]7100[/COLOR](Lcom/android/server/PowerManagerService;I)V
to make sure what access$ yours is, open up PowerManagerService.smali and look for somethings that looks like this
Code:
.method static synthetic access[COLOR="Red"]$XXXX[/COLOR](Lcom/android/server/PowerManagerService;I)V
.registers 2
.parameter "x0"
.parameter "x1"
.prologue
.line 110
invoke-direct {p0, p1}, Lcom/android/server/PowerManagerService;->nativeStartSurfaceFlingerAnimation(I)V
return-void
.end method
NOTE the $XXXX in RED as this is what you should put in your PowerManagerService$ScreenBrightnessAnimator.smali
Finally it should look like this afterwards( code in RED is what we added and color in LIME is your access$ which in my case was 7100)
Code:
.line 2716
.restart local v1 #turningOff:Z
:cond_e
[COLOR="Red"] iget-object v4, p0, Lcom/android/server/PowerManagerService$ScreenBrightnessAnimator;->this$0:Lcom/android/server/PowerManagerService;
const/16 v3, 0x10
#calls: Lcom/android/server/PowerManagerService;->nativeStartSurfaceFlingerAnimation(I)V
invoke-static {v4, v3}, Lcom/android/server/PowerManagerService;->access$[COLOR="Lime"]7100[/COLOR](Lcom/android/server/PowerManagerService;I)V[/COLOR]
iget-object v2, p0, Lcom/android/server/PowerManagerService$ScreenBrightnessAnimator;->this$0:Lcom/android/server/PowerManagerService;
const/4 v3, 0x1
#setter for: Lcom/android/server/PowerManagerService;->mWaitKeyguardDraw:Z
invoke-static {v2, v3}, Lcom/android/server/PowerManagerService;->access$2002(Lcom/android/server/PowerManagerService;Z)Z
now recompile and put classes.dex back to android.policy.jar.
and lastly download the attached zip add your android.policy.jar and flash it, or extract and push manually the files to their corresponding folders
reboot, or just run
pkill zygote
from terminal as root and voila you should have crt effect working now,
alternative way is framework-res.apk method, just decompile it and open up /res/values/bools.xml
look for somehing like
config_animateScreenLights
Click to expand...
Click to collapse
and change its value from TRUE to FALSE
and flash the zip, although this method will not show crt effect if your window animations speed is 0.5 and below while smali method crt will work regardless if you set your animations or not in developer settings
CREDITS TO
sorg - for his help in tipping me on whats causing the errors in my logcats
sphinx02 - i based this on his guide
Click to expand...
Click to collapse
Reserved in case I need it for something
Okay so I really did need this for something...
Anyway here is where ill put the devices that didnt work with it
1. Thl w7
the general is, it might not work on mt6577 running android 4.1.2, already have two reports on 4,1,2 as not working
Thats it for now, just report if it didnt work on your device guys
Sent from my H100 using xda app-developers app
thirdzcee said:
so after trying endless number of times including analyzing the smalis of a dozen guides for crt effect and the mysterious libsurfacelinger losing hwcomposer error in logcat which causes the phone to soft reboot after crt animation, i finally have gotten it to work, so let us begin
1st off we need to decompile services.jar and open up smali/com/android/server/PowerManagerService$ScreenBrightnessAnimator.smali
look for this line (code in LIME might look different in your smali)
Code:
.line 2716
.restart local[COLOR="Lime"] v1 [/COLOR] #turningOff:Z
:[COLOR="Lime"]cond_e[/COLOR]
add this after the code, note color in LIME might be different in your smali
Code:
iget-object v4, p0, Lcom/android/server/PowerManagerService$ScreenBrightnessAnimator;->this$0:Lcom/android/server/PowerManagerService;
const/16 v3, 0x10
#calls: Lcom/android/server/PowerManagerService;->nativeStartSurfaceFlingerAnimation(I)V
invoke-static {v4, v3}, Lcom/android/server/PowerManagerService;->access$[COLOR="Lime"]7100[/COLOR](Lcom/android/server/PowerManagerService;I)V
to make sure what access$ yours is, open up PowerManagerService.smali and look for somethings that looks like this
Code:
.method static synthetic access[COLOR="Red"]$XXXX[/COLOR](Lcom/android/server/PowerManagerService;I)V
.registers 2
.parameter "x0"
.parameter "x1"
.prologue
.line 110
invoke-direct {p0, p1}, Lcom/android/server/PowerManagerService;->nativeStartSurfaceFlingerAnimation(I)V
return-void
.end method
NOTE the $XXXX in RED as this is what you should put in your PowerManagerService$ScreenBrightnessAnimator.smali
Finally it should look like this afterwards( code in RED is what we added and color in LIME is your access$ which in my case was 7100)
Code:
.line 2716
.restart local v1 #turningOff:Z
:cond_e
[COLOR="Red"] iget-object v4, p0, Lcom/android/server/PowerManagerService$ScreenBrightnessAnimator;->this$0:Lcom/android/server/PowerManagerService;
const/16 v3, 0x10
#calls: Lcom/android/server/PowerManagerService;->nativeStartSurfaceFlingerAnimation(I)V
invoke-static {v4, v3}, Lcom/android/server/PowerManagerService;->access$[COLOR="Lime"]7100[/COLOR](Lcom/android/server/PowerManagerService;I)V[/COLOR]
iget-object v2, p0, Lcom/android/server/PowerManagerService$ScreenBrightnessAnimator;->this$0:Lcom/android/server/PowerManagerService;
const/4 v3, 0x1
#setter for: Lcom/android/server/PowerManagerService;->mWaitKeyguardDraw:Z
invoke-static {v2, v3}, Lcom/android/server/PowerManagerService;->access$2002(Lcom/android/server/PowerManagerService;Z)Z
now recompile and put classes.dex back to android.policy.jar.
and lastly download the attached zip add your android.policy.jar and flash it, or extract and push manually the files to their corresponding folders
reboot, or just run
pkill zygote
from terminal as root and voila you should have crt effect working now,
alternative way is framework-res.apk method, just decompile it and open up /res/values/bools.xml
look for somehing like
and change its value to TRUE
and flash the zip, although this method will not show crt effect if your window animations speed is 0.5 and below while smali method crt will work regardless if you set your animations or not in developer settings
Click to expand...
Click to collapse
goid one bro, i will try...
but for editing framework-res.apk
actually we have to change, true to false... afaik.... btw it doesn't work in my device.... (jb)...
Sent from my IRIS_501 using xda premium
akash akya said:
goid one bro, i will try...
but for editing framework-res.apk
actually we have to change, true to false... afaik.... btw it doesn't work in my device.... (jb)...
Sent from my IRIS_501 using xda premium
Click to expand...
Click to collapse
Oh I wasnt sure, will recheck again as I was just basing it on memory
But
It should work after flashing the zip which contains a more completely built hwcomposer, youll notice if you previously had hwcomposer issues in logcat before theyll go away after flashing the new one
Sent from my H100 using xda app-developers app
thirdzcee said:
Oh I wasnt sure, will recheck again as I was just basing it on memory
But
It should work after flashing the zip which contains a more completely built hwcomposer, youll notice if you previously had hwcomposer issues in logcat before theyll go away after flashing the new one
Sent from my H100 using xda app-developers app
Click to expand...
Click to collapse
working like a charm bro...
akash akya said:
working like a charm bro...
Click to expand...
Click to collapse
Great:thumbup::thumbup::thumbup:
Sent from my H100 using xda app-developers app
Thanks for guide...
Got working on my MMX A110........
thirdzcee said:
so after trying endless number of times including analyzing the smalis of a dozen guides for crt effect and the mysterious libsurfacelinger losing hwcomposer error in logcat which causes the phone to soft reboot after crt animation, i finally have gotten it to work, so let us begin
1st off we need to decompile services.jar and open up smali/com/android/server/PowerManagerService$ScreenBrightnessAnimator.smali
look for this line (code in LIME might look different in your smali)
Code:
.line 2716
.restart local[COLOR="Lime"] v1 [/COLOR] #turningOff:Z
:[COLOR="Lime"]cond_e[/COLOR]
add this after the code, note color in LIME might be different in your smali
Code:
iget-object v4, p0, Lcom/android/server/PowerManagerService$ScreenBrightnessAnimator;->this$0:Lcom/android/server/PowerManagerService;
const/16 v3, 0x10
#calls: Lcom/android/server/PowerManagerService;->nativeStartSurfaceFlingerAnimation(I)V
invoke-static {v4, v3}, Lcom/android/server/PowerManagerService;->access$[COLOR="Lime"]7100[/COLOR](Lcom/android/server/PowerManagerService;I)V
to make sure what access$ yours is, open up PowerManagerService.smali and look for somethings that looks like this
Code:
.method static synthetic access[COLOR="Red"]$XXXX[/COLOR](Lcom/android/server/PowerManagerService;I)V
.registers 2
.parameter "x0"
.parameter "x1"
.prologue
.line 110
invoke-direct {p0, p1}, Lcom/android/server/PowerManagerService;->nativeStartSurfaceFlingerAnimation(I)V
return-void
.end method
NOTE the $XXXX in RED as this is what you should put in your PowerManagerService$ScreenBrightnessAnimator.smali
Finally it should look like this afterwards( code in RED is what we added and color in LIME is your access$ which in my case was 7100)
Code:
.line 2716
.restart local v1 #turningOff:Z
:cond_e
[COLOR="Red"] iget-object v4, p0, Lcom/android/server/PowerManagerService$ScreenBrightnessAnimator;->this$0:Lcom/android/server/PowerManagerService;
const/16 v3, 0x10
#calls: Lcom/android/server/PowerManagerService;->nativeStartSurfaceFlingerAnimation(I)V
invoke-static {v4, v3}, Lcom/android/server/PowerManagerService;->access$[COLOR="Lime"]7100[/COLOR](Lcom/android/server/PowerManagerService;I)V[/COLOR]
iget-object v2, p0, Lcom/android/server/PowerManagerService$ScreenBrightnessAnimator;->this$0:Lcom/android/server/PowerManagerService;
const/4 v3, 0x1
#setter for: Lcom/android/server/PowerManagerService;->mWaitKeyguardDraw:Z
invoke-static {v2, v3}, Lcom/android/server/PowerManagerService;->access$2002(Lcom/android/server/PowerManagerService;Z)Z
now recompile and put classes.dex back to android.policy.jar.
and lastly download the attached zip add your android.policy.jar and flash it, or extract and push manually the files to their corresponding folders
reboot, or just run
pkill zygote
from terminal as root and voila you should have crt effect working now,
alternative way is framework-res.apk method, just decompile it and open up /res/values/bools.xml
look for somehing like
and change its value from TRUE to FALSE
and flash the zip, although this method will not show crt effect if your window animations speed is 0.5 and below while smali method crt will work regardless if you set your animations or not in developer settings
Click to expand...
Click to collapse
THANKS A TON!!!!!!!!!!!!!!!!:good::good::good::good::good::good::highfive:
WORKS LIKE A CHARM !!!!!!!!!!!!! AWESOME!..............
Screen Lights On
I tried and working good.
Thanks a lot.
But getting lil bug.
If I screen off in locked screen, it give crt effect screen of den again its light on.
even in any msg light got on even i turned of notification lights.
can you tell me how to fix?
Thank a lot for this mod.
jigarmpattani said:
I tried and working good.
Thanks a lot.
But getting lil bug.
If I screen off in locked screen, it give crt effect screen of den again its light on.
even in any msg light got on even i turned of notification lights.
can you tell me how to fix?
Thank a lot for this mod.
Click to expand...
Click to collapse
Yes it is the only bug as of now , unfortunately I still have not found the proper line where to add the codes in smali due to difference in Samsung framework from ours, but if you leave screen alone screen timeout will just turn screen off without screen turning on again
Sent from my Nexus 7 using XDA Premium HD app
akash akya said:
working like a charm bro...
Click to expand...
Click to collapse
@akash akya buddy can u please make crt effect flash zip for stock 4.1.1 v1.11 jb ... canvas2 .. it would be wonderfull
Thanks
Awesomely Working! Just That When Lock Button Is Pressed After The CRT Again The LockScreen Appears! This Is Surely Gonna Be In My Next Release! Keep Up the Good Work Bro!
ankurbata said:
Awesomely Working! Just That When Lock Button Is Pressed After The CRT Again The LockScreen Appears! This Is Surely Gonna Be In My Next Release! Keep Up the Good Work Bro!
Click to expand...
Click to collapse
Yes but not pressing power and leaving screen alone to timeout will turn screen off without turning on again, will update this when I get the fix for it working
Sent from my H100 using xda app-developers app
One more goodie I have got as temporary solution....
Of there is a button on statusbar for power with keycode value=26 then its not turning the screen.
Like I did in my ui in the screenshot....
"""Hitting Thanks Don't Cost You Anything So Why Don't You Try Hitting It......."""
Sent From Mind Blowing Canvas Using SUVI-Heart Rom.....<3<3<3
BOND1987 said:
One more goodie I have got as temporary solution....
Of there is a button on statusbar for power with keycode value=26 then its not turning the screen.
Like I did in my ui in the screenshot....
"""Hitting Thanks Don't Cost You Anything So Why Don't You Try Hitting It......."""
Sent From Mind Blowing Canvas Using SUVI-Heart Rom.....<3<3<3
Click to expand...
Click to collapse
You can actually use the lidroid toggles lock now toggle instead of adding keycode
Sent from my H100 using xda app-developers app
But then again it would be much easier to put the keycode if you dint have lidroid toggles,,, thanks for the tip bond
Sent from my H100 using xda app-developers app
Guys , instead of editing services.jar .... only edit framework-Res.apk I.e in values / bools --> change config_animatescreenlights = false "
And then compile and flash it the zip containing hwcomposer.mt6577.so given by thirdzcee
Sent from my Micromax A110 using XDA Premium HD app
Akhilendra1711 said:
Guys , instead of editing services.jar .... only edit framework-Res.apk I.e in values / bools --> change config_animatescreenlights = false "
And then compile and flash it the zip containing hwcomposer.mt6577.so given by thirdzcee
Sent from my Micromax A110 using XDA Premium HD app
Click to expand...
Click to collapse
that is already posted in op as the alternate method but be advised if you set your animations speed to x.5 or off crt effect wont show
thirdzcee said:
that is already posted in op as the alternate method but be advised if you set your animations speed to x.5 or off crt effect wont show
Click to expand...
Click to collapse
Actually sir I'm just giving my opinion if someone did not try by framework-res method . And yep by this method as u said setting animation speed off or x.5 then animation won't be shown .
Sent from my Micromax A110 using XDA Premium HD app
so sad..it can't work on JB 4.1.2...can anyone share their hwcomposer of 4.1.2 which already have been edited for crt effect..
Btw, thanks thirdzee for your reply....

disable wifi popup notification

hi guys,
anyone an idea to disable (hack, apk, ...) the wifi popup notification whenever wifi is connected.
This drives me crazy ...
This notification is absolutely senseless, when connection is on i see it in the notification bar ...
I found a description but only for S III Verizon.
JackoMJ
JackoMJ said:
hi guys,
anyone an idea to disable (hack, apk, ...) the wifi popup notification whenever wifi is connected.
This drives me crazy ...
This notification is absolutely senseless, when connection is on i see it in the notification bar ...
I found a description but only for S III Verizon.
JackoMJ
Click to expand...
Click to collapse
Hi! Try this:
- decompile secsettings.apk
- go to file "smali\com\android\settings\wifi\WifiStatusReceiver.smali"
- open in notepad++ and find this code:
Code:
.line 194
invoke-virtual {v3}, Landroid/widget/Toast;->getView()Landroid/view/View;
move-result-object v1
const v4, 0x102000b
invoke-virtual {v1, v4}, Landroid/view/View;->findViewById(I)Landroid/view/View;
move-result-object v1
check-cast v1, Landroid/widget/TextView;
.line 195
const/16 v4, 0x11
invoke-virtual {v1, v4}, Landroid/widget/TextView;->setGravity(I)V
.line 196
[COLOR="Red"]invoke-virtual {v3}, Landroid/widget/Toast;->show()V[/COLOR]
goto :goto_1a3
And change it to (just add # before it):
Code:
[COLOR="Red"]#invoke-virtual {v3}, Landroid/widget/Toast;->show()V[/COLOR]
Thats all - save, recompile, copy to phone, restart and hope
somin.n said:
Hi! Try this:
- decompile secsettings.apk
- go to file "smali\com\android\settings\wifi\WifiStatusReceiver.smali"
- open in notepad++ and find this code:
Code:
.line 194
invoke-virtual {v3}, Landroid/widget/Toast;->getView()Landroid/view/View;
move-result-object v1
const v4, 0x102000b
invoke-virtual {v1, v4}, Landroid/view/View;->findViewById(I)Landroid/view/View;
move-result-object v1
check-cast v1, Landroid/widget/TextView;
.line 195
const/16 v4, 0x11
invoke-virtual {v1, v4}, Landroid/widget/TextView;->setGravity(I)V
.line 196
[COLOR="Red"]invoke-virtual {v3}, Landroid/widget/Toast;->show()V[/COLOR]
goto :goto_1a3
And change it to (just add # before it):
Code:
[COLOR="Red"]#invoke-virtual {v3}, Landroid/widget/Toast;->show()V[/COLOR]
Thats all - save, recompile, copy to phone, restart and hope
Click to expand...
Click to collapse
Hi somin mf,
WHAT THE HELL IS GOING ON?
you are the best. Works perfect. No f****** popup any more.
How do you know or find this out because i think it´s not easy to make it.
JackoMJ
JackoMJ said:
How do you know or find this out because i think it´s not easy to make it.
Click to expand...
Click to collapse
Hehe, you are true, it is not so easy, maybe it was luck that I find it. How I find it?
- i was looking for wifi is connected to bla,bla,bla string in system apk's
- then I find its public id in public.xml file
- then I was looking for this id in *.smali files
- and then it was luck that I find proper line "invoke-virtual {XX}, Landroid/widget/Toast;->show()V", I just know that this line is making toast messages
There was some bad tests, but one of my try was working. And here is result
somin.n said:
Hehe, you are true, it is not so easy, maybe it was luck that I find it. How I find it?
- i was looking for wifi is connected to bla,bla,bla string in system apk's
- then I find its public id in public.xml file
- then I was looking for this id in *.smali files
- and then it was luck that I find proper line "invoke-virtual {XX}, Landroid/widget/Toast;->show()V", I just know that this line is making toast messages
There was some bad tests, but one of my try was working. And here is result
Click to expand...
Click to collapse
Thanks for your time and patience you spent on it.
Do you make every test like me (decompile, change, compile, copy to phone, reboot)?
Hope your Powerbutton won´t break
Or is there a program you can simulate it on your pc without using your phone really?
That´s a very interesting question i think....
JackoMJ
JackoMJ said:
Thanks for your time and patience you spent on it.
Do you make every test like me (decompile, change, compile, copy to phone, reboot)?
Hope your Powerbutton won´t break
Or is there a program you can simulate it on your pc without using your phone really?
That´s a very interesting question i think....
JackoMJ
Click to expand...
Click to collapse
Yes one change and whole process with de/compile,restart,... in round. Don't know about pc sw to simulate it, but yes it would be great. And don't worry about my power button, sometimes I have to pull out my battery because of bootloop :laugh::victory:

Categories

Resources