Related
Here it is ....
As some people here asked for it I'll try to explain how I learned to add screenshot option in power menu.
First I'd like to thank some special members that helped me a lot for doing this :
Championswimmer, Barath_000, Achotjan
First you need to know it's not an easy thing to do and you may have bootloop, reboot etc ... that's why you need time and most of everything backup to restore the modded files.
You'll need tools to do this.
I used a "all in one tool": android utility (thanks to tommytomatoe)
http://forum.xda-developers.com/showthread.php?t=1167623
It can be used on linux / mac laptop
If you don't want to use it or using windows laptop you'll need apktool and dex2jar
Before beginning :
Make a backup of these 2 files in system/framework :
framework-res.apk
android.poilicy.jar
Why ? you'll work on these files so if it doesn't work you'll have a "safe working base" ...
Ready ?
1.Framework-res.apk
Decompile this file (with android utility or apktool)
In the "drawable-hpdi" folder place the png attached, and named it "whateveryouwant".
I advice you to keep the name it got as all my how to will name it like that
Then go in the values folder,
You'll find several xml files, with notepad ++ or other xml editor open*: strings.xml and public*.xml
In strings.xml:
Add this line at the end of the file just above </resources> add the line*:
<string name="global_action_screenshot_txt">Take screenshot</string>
It must look like that*:
<string name="add_region_in_locale_picker_dummy_string">+</string>
<string name="global_action_sleep">Sleep mode</string>
<string name="global_action_screenshot_txt">Take screenshot</string>
</resources>
Click to expand...
Click to collapse
Save and close strings.xml
Open public.xml
In the fitting section (drawable and strings) add these lines :
<public type="string" name="global_action_screenshot_txt" id="0x010403da" />
<public type="drawable" name="semc_ic_dialog_screenshot" id="0x0108057f" />
Little tip for "how to" choose the id's (0x010403da and 0x0108057f)
- Search for the last ID for the category (for drawable the last one was0x0108057e)
- write the next letter or number ... (last one was 0x0108057e so the next one is 0x0108057f)
Tip number 2 for the ID ...
the letter list begin to a and finish to f
the number list begins to 0 and finish to 9
Finding the fitting ID can take time so stay calm and relax
Once you've done that, save public.xml but don't close it you'll need it later ....
Now you can compile your framework-res.apk
If you did something wrong apktool will write it .. just read and repair what's wrong.
Now the framework is set, you need now to tell the device wich action you want to run when you tap the option on screen.
2. Andorid.policy.jar
Decompile this file.
Go to com/android/internal/policy/impl folder
Here you'll fond some smali files.
Find the smali named GlobalActions.smali and open it.
In the # annotations thread add this line
Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;,
in must look like this :
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;,
Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;,
Lcom/android/internal/policy/impl/GlobalActions$Action;,
Lcom/android/internal/policy/impl/GlobalActions$MyAdapter;
}
.end annotation
Click to expand...
Click to collapse
In the # instance fields thread add this line :
.field private mCaptureScreenshot:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
It must look like this :
# instance fields
.field private mAdapter:Lcom/android/internal/policy/impl/GlobalActions$MyAdapter;
.field private mAirplaneModeOn:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
.field private mAirplaneState:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
.field private final mAudioManager:Landroid/media/AudioManager;
.field private mBroadcastReceiver:Landroid/content/BroadcastReceiver;
.field private mCaptureScreenshot:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
.field private final mContext:Landroid/content/Context;
.field private mDeviceProvisioned:Z
.field private mDialog:Landroid/app/AlertDialog;
.field private mHandler:Landroid/os/Handler;
.field private mIsWaitingForEcmExit:Z
.field private mItems:Ljava/util/ArrayList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/ArrayList",
"<",
"Lcom/android/internal/policy/impl/GlobalActions$Action;",
">;"
}
.end annotation
.end field
Click to expand...
Click to collapse
Is that all ??? No !!!!!
Search the line 195
It must be like this in stock rom :
.line 195
const/4 v0, 0x3
new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;
const/4 v1, 0x0
iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions;->mSilentModeToggle:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
aput-object v2, v0, v1
Click to expand...
Click to collapse
If there's const/4 v0, 0x4 : this tell the system how many options you've got in the power menu (here 4)
Just under .line 195 add these lines :
new-instance v0, Lcom/android/internal/policy/impl/GlobalActions$8;
const v1, 0x108057f
const v2, 0x10403da
invoke-direct {v0, p0, v1, v2}, Lcom/android/internal/policy/impl/GlobalActions$8;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
iput-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mCaptureScreenshot:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
Click to expand...
Click to collapse
Now it must look like this
.line 195
new-instance v0, Lcom/android/internal/policy/impl/GlobalActions$8;
const v1, 0x108057f
const v2, 0x10403da
invoke-direct {v0, p0, v1, v2}, Lcom/android/internal/policy/impl/GlobalActions$8;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
iput-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mCaptureScreenshot:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
const/4 v0, 0x4
Click to expand...
Click to collapse
What that mean ????
const v1, 0x108057f
Click to expand...
Click to collapse
= the ID in public.xml for the Drawable ... ATTENTION : the ID must be written without the 0 (in public.xml = 0x0108057f ; in android policy 0x108057f )
const v2, 0x10403da
Click to expand...
Click to collapse
= the ID in public.xml for the string
respect this order
invoke-direct {v0, p0, v1, v2}, Lcom/android/internal/policy/impl/GlobalActions$8
Click to expand...
Click to collapse
In the IMPL folder of the decompiled android.policy.jar you'll see several files named GlobalActions$1.smali ; GlobalActions$2.smali; etc ....
You'll need to create a smali file, it's name will follow the already existing name ... if the last one is GlobalActions$7.smali then you'll create GlobalActions$8.smali ...
What should I get in this file ?????
Calm down and take the GlobalActions$8.smali attached, rename it if you need, but don't forget to rename inside it all GlobalActions$8 entries in GlobalActions$thenumberyouchoose
Once you've done that get back to GlobalActions.smali ....
Find this line
invoke-static {v0}, Lcom/google/android/collect/Lists;->newArrayList([Ljava/lang/ObjectLjava/util/ArrayList;
Click to expand...
Click to collapse
just above add
const/4 v1, 0x3
iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions;->mCaptureScreenshot:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v2, v0, v1
const/4 v1, 0x4
Click to expand...
Click to collapse
Added Globalactions.txt file so you can compare with yours
Here it is, work in android.policy is over ... save and close the GlobalActions file, and recompile android.policy.jar
Ready to flash ? .. so must build a zip file with good permissions and all the files ...
Find a flashing zip and decompress it
Create these folder
system/framework
system/app
system/bin
Inside framework folder get framework-res.apk and android.policy.jar you compiled
inside bin get the screenshot file (see attachement)
inside app get CMscreenshot.apk (see attachement)
edit your update-script to get these line : (translation for edify script can be done easily)
copy_dir PACKAGE:system SYSTEM:
set_perm 0 0 04755 SYSTEM:bin/screenshot
Click to expand...
Click to collapse
permissions are needed or else you'll get error (saved to null ...) will taking screenshot
save, compresss make your zip ...
MAKE A BACKUP
And flash ....
reboot .... and enjoy the screenshot option
Hope it helps ..
Once again take your time ... if you're novice in modding it'll take time ... it took me nearly one month to do it ...
FAQ :
Q: Can't find GlobalActions$8.smali in attachment
A: Download GlobalActions$8.zip and rename it GlobalActions$8.smali ....
Q: Can't find the screenshot file to place in bin folder
A : download bin.zip .... it's in
Q: Why can't I use the screencapture.apk from Arc, Neo, Xperia S etc ...
A: We still fighting to make it working ...
Thanks Tof, very useful
Just one question, in my decompiled framework-res, in "public.xml", drawable section are totally mixed order, is there an easier way to find the last id?
LzVebz said:
Thanks Tof, very useful
Just one question, in my decompiled framework-res, in "public.xml", drawable section are totally mixed order, is there an easier way to find the last id?
Click to expand...
Click to collapse
To be honest I don't know easier way than writing the ID you want to get and search if it already exist ..
If someone have a useful xml editor that can sort ID by section ...
I thought..ID's are reading automatically if they miss...only if you add them in strings and xmls…
Finaly here thanks Tof )
FeraVolt said:
I thought..ID's are reading automatically if they miss...only if you add them in strings and xmls…
Finaly here thanks Tof )
Click to expand...
Click to collapse
Finally took time to write it
Got me long long nights with my computer to get it working ... hope it wold help people to have more sleep time
For ID you're not wrong .. ID are getting automatically if you compile from sources (I may be wrong but it's what I understood )
First: THANK YOU!!!
Then...
I've... some issues...
My globalaction now is:
Code:
.line 232
new-instance v0, Lcom/android/internal/policy/impl/GlobalActions$11;
const v1, 0x1080452
const v2, 0x10404f5
invoke-direct {v0, p0, v1, v2}, Lcom/android/internal/policy/impl/GlobalActions$11;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
iput-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mCaptureScreenshot:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
const/4 v0, 0x6
const/4 v0, 0x5
new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;
iget-object v1, p0, Lcom/android/internal/policy/impl/GlobalActions;->mSilentModeToggle:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
aput-object v1, v0, v10
It is wrong?
Now i'm trying with this, without success:
Code:
.line 232
const/4 v0, 0x5
new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;
iget-object v1, p0, Lcom/android/internal/policy/impl/GlobalActions;->mSilentModeToggle:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
aput-object v1, v0, v10
iget-object v1, p0, Lcom/android/internal/policy/impl/GlobalActions;->mAirplaneModeOn:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
aput-object v1, v0, v9
new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$3;
const v2, 0x1080418
const v3, 0x10403fc
const v4, 0x10403fd
invoke-direct {v1, p0, v2, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$3;-><init>(Lcom/android/internal/policy/impl/GlobalActions;III)V
aput-object v1, v0, v11
new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$4;
const v2, 0x1080030
invoke-direct {v1, p0, v2, v13}, Lcom/android/internal/policy/impl/GlobalActions$4;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
aput-object v1, v0, v12
const/4 v1, 0x4
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$10;
const v3, 0x108044e
const v4, 0x1040508
invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$10;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
aput-object v2, v0, v1
invoke-static {v0}, Lcom/google/android/collect/Lists;->newArrayList([Ljava/lang/Object;)Ljava/util/ArrayList;
const/4 v1, 0x3
iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions;->mCaptureScreenshot:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v2, v0, v1
const/4 v1, 0x4
move-result-object v0
iput-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;
const/4 v1, 0x5
new-instance v0, Lcom/android/internal/policy/impl/GlobalActions$11;
const v1, 0x1080452
const v2, 0x10404f5
invoke-direct {v0, p0, v1, v2}, Lcom/android/internal/policy/impl/GlobalActions$11;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
iput-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mCaptureScreenshot:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
Yes, I know there are a lot of things... But I'm sure that there is something in this file...
@dettofatto
Yes there are some errors in your file but can't correctly quote your post since I'm on phone... Recheck with op first until I get back home to show your errors
Sent from my X10s using XDA
dettofatto said:
First: THANK YOU!!!
Then...
I've... some issues...
My globalaction now is:
Code:
.line 232
new-instance v0, Lcom/android/internal/policy/impl/GlobalActions$11;
const v1, 0x1080452
const v2, 0x10404f5
invoke-direct {v0, p0, v1, v2}, Lcom/android/internal/policy/impl/GlobalActions$11;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
iput-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mCaptureScreenshot:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
const/4 v0, 0x6
const/4 v0, 0x5 [COLOR="Red"]----not needed cause line just above is enough[/COLOR]
new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;
iget-object v1, p0, Lcom/android/internal/policy/impl/GlobalActions;->mSilentModeToggle:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
aput-object v1, v0, v10
It is wrong?
Click to expand...
Click to collapse
See above in red
And so I'll have 0x4 and 0x6 without 0x5?
Or I must put all your new lines under 0x5?
Because my. 232 line starts with constant 0x5...
And so I thought that the new screenshot has 0x6...
Or new lines start before 0x5?
Tomorrow I'll try all these options and I'll see!
I'm wrong?
Thank you...
Sent from My Motosola....
No...
Rebooted.. I'll try again...
Ah! I'm on motorola device...
Code:
.line 232
new-instance v0, Lcom/android/internal/policy/impl/GlobalActions$11;
const v1, 0x1080452
const v2, 0x10404f5
invoke-direct {v0, p0, v1, v2}, Lcom/android/internal/policy/impl/GlobalActions$11;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
iput-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mCaptureScreenshot:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
const/4 v0, 0x5
new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;
dettofatto said:
No...
Rebooted.. I'll try again...
Ah! I'm on motorola device...
Code:
.line 232
new-instance v0, Lcom/android/internal/policy/impl/GlobalActions$11;
const v1, 0x1080452
const v2, 0x10404f5
invoke-direct {v0, p0, v1, v2}, Lcom/android/internal/policy/impl/GlobalActions$11;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
iput-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mCaptureScreenshot:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
const/4 v0, 0x5
new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;
Click to expand...
Click to collapse
Would you upload and attach your globalaction.smali please?
Sent from my X10s using XDA
Yes!!! I'll do tomorrow! The original file? Yes... I think so...
Thank you!
Sent from My Motosola....
dettofatto said:
Yes!!! I'll do tomorrow! The original file? Yes... I think so...
Thank you!
Sent from My Motosola....
Click to expand...
Click to collapse
The one you modded please
thanks
Tof37 said:
The one you modded please
thanks
Click to expand...
Click to collapse
This is my file!
dettofatto said:
This is my file!
Click to expand...
Click to collapse
Add a quick look at your file and there are some errors in it ...
that's why it doesn't work will attach your file later to show the errors
Thank you again!!!
Sent from My Motosola....
Have a look at the file
I attached mine as model in OP so you can compare
I don't suppose you know how to change the order of the power menu?
blueowl0708 said:
I don't suppose you know how to change the order of the power menu?
Click to expand...
Click to collapse
That can be done
Lines must placed in the order you want them...
Sent from my X10s using XDA
Well,this new method is much much easier than the old method.Minimal smali editing is involved.So even newbies can follow it.
Click to expand...
Click to collapse
You are going to need
1.SystemUI.apk
2.Apk manager,virtuos ten studio or any apk compiling/decompiling tool
3.Notepad++
4.Patience and some time.
Click to expand...
Click to collapse
STEP 1Decompile your SystemUI.apk and go to status_bar_expanded.xml.Open the file and look for this (stock systemUI).
Code:
<com.android.systemui.statusbar.CarrierLabel android:textSize="17.659973dip" android:textColor="#ffffffff" android:layout_gravity="center_vertical" android:orientation="vertical" android:paddingBottom="1.0dip" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_marginLeft="5.0dip" android:layout_marginTop="1.0dip" android:layout_weight="1.0" />
paste this code below that
Code:
<ImageView android:layout_gravity="center_vertical" android:layout_width="wrap_content" android:layout_height="fill_parent" android:src="@drawable/ic_notify_quicksettings"[COLOR="Red"] android:onClick="settingsButton"[/COLOR] />
Now save the file.
Code:
[COLOR="Red"] android:onClick="settingsButton"[/COLOR]
is an xml attribute used to call a method when pressing something.Now the settingsButton is the name of the method.
Note;It doesnt matter where you put the code for settings button in statusbar expanded.The above steps are for sgy users.You can put that code anywhere you want.But think logical and use common sense.
STEP 2 Now we can add the method settingsButton to StatusBarService.smali.Open the file and look for the code
Code:
# virtual methods
Paste this method below
Code:
.method public settingsButton(Landroid/view/View;)V
.locals 3
.parameter "v"
.prologue
.line 1717
invoke-virtual {p1}, Landroid/view/View;->getContext()Landroid/content/Context;
move-result-object v0
new-instance v1, Landroid/content/Intent;
const-string v2, "android.settings.SETTINGS"
invoke-direct {v1, v2}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
const/high16 v2, 0x1000
invoke-virtual {v1, v2}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;
move-result-object v1
invoke-virtual {v0, v1}, Landroid/content/Context;->startActivity(Landroid/content/Intent;)V
invoke-virtual {p0}, Lcom/android/systemui/statusbar/StatusBarService;->animateCollapse()V
.line 1720
return-void
.end method
Now save the file.
android.settings.SETTINGS is the intent for calling settings app activity.You can change the intent to call diffrent activities.For example
android.settings.WIRELESS_SETTINGS -wireless and network settings
android.settings.WIFI_SETTINGS -Wifi settings
android.intent.action.POWER_USAGE_SUMMARY -Battery usage summary
Click to expand...
Click to collapse
STEP 3Now download and extract this Settings_shortcut_drawables.zip.Put the ic_notify_quicksettings.xml inside your drawable folder and the the other two pngs inside drawable-ldpi folder.
STEP 4Now compile and push.
Before asking doubts think twice always.If there is any error in the codes,do let me know.Happy to help.
Click to expand...
Click to collapse
Old method
Actually this mod is not made by me.I've just ported it and found the way to implement this in other roms.I've studied the SystemUI.apk from the theme by C.O.D.<D.J> for creed's rom.So all credit goes to him
EDIT:There is a small correction in the code
Code:
invoke-direct {v0, p0}, Lcom/android/systemui/statusbar/StatusBarService$8;-><init>(Lcom/android/systemui/statusbar/StatusBarService;)V
.I've forgot to add <init> after 'StatusBarService$8;->' in the guide.Thanks to 'chevanlol360' for pointing out this error.
Click to expand...
Click to collapse
It's easy if you follow every step correctly
STEP 1: Decompile the SystemUI.apk.There are several threads around xda to show you how to decompile an apk.Navigate to res/layout/ and find status_bar_expanded.xml.Find the following code in the file
Code:
<com.android.systemui.statusbar.CarrierLabel android:textSize="17.659973dip" android:textColor="#ffffffff" android:layout_gravity="center_vertical" android:orientation="vertical" android:paddingBottom="1.0dip" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_marginLeft="5.0dip" android:layout_marginTop="1.0dip" android:layout_weight="1.0" />
Paste this code just below it
Code:
<ImageView android:layout_gravity="center_vertical" android:id="@id/settings_button" android:paddingLeft="0.0dip" android:paddingTop="0.0dip" android:paddingRight="8.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:src="@drawable/ic_notify_quicksettings" android:contentDescription="@string/accessibility_settings_button" />
Now save and close the file.
STEP 2.Open res/values/strings.xml.And add this line at the end
Code:
<string name="accessibility_settings_button">System settings.</string>
Save and close the file
STEP 3.Open res/values/ids.xml and paste this code at the end
Code:
<item type="id" name="settings_button">false</item>
Save and close the file.
STEP 4.Now extract the files from the attached zip.Take "ic_notify_quicksettings.xml' and put it in res/drawable/.Take 'ic_settings_normal.png' and 'ic_settings_pressed.png' and put it in res/drawable-ldpi/.
Now recompile the apk and push it to system/app to make sure the settings button is there and everything look right.Now decompile that systemUI.apk again.Navigate to res/values/ .We need to find an id from public.xml
STEP 5.Now open public.xml and find this line
Code:
<public type="id" name="settings_button" id="[COLOR="Red"]0x7f090027[/COLOR]" />
Remember the id highlighted in red above.We need to use it.
STEP 6.Open StatusBarService.smali and find this line of code
Code:
.field mScrollView:Landroid/widget/ScrollView;
Paste this code below it
Code:
.field mSettingsBut:Landroid/view/View;
.field private mSettingsButListener:Landroid/view/View$OnClickListener;
Now find this code
Code:
iput-object v0, p0, Lcom/android/systemui/statusbar/StatusBarService;->mStopTracing:Ljava/lang/Runnable;
Paste this code below
Code:
.line 1703
new-instance v0, Lcom/android/systemui/statusbar/StatusBarService$8;
invoke-direct {v0, p0}, Lcom/android/systemui/statusbar/StatusBarService$8;-><init>(Lcom/android/systemui/statusbar/StatusBarService;)V
iput-object v0, p0, Lcom/android/systemui/statusbar/StatusBarService;->mSettingsButListener:Landroid/view/View$OnClickListener;
return-void
Now again find this code
Code:
iput v7, p0, Lcom/android/systemui/statusbar/StatusBarService;->mEdgeBorder:I
And paste this code below
Code:
.line 333
const v7, [COLOR="Red"]0x7f090027[/COLOR]
invoke-virtual {v1, v7}, Lcom/android/systemui/statusbar/ExpandedView;->findViewById(I)Landroid/view/View;
move-result-object v7
iput-object v7, p0, Lcom/android/systemui/statusbar/StatusBarService;->mSettingsBut:Landroid/view/View;
.line 334
iget-object v7, p0, Lcom/android/systemui/statusbar/StatusBarService;->mSettingsBut:Landroid/view/View;
iget-object v8, p0, Lcom/android/systemui/statusbar/StatusBarService;->mSettingsButListener:Landroid/view/View$OnClickListener;
invoke-virtual {v7, v8}, Landroid/view/View;->setOnClickListener(Landroid/view/View$OnClickListener;)V
The id highlighted in red must be the same as the id from public.xml.So make sure it's the same.Now save and close the file.
STEP 7.Take 'StatusBarService$8.smali' from the attached zip an put it in com/android/systemui/statusbar/.
STEP 8.Now recompile the apk and push it to system/app/ and put the permission rw--r--r--.
If you want to get the feel of it in your stock statusbar i've made one for you just in case. Download it from here:
DOWNLOAD
{
"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"
}
Flash it through recovery.If you are running an odexed rom,delete SystemUI.odex from system/app before you flash the zip.
Awesome tutorial....
Will impliment this in my upcoming custom rom....lol
great tutorial, but stuck on first step as i cant find those lines in my statusbarexpanded.xml , btw i have a galaxy gio but here is my systemui, can you take a look? :good:
alkspo said:
great tutorial, but stuck on first step as i cant find those lines in my statusbarexpanded.xml , btw i have a galaxy gio but here is my systemui, can you take a look? :good:
Click to expand...
Click to collapse
I'll look into it.I'm not near my pc.Actually step 1 puts the settings left to carrier text.You can add that code before the code for clear button.
sent while doin' some burnouts
alright, will tr, thanks
How to move 15toogle to down settings button
alkspo said:
great tutorial, but stuck on first step as i cant find those lines in my statusbarexpanded.xml , btw i have a galaxy gio but here is my systemui, can you take a look? :good:
Click to expand...
Click to collapse
if the Statusbar have this code :
Code:
.line 338
.local v4, qsv:Lcom/android/systemui/statusbar/quickpanel/QuickSettingsView;
const-string v8, "ro.csc.sales_code"
invoke-static {v8}, Landroid/os/SystemProperties;->get(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
.line 339
.local v1, code:Ljava/lang/String;
const-string v8, "XEC"
invoke-virtual {v8, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v8
if-eqz v8, :cond_1
you can delete it ,
If the statusbar have this :
Code:
.line 340
const v8, 0x7f030003
invoke-static {p1, v8, v10}, Landroid/view/View;->inflate(Landroid/content/Context;ILandroid/view/ViewGroup;)Landroid/view/View;
move-result-object v4
.end local v4 #qsv:Lcom/android/systemui/statusbar/quickpanel/QuickSettingsView;
check-cast v4, Lcom/android/systemui/statusbar/quickpanel/QuickSettingsView;
.line 348
.restart local v4 #qsv:Lcom/android/systemui/statusbar/quickpanel/QuickSettingsView;
:goto_0
iget-object v8, p0, Lcom/android/systemui/statusbar/StatusBarService;->mExpandedView:Lcom/android/systemui/statusbar/ExpandedView;
invoke-virtual {v8, v4, v13}, Lcom/android/systemui/statusbar/ExpandedView;->addView(Landroid/view/View;I)V
and delete this :
Code:
.line 344
:cond_1
const v8, 0x3030003
invoke-static {p1, v8, v10}, Landroid/view/View;->inflate(Landroid/content/Context;ILandroid/view/ViewGroup;)Landroid/view/View;
move-result-object v4
check-cast v4, Lcom/lidroid/systemui/quickpanel/PowerWidget;
.local v4, qsv:Lcom/lidroid/systemui/quickpanel/PowerWidget;
invoke-virtual {v4}, Lcom/lidroid/systemui/quickpanel/PowerWidget;->setupWidget()V
goto :goto_0
you can change into :
so the line like as :
Code:
.line 337
const/4 v4, 0x0
.line 344
const v8, 0x3030003
invoke-static {p1, v8, v10}, Landroid/view/View;->inflate(Landroid/content/Context;ILandroid/view/ViewGroup;)Landroid/view/View;
move-result-object v4
check-cast v4, Lcom/lidroid/systemui/quickpanel/PowerWidget;
.line 348
.local v4, qsv:Lcom/lidroid/systemui/quickpanel/PowerWidget;
const/4 v9, 0x1
invoke-virtual {v4}, Lcom/lidroid/systemui/quickpanel/PowerWidget;->setupWidget()V
iget-object v8, p0, Lcom/android/systemui/statusbar/StatusBarService;->mExpandedView:Lcom/android/systemui/statusbar/ExpandedView;
invoke-virtual {v8, v4, v9}, Lcom/android/systemui/statusbar/ExpandedView;->addView(Landroid/view/View;I)V
.line 352
new-instance v8, Landroid/widget/LinearLayout;
invoke-direct {v8, p1}, Landroid/widget/LinearLayout;-><init>(Landroid/content/Context;)V
iput-object v8, p0, Lcom/android/systemui/statusbar/StatusBarService;->mMiniCon:Landroid/widget/LinearLayout;
.line 353
iget-object v8, p0, Lcom/android/systemui/statusbar/StatusBarService;->mMiniCon:Landroid/widget/LinearLayout;
const/4 v9, 0x1
invoke-virtual {v8, v9}, Landroid/widget/LinearLayout;->setOrientation(I)V
.line 354
iget-object v8, p0, Lcom/android/systemui/statusbar/StatusBarService;->mExpandedView:Lcom/android/systemui/statusbar/ExpandedView;
invoke-virtual {v8, v12}, Lcom/android/systemui/statusbar/ExpandedView;->findViewById(I)Landroid/view/View;
move-result-object v8
check-cast v8, Landroid/widget/LinearLayout;
iget-object v9, p0, Lcom/android/systemui/statusbar/StatusBarService;->mMiniCon:Landroid/widget/LinearLayout;
invoke-virtual {v8, v9, v13}, Landroid/widget/LinearLayout;->addView(Landroid/view/View;I)V
.line 358
const v8, 0x7f030005
invoke-static {p1, v8, v10}, Landroid/view/View;->inflate(Landroid/content/Context;ILandroid/view/ViewGroup;)Landroid/view/View;
move-result-object v8
check-cast v8, Lcom/android/systemui/statusbar/CallOnGoingView;
iput-object v8, p0, Lcom/android/systemui/statusbar/StatusBarService;->mCallOnGoingView:Lcom/android/systemui/statusbar/CallOnGoingView;
.line 359
iget-object v8, p0, Lcom/android/systemui/statusbar/StatusBarService;->mCallOnGoingView:Lcom/android/systemui/statusbar/CallOnGoingView;
iput-object p0, v8, Lcom/android/systemui/statusbar/CallOnGoingView;->mService:Lcom/android/systemui/statusbar/StatusBarService;
.line 361
return-void
.end method
Here you go , iam modify you systemui . view you new systemui . and Trying to Experiment xD . view my attatch
and i thinks the Guide not working on CM .
Thanks you, AWESOME Guide
Thanks for this tutorial mate! awesome as always will try this after i come back..
Boooom..! Pin! Thanks for this great tut bro... now i know.. i really mis the smalis.. haha i really hate smali...
____________________________________
Reserve for future use..
send thru postal codes supported with busybox command again
thanks for doing it for me, but my device is mdpi not hdpi, so will not work, can you make it again?
alkspo said:
thanks for doing it for me, but my device is mdpi not hdpi, so will not work, can you make it again?
Click to expand...
Click to collapse
If the resolution png (too small) with a resolution of handle you then I rename a ldpi, if png (fit) with a screen resolution of your handle then I rename a mdpi, if the png does not fit the screen resolution of your handle (too big) then I rename a hdpi .
thats trick to make png no zoom ( big or small icon ) . and make to past you screen resolution .
try my mods . push to system/app
sorry for bad english
oh i see what you mean, yes so it wont zoom in thanks, i tried it but it looks a bit messed up, can you put the date and the setting and x button under the toggles? or is that too much trouble ? o: i like have the toggle at the very top, and might fix overlap if do that thanks alot here is screenie
Thanks for the tut
Inviato dal mio GT-S5830i con Tapatalk 2
The codes in sgyd differ a little bit... failed on my first try... trying it again
hell_lock said:
The codes in sgyd differ a little bit... failed on my first try... trying it again
Click to expand...
Click to collapse
Try it in your sgy.It's easier to port if it works.
sent while doin' some burnouts
b16h22 said:
Try it in your sgy.It's easier to port if it works.
sent while doin' some burnouts
Click to expand...
Click to collapse
Yudhiez managed to make it fully working for me, but the date and settings and clear button is on top of toggles, while the one in your screenshot is below, how do i rearrange it? o:
Haha told it to samsoul16 bro he had this questions now u explain it good thanks pressed
Sent from my GT-S5360 using Xparent ICS Blue Tapatalk 2
Wow this tutorial is great. Thanks friend.
HYPOCRITES I'm gonna do it blind
HYPOCRITES your messiah was never mine!
beautiful. :good:
Galaxy Ace s5830i
Hey,I tried to add this is Galaxy Ace S5830i.
I don't have StatusBarService$7.smali,so I renamed StatusBarService$8.smali to StatusBarService$7.smali,and changed all the StatusBarService$8 lines to StatusBarService$7,the same in StatuBarService.smali,but it still not working,can you help me?
This work on stock deodex? Will try
Sent from my GT-S5360 using xda premium
FEATURED ON XDA NEWS
{
"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"
}
http://www.xda-developers.com/android/add-your-favorite-mods-on-the-sony-xperia-arc/
SKIP TRACK VIA VOL LONG PRESS
Requirements
1) android.policy.jar
2) APKTOOL
3) Notepad++
4)winrar or 7zip
5) and some patience.
1-STEP
open the android.policy.jar with winrar or 7zip archive and pull classes.dex file to ur apktool folder.
2-STEP
decompile the classes.dex using apktool
for this press shift and right mouse click to open cmd prompt..
then add the cmd in cmd prompt to decompile ..
Code:
java -jar baksmali.jar -o classout/ classes.dex
after that u will get a classout folder in apktool folder.
3-STEP
inside the classout folder navigate to com\android\internal\policy\impl\PhoneWindowManager.smali
once u open PhoneWindowManager.smali add the following lines.
Find:
Code:
.field static final LONG_PRESS_POWER_SHUT_OFF:I = 0x2
.field static final NAVIGATION_BAR_LAYER:I = 0x12
.field static final PHONE_LAYER:I = 0x3
Add the RED color highlighted lines between them
Code:
.field static final LONG_PRESS_POWER_SHUT_OFF:I = 0x2
[COLOR="Red"].field private static final LONG_PRESS_TIMEOUT:I = 0x3e8[/COLOR]
.field static final NAVIGATION_BAR_LAYER:I = 0x12
.field static final PHONE_LAYER:I = 0x3
Find:
Code:
.field mIncallPowerBehavior:I
.field mKeyboardTapVibePattern:[J
.field mKeyguard:Landroid/view/WindowManagerPolicy$WindowState;
Add the RED color highlighted lines between them
Code:
.field mIncallPowerBehavior:I
[COLOR="red"].field mIsLongPress:Z
[/COLOR]
.field mKeyboardTapVibePattern:[J
.field mKeyguard:Landroid/view/WindowManagerPolicy$WindowState;
Find:
Code:
.field private mVolumeDownKeyTriggered:Z
.field private mVolumeUpKeyTriggered:Z
.field mWindowManager:Landroid/view/IWindowManager;
.field mWindowManagerFuncs:Landroid/view/WindowManagerPolicy$WindowManagerFuncs;
Add the RED color highlighted lines between them
Code:
.field private mVolumeDownKeyTriggered:Z
[COLOR="red"].field private final mVolumeDownLongPress:Ljava/lang/Runnable;[/COLOR]
.field private mVolumeUpKeyTriggered:Z
[COLOR="red"].field private final mVolumeUpLongPress:Ljava/lang/Runnable;[/COLOR]
.field mWindowManager:Landroid/view/IWindowManager;
.field mWindowManagerFuncs:Landroid/view/WindowManagerPolicy$WindowManagerFuncs;
Find:
Code:
.line 3586
new-instance v0, Lcom/android/internal/policy/impl/PhoneWindowManager$21;
invoke-direct {v0, p0}, Lcom/android/internal/policy/impl/PhoneWindowManager$21;-><init>(Lcom/android/internal/policy/impl/PhoneWindowManager;)V
iput-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mScreenLockTimeout:Ljava/lang/Runnable;
return-void
.end method
Add the RED color highlighted lines between them
Code:
.line 3586
new-instance v0, Lcom/android/internal/policy/impl/PhoneWindowManager$21;
invoke-direct {v0, p0}, Lcom/android/internal/policy/impl/PhoneWindowManager$21;-><init>(Lcom/android/internal/policy/impl/PhoneWindowManager;)V
iput-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mScreenLockTimeout:Ljava/lang/Runnable;
[COLOR="red"]
new-instance v0, Lcom/android/internal/policy/impl/PhoneWindowManager$23;
invoke-direct {v0, p0}, Lcom/android/internal/policy/impl/PhoneWindowManager$23;-><init>(Lcom/android/internal/policy/impl/PhoneWindowManager;)V
iput-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeDownLongPress:Ljava/lang/Runnable;
new-instance v0, Lcom/android/internal/policy/impl/PhoneWindowManager$24;
invoke-direct {v0, p0}, Lcom/android/internal/policy/impl/PhoneWindowManager$24;-><init>(Lcom/android/internal/policy/impl/PhoneWindowManager;)V
iput-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeUpLongPress:Ljava/lang/Runnable;[/COLOR]
return-void
.end method
Find:
Code:
iget-object v3, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mBroadcastWakeLock:Landroid/os/PowerManager$WakeLock;
invoke-virtual {v3}, Landroid/os/PowerManager$WakeLock;->release()V
throw v2
.end method
.method public hasNavigationBar()Z
.registers 2
Add the RED color highlighted lines between them
Code:
iget-object v3, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mBroadcastWakeLock:Landroid/os/PowerManager$WakeLock;
invoke-virtual {v3}, Landroid/os/PowerManager$WakeLock;->release()V
throw v2
.end method
[COLOR="red"].method handleVolumeLongPress(I)V
.registers 6
.parameter "keycode"
.prologue
const/16 v1, 0x18
if-eq p1, v1, :cond_7
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeDownLongPress:Ljava/lang/Runnable;
goto :goto_9
:cond_7
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeUpLongPress:Ljava/lang/Runnable;
:goto_9
iget-object v1, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHandler:Landroid/os/Handler;
sget v2, Lcom/android/internal/policy/impl/PhoneWindowManager;->LONG_PRESS_TIMEOUT:I
int-to-long v2, v2
invoke-virtual {v1, v0, v2, v3}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z
return-void
.end method
.method handleVolumeLongPressAbort()V
.registers 3
.prologue
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHandler:Landroid/os/Handler;
iget-object v1, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeUpLongPress:Ljava/lang/Runnable;
invoke-virtual {v0, v1}, Landroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;)V
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHandler:Landroid/os/Handler;
iget-object v1, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeDownLongPress:Ljava/lang/Runnable;
invoke-virtual {v0, v1}, Landroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;)V
return-void
.end method[/COLOR]
.method public hasNavigationBar()Z
.registers 2
Find:
Code:
.line 2841
invoke-direct {p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->cancelPendingScreenshotChordAction()V
goto :goto_c2
.line 2843
Add the RED color highlighted lines between them
Code:
.line 2841
invoke-direct {p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->cancelPendingScreenshotChordAction()V
[COLOR="red"]invoke-virtual {p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->handleVolumeLongPressAbort()V
invoke-virtual {p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->isMusicActive()Z
move-result v12
if-eqz v12, :cond_c2
move-object/from16 v0, p0
iget-boolean v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsLongPress:Z
move v12, v0
if-nez v12, :cond_c2
and-int/lit8 v12, v10, 0x1
if-nez v12, :cond_c2
const/4 v12, 0x3
move-object/from16 v0, p0
invoke-virtual {v0, v12, v8}, Lcom/android/internal/policy/impl/PhoneWindowManager;->handleVolumeKey(II)V
[/COLOR]
goto :goto_c2
.line 2843
Find:
Code:
.line 2853
invoke-direct {p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->cancelPendingScreenshotChordAction()V
goto/16 :goto_c2
.line 2879
Add the RED color highlighted lines between them
Code:
.line 2853
invoke-direct {p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->cancelPendingScreenshotChordAction()V
[COLOR="Red"] invoke-virtual {p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->handleVolumeLongPressAbort()V
invoke-virtual {p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->isMusicActive()Z
move-result v12
if-eqz v12, :cond_c2
move-object/from16 v0, p0
iget-boolean v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsLongPress:Z
move v12, v0
if-nez v12, :cond_c2
and-int/lit8 v12, v10, 0x1
if-nez v12, :cond_c2
const/4 v12, 0x3
move-object/from16 v0, p0
invoke-virtual {v0, v12, v8}, Lcom/android/internal/policy/impl/PhoneWindowManager;->handleVolumeKey(II)V[/COLOR]
goto/16 :goto_c2
.line 2879
Find:
Code:
if-nez v12, :cond_23
.line 2894
const/4 v12, 0x3
invoke-virtual {p0, v12, v8}, Lcom/android/internal/policy/impl/PhoneWindowManager;->handleVolumeKey(II)V
goto/16 :goto_23
.line 2902
Add the RED color highlighted lines between them
Code:
if-nez v12, :cond_23
.line 2894
const/4 v12, 0x3
[COLOR="red"]const/4 v7, 0x0[/COLOR]
invoke-virtual {p0, v12, v8}, Lcom/android/internal/policy/impl/PhoneWindowManager;->handleVolumeKey(II)V
[COLOR="red"]move v0, v7
move-object/from16 v1, p0
iput-boolean v0, v1, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsLongPress:Z
move-object/from16 v0, p0
invoke-virtual {v0, v8}, Lcom/android/internal/policy/impl/PhoneWindowManager;->handleVolumeLongPress(I)V
[/COLOR]
goto/16 :goto_23
.line 2902
Find:
Code:
.method sendCloseSystemWindows(Ljava/lang/String;)V
.registers 3
.parameter "reason"
.prologue
.line 3246
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mContext:Landroid/content/Context;
invoke-static {v0, p1}, Lcom/android/internal/policy/impl/PhoneWindowManager;->sendCloseSystemWindows(Landroid/content/Context;Ljava/lang/String;)V
.line 3247
return-void
.end method
.method setAttachedWindowFrames(Landroid/view/WindowManagerPolicy$WindowState;IILandroid/view/WindowManagerPolicy$WindowState;ZLandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
.registers 12
.parameter "win"
Add the RED color highlighted lines between them
Code:
.method sendCloseSystemWindows(Ljava/lang/String;)V
.registers 3
.parameter "reason"
.prologue
.line 3246
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mContext:Landroid/content/Context;
invoke-static {v0, p1}, Lcom/android/internal/policy/impl/PhoneWindowManager;->sendCloseSystemWindows(Landroid/content/Context;Ljava/lang/String;)V
.line 3247
return-void
.end method
[COLOR="red"].method protected sendFMBroadcast(Landroid/content/Intent;)V
.registers 3
.parameter "intent"
.prologue
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mContext:Landroid/content/Context;
invoke-virtual {v0, p1}, Landroid/content/Context;->sendBroadcast(Landroid/content/Intent;)V
return-void
.end method
.method protected sendMediaButtonEvent(I)V
.registers 15
.parameter "code"
.prologue
invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
move-result-wide v1
.local v1, eventtime:J
new-instance v11, Landroid/content/Intent;
const-string v4, "android.intent.action.MEDIA_BUTTON"
const/4 v5, 0x0
invoke-direct {v11, v4, v5}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V
.local v11, downIntent:Landroid/content/Intent;
new-instance v0, Landroid/view/KeyEvent;
const/4 v5, 0x0
const/4 v7, 0x0
move-wide v3, v1
move v6, p1
invoke-direct/range {v0 .. v7}, Landroid/view/KeyEvent;-><init>(JJIII)V
.local v0, downEvent:Landroid/view/KeyEvent;
const-string v4, "android.intent.extra.KEY_EVENT"
invoke-virtual {v11, v4, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Parcelable;)Landroid/content/Intent;
iget-object v4, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mContext:Landroid/content/Context;
const/4 v5, 0x0
invoke-virtual {v4, v11, v5}, Landroid/content/Context;->sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;)V
new-instance v12, Landroid/content/Intent;
const-string v4, "android.intent.action.MEDIA_BUTTON"
const/4 v5, 0x0
invoke-direct {v12, v4, v5}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V
.local v12, upIntent:Landroid/content/Intent;
new-instance v3, Landroid/view/KeyEvent;
const/4 v8, 0x1
const/4 v10, 0x0
move-wide v4, v1
move-wide v6, v1
move v9, p1
invoke-direct/range {v3 .. v10}, Landroid/view/KeyEvent;-><init>(JJIII)V
.local v3, upEvent:Landroid/view/KeyEvent;
const-string v4, "android.intent.extra.KEY_EVENT"
invoke-virtual {v12, v4, v3}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Parcelable;)Landroid/content/Intent;
iget-object v4, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mContext:Landroid/content/Context;
const/4 v5, 0x0
invoke-virtual {v4, v12, v5}, Landroid/content/Context;->sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;)V
return-void
.end method[/COLOR]
.method setAttachedWindowFrames(Landroid/view/WindowManagerPolicy$WindowState;IILandroid/view/WindowManagerPolicy$WindowState;ZLandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
.registers 12
.parameter "win"
4-STEP
add the following smali files in classoutcom\android\internal\policy\impl
PhoneWindowManager$23.smali
PhoneWindowManager$24.smali
(i have provided these two files in resources.zip attached below this post)
5-STEP
recompiling
come back to apktool main folder.and in the cmd prompt type this cmd to recompile..
Code:
java -Xmx512M -jar smali.jar classout/ -o new-classes.dex
and once its recompiled rename the new-classes.dex to classes.dex
and open the android.policy.jar with winrar archive drag the newly recompiled classes.dex into the archive and select compression level to store.
and ur done..
6-STEP
push the android.policy.jar into system/framework..
flash it via cwm using a flashable zip (i have also provided a flashable zip formate see attachment)
and u have a working skip to track in ur rom
Camera Button to play/pause music
1-STEP
decompile android.policy.jar
and open com\android\internal\policy\impl\PhoneWindowManager.smali
2-STEP
in phonewindowmanager.smalli find this line
.method public interceptKeyBeforeQueueing
now at the end of this method find this and add the red marked code
Code:
.line 2794
nop
nop
nop
nop
nop
:sswitch_data_28a
.sparse-switch
0x5 -> :sswitch_61
0x6 -> :sswitch_16c
0x18 -> :sswitch_9a
0x19 -> :sswitch_9a
0x1a -> :sswitch_1ae
[COLOR="Red"]0x1b -> :sswitch_195[/COLOR]
0x4f -> :sswitch_236
0x55 -> :sswitch_228
0x56 -> :sswitch_236
0x57 -> :sswitch_236
0x58 -> :sswitch_236
0x59 -> :sswitch_236
0x5a -> :sswitch_236
0x5b -> :sswitch_236
0x7e -> :sswitch_228
0x7f -> :sswitch_228
0x82 -> :sswitch_236
0xa4 -> :sswitch_9a
0x400 -> :sswitch_265
.end sparse-switch
(1b is the KEYCODE_CAMERA hex code, see docs:KEYCODE_CAMERA
so after adding that code it should look like this....
now scroll few lines up to find this line...
Code:
.line 3000
.end local v3 #ex:Landroid/os/RemoteException;
.end local v11 #telephonyService:Lcom/android/internal/telephony/ITelephony;
[COLOR="Blue"]:sswitch_265[/COLOR]
if-eqz v2, :cond_27f
if-nez v9, :cond_27f
.line 3001
iget-object v12, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mBroadcastWakeLock:Landroid/os/PowerManager$WakeLock;
invoke-virtual {v12}, Landroid/os/PowerManager$WakeLock;->acquire()V
.line 3002
iget-object v12, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHandler:Landroid/os/Handler;
new-instance v13, Lcom/android/internal/policy/impl/PhoneWindowManager$PassVendorKey;
new-instance v14, Landroid/view/KeyEvent;
now see the above code where marked in blue from there leave some space like this...
next add these lines between the spaces
Code:
[COLOR="Red"]:sswitch_195
if-eqz v2, :cond_195
invoke-virtual {p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->isScreenOnEarly()Z
move-result v12
if-nez v12, :cond_195
const/16 v12, 0x55
invoke-virtual {p0, v12}, Lcom/android/internal/policy/impl/PhoneWindowManager;->sendMediaButtonEvent(I)V
.line 901
const/4 v12, 0x0
iput-boolean v12, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsVolumeAction:Z
:cond_195
goto/16 :goto_23
.line 4000[/COLOR]
so from now its very simple remove all the spaces so it will end up look like this...
once u done it save the file
3-STEP
recompile it
and flash it and enjoy the new mod..
SMALL APPS FOR CM BASED ROM
1-STEP
decompile framework-res.apk
goto res/values/strings.xml and add these lines a the end
Code:
<string name="permlab_externalTaskSwitcher">Start as an external task switcher</string>
<string name="permdesc_externalTaskSwitcher">Allows the application to be an external task switcher replacing the native task switcher</string>
<string name="permlab_smallapp">Small application overlay</string>
<string name="permdesc_smallapp">Allows running movable small applications on top of other applications.</string>
open AndroidManifest.xml
and add the following lines
Code:
<permission android:name="android.permission.SYSTEM_ALERT_WINDOW" android:label="@string/permlab_systemAlertWindow" android:description="@string/permdesc_systemAlertWindow" android:protectionLevel="dangerous" android:permissionGroup="android.permission-group.SYSTEM_TOOLS" />
and
Code:
<permission android:name="com.sony.smallapp.permission.SMALLAPP" android:label="@string/permlab_smallapp" android:description="@string/permdesc_smallapp" android:protectionLevel="dangerous" />
like this shown in the pic..
done recompile the framework-res.apk
2-STEP
decompile android.policy.jar
and open com\android\internal\policy\impl\PhoneWindowManager.smal
and add the red marked lines
Code:
.field static final SEARCH_BAR_LAYER:I = 0x4
.field static final SECURE_SYSTEM_OVERLAY_LAYER:I = 0x17
.field static final SEPARATE_TIMEOUT_FOR_SCREEN_SAVER:Z = false
.field static final SHOW_PROCESSES_ON_ALT_MENU:Z = false
[COLOR="red"].field static final SHOW_STARTING_ANIMATIONS:Z = true
.field static final SMALLAPP_LAYER:I = 0x3[/COLOR]
.field static final STATUS_BAR_LAYER:I = 0xf
.field static final STATUS_BAR_PANEL_LAYER:I = 0x10
.field static final STATUS_BAR_SUB_PANEL_LAYER:I = 0xe
and find these lines in the same file.
Code:
[COLOR="Blue"].method public checkAddPermission(Landroid/view/WindowManager$LayoutParams;)I
.locals 4
.parameter "attrs"
.prologue
const/4 v2, 0x0
.line 1609
iget v1, p1, Landroid/view/WindowManager$LayoutParams;->type:I
.line 1611
.local v1, type:I
const/16 v3, 0x7d0
if-lt v1, v3, :cond_0
const/16 v3, 0xbb7
if-le v1, v3, :cond_1
.line 1643
:cond_0
:goto_0
return v2
.line 1615
:cond_1
const/4 v0, 0x0
.line 1616
.local v0, permission:Ljava/lang/String;
sparse-switch v1, :sswitch_data_0
.line 1635
const-string v0, "android.permission.INTERNAL_SYSTEM_WINDOW"
.line 1637
:goto_1
:sswitch_0
if-eqz v0, :cond_0
.line 1638
iget-object v3, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mContext:Landroid/content/Context;
invoke-virtual {v3, v0}, Landroid/content/Context;->checkCallingOrSelfPermission(Ljava/lang/String;)I
move-result v3
if-eqz v3, :cond_0
.line 1640
const/4 v2, -0x8
goto :goto_0
.line 1632
:sswitch_1
const-string v0, "android.permission.SYSTEM_ALERT_WINDOW"
.line 1633
goto :goto_1
.line 1616
nop
:sswitch_data_0
.sparse-switch
0x7d2 -> :sswitch_1
0x7d3 -> :sswitch_1
0x7d5 -> :sswitch_0
0x7d6 -> :sswitch_1
0x7d7 -> :sswitch_1
0x7da -> :sswitch_1
0x7db -> :sswitch_0
0x7dd -> :sswitch_0
0x7e7 -> :sswitch_0
.end sparse-switch
.end method[/COLOR]
no is the funny part replace all the above blue marked lines with the below red marked lines
Code:
[COLOR="red"].method public checkAddPermission(Landroid/view/WindowManager$LayoutParams;)I
.locals 4
.parameter "attrs"
.prologue
const/4 v2, 0x0
.line 1115
iget v1, p1, Landroid/view/WindowManager$LayoutParams;->type:I
.line 1117
.local v1, type:I
const/16 v3, 0x7d0
if-lt v1, v3, :cond_0
const/16 v3, 0xbb7
if-le v1, v3, :cond_1
.line 1152
:cond_0
:goto_0
return v2
.line 1121
:cond_1
const/4 v0, 0x0
.line 1122
.local v0, permission:Ljava/lang/String;
sparse-switch v1, :sswitch_data_0
.line 1144
const-string v0, "android.permission.INTERNAL_SYSTEM_WINDOW"
.line 1146
:goto_1
:sswitch_0
if-eqz v0, :cond_0
.line 1147
iget-object v3, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mContext:Landroid/content/Context;
invoke-virtual {v3, v0}, Landroid/content/Context;->checkCallingOrSelfPermission(Ljava/lang/String;)I
move-result v3
if-eqz v3, :cond_0
.line 1149
const/4 v2, -0x8
goto :goto_0
.line 1137
:sswitch_1
const-string v0, "android.permission.SYSTEM_ALERT_WINDOW"
.line 1138
goto :goto_1
.line 1141
:sswitch_2
const-string v0, "com.sony.smallapp.permission.SMALLAPP"
.line 1142
goto :goto_1
.line 1122
:sswitch_data_0
.sparse-switch
0x7d2 -> :sswitch_1
0x7d3 -> :sswitch_1
0x7d5 -> :sswitch_0
0x7d6 -> :sswitch_1
0x7d7 -> :sswitch_1
0x7da -> :sswitch_1
0x7db -> :sswitch_0
0x7dd -> :sswitch_0
0xbb5 -> :sswitch_2
0xbb6 -> :sswitch_2
.end sparse-switch
.end method[/COLOR]
save it..done now recompile the android.policy.jar
3-STEP
decompile framework.jar
add the whole sony folder (provided in the resources.zip attached below ) in classout/com
and recompile framework.jar
4-STEP
now u need to add some files in system/app
system/etc
system/framework
all the files are provided in resources.zip so just take them and add those files in ur flashable zip
5-STEP
once u flash the mod .u need an Slauncher app to launch the small apps...download it from google play
so its done enjoy the smalls on cm based roms..
Hope it helps u guys
if u guys are having trouble making it ...make a req to me ill make one for u when iam free..
ps-when it comes to making a thread iam really bad at it plz co-operate
if u like my tut plz press thanks
IF u like my work donate me and ATM my device is screwed have to repair it will cost more plz help me to get my device repaired by donating me
HOW TO DONATE ME
Due to some rules paypal donate button is disabled in INDIA. So any one willing to donate me please follow this :
* Login to ur paypal account
* Option "Personal payment" doesn't work for India, please set "Online purchases". and check Goods or Service (preferably service)
* Send desired payment
* Input my paypal email there : [email protected]
* Thank you!
Click to expand...
Click to collapse
How to add xperia S/T lockscreen ,small apps ,magnification glass
Xperia S/T Lockscreen TUT
requirements.
framework-res.apk
android.policy.jar
notpad++
winrar
knowledge of how to decompile and recompile
If u guys want a good tut for de/recompiling here is good guide by my good friend Stanlin salu
http://forum.xda-developers.com/showthread.php?t=2011254
1-STEP
decompile framework-res.apk
navigate to res/values
and open strings.xml
here add these two at the end (see pic for reference.) and save it
Code:
<string name="permlab_external_lockscreen">xperia lockscreen</string>
<string name="permdesc_external_lockscreen">xperia loxkscreen</string>
2-STEP
in the same values folder
open public.xml
and these strings just below the line show in the below pic and save it
Code:
<public type="string" name="permlab_external_lockscreen" id="0x01040525" />
<public type="string" name="permdesc_external_lockscreen" id="0x01040526" />
IMPORTANT
0x01040525 ,0x01040526 these are called hex codes and should in a proper order
for ex from the above codes the last 4 hex codes should in this way
0x01040524
0x01040525
0x01040526
0x01040527
public.xml sample hexadecimal codes
0x70000000
0x70000001
0x70000002
0x70000003
0x70000004
0x70000005
0x70000006
0x70000007
0x70000008
0x70000009
0x7000000a
0x7000000b
0x7000000c
0x7000000d
0x7000000e
0x7000000f
0x70000010
Click to expand...
Click to collapse
a little info about hex codes
hex codes starts from 0-9 and a-f and so one
so they must in the order according to it.
Click to expand...
Click to collapse
3-STEP
come back to main framework-res folder
and open AndroidManifest.xml
and add these line just below line shown in the pic and save it
Code:
<permission android:label="@string/permlab_external_lockscreen" android:name="com.sonyericsson.permission.EXTERNAL_LOCKSCREEN" android:protectionLevel="signatureOrSystem" android:description="@string/permdesc_external_lockscreen" />
4-STEP
recompile the framework-res.apk
5-STEP
decompile android.policy.jar
navigate to com\android\internal\policy\impl\
and add this ExternalLockScreen.smali and LockPatternKeyguardView.smali file there (smali file is provided by in the resources zip attached in this post)
and recompile it back
6-STEP
i have attached a flashable zip for format in this post below
put the following files it
uxpnxtlockscreen.apk (provided in resorces zip by me)
settings.apk (which supports XS LS , which can be found easily in this forum) (or may be later ill tell how to add them in ur settings)
android.policy.jar
framework-res.apk
zip and flash it..and ur done ...
HOW TO ADD SMALL APPS
1-STEP
Decompile framework-res.apk
and navigate to res/values/strings.xml
and add these 4 lines at the end as shown in the pic. and save it
Code:
<string name="permlab_smallapp">Small application overlay</string>
<string name="permdesc_smallapp">Allows running movable small applications on top of other applications.</string>
<string name="permlab_externalTaskSwitcher">Start as an external task switcher</string>
<string name="permdesc_externalTaskSwitcher">Allows the application to be an external task switcher replacing the native task switcher</string>
2-STEP
in the same values folder open public.xml
and add these 4 lines below the line shown in the pic and save it
Code:
<public type="string" name="permlab_smallapp" id="0x01040550" />
<public type="string" name="permdesc_smallapp" id="0x01040551" />
<public type="string" name="permlab_externalTaskSwitcher" id="0x01040552" />
<public type="string" name="permdesc_externalTaskSwitcher" id="0x01040553" />
3-STEP
come back to main framework-res folder
and open AndroidManifest.xml
now add this line as shown in the pic
Code:
<permission android:label="@string/permlab_externalTaskSwitcher" android:name="com.sonymobile.permission.EXTERNAL_TASK_SWITCHER" android:protectionLevel="signatureOrSystem" android:description="@string/permdesc_externalTaskSwitcher" />
and this line as shown in pic .and save it
Code:
<permission android:label="@string/permlab_smallapp" android:name="com.sony.smallapp.permission.SMALLAPP" android:protectionLevel="dangerous" android:description="@string/permdesc_smallapp" />
Now recompile the framework-res.apk
4-STEP
decompile framework.jar
and the whole sony folder which consists of small apps samli (i have provided in small apps resources.zip )
recompile it
done
5-STEP
u need some framework files and some permissions files ( provided in resources.zip)
1-etc/permissions
2- small app framework jar file
3-small apps supported services.
4-the small apps
6-STEP
now all mods are ready only thing need is small apps (which i have provided in small apps resources.zip)
and also make u use the small apps supported susyemUI.apk (which can be found in this forum)
put all these files in the flashable zip formate i have provided below..
and enjoy ur small apps
HOW TO ADD THE FAMOUS MAGNIFICATION GLASS TO UR FRAMEWORK..
(a big thanks to AEON WORLD)
1-STEP
decompile ur framework-res.apk
2-STEP
navigate to res/values and edit the following xml's
Dimens.xml add these lines at the end..as shown in the pic
Code:
<dimen name="magnifier_selection_handle_offset_y">44.0dip</dimen>
<dimen name="roundMagnificationRadius">55.0dip</dimen>
<dimen name="rectangularMagnificationWidth">179.0dip</dimen>
<dimen name="rectangularMagnificationHeight">74.0dip</dimen>
<dimen name="selection_handle_offset_y">42.0dip</dimen>
<dimen name="selection_handle_right_offset_x">15.0dip</dimen>
<dimen name="selection_handle_left_offset_x">7.0dip</dimen>
Public.xml add the following lines as shown in pic
under public type demin
Code:
<public type="dimen" name="magnifier_selection_handle_offset_y" id="0x01050078" />
<public type="dimen" name="roundMagnificationRadius" id="0x01050079" />
<public type="dimen" name="rectangularMagnificationWidth" id="0x0105007a" />
<public type="dimen" name="rectangularMagnificationHeight" id="0x0105007b" />
<public type="dimen" name="selection_handle_offset_y" id="0x0105007c" />
<public type="dimen" name="selection_handle_right_offset_x" id="0x0105007d" />
<public type="dimen" name="selection_handle_left_offset_x" id="0x0105007e" />
note ur hex codes should be order..
under public type drawables
<public type="drawable" name="textfield_search_right_holo" id="0x010807fb" />
<public type="drawable" name="semc_magnifier_arrow_above" id="0x010807fc" />
<public type="drawable" name="semc_magnifier_arrow_left" id="0x010807fd" />
<public type="drawable" name="semc_magnifier_arrow_right" id="0x010807fe" />
<public type="drawable" name="semc_magnifier_rectangle" id="0x010807ff" />
<public type="drawable" name="semc_magnifier_round" id="0x01080800" />
again the hex codes should in order
3-STEP
put the pngs which i have provided in magni_resoures.rar to drawables-hpdi folder
4-STEP
now recompile the framework-res.apk..
5-STEP
now decompile ur framewok.jar
add the following files provided in magni_resoreces.rar
copy all the files in webkit folder and paste it in classout/android/webkit folder
and copy all the files widget folder and paste it in classout/android/widget folder
wait dont recomplie yet (see next step )
6-STEP
now we have to compare some id's from ur public.xml and MagnifierView.smali to assign the same id's for drawables and dimes present in public.xml
Open ur both Public.xml and MagnifierView.smali at the same time and do the following
in magnifierView.smali
1- Find this line and assign <public type="drawable" name="semc_magnifier_round" id="0x010807f9" /> id here
Code:
.line 413
move-object/from16 v0, p0
iget-object v3, v0, Landroid/widget/MagnifierView;->mFrames:[Landroid/graphics/drawable/Drawable;
const/4 v4, 0x0
const v5, 0x10[COLOR="Red"]807f9[/COLOR]
2- Find this line and assign <public type="drawable" name="semc_magnifier_rectangle" id="0x010807f8" /> id here
Code:
.line 414
move-object/from16 v0, p0
iget-object v3, v0, Landroid/widget/MagnifierView;->mFrames:[Landroid/graphics/drawable/Drawable;
const/4 v4, 0x1
const v5, 0x10[COLOR="red"]807f8[/COLOR]
3-Find this line and assign <public type="dimen" name="roundMagnificationRadius" id="0x01050073" /> id here
Code:
.line 422
const v3, 0x10[COLOR="red"]50073[/COLOR]
invoke-virtual {v12, v3}, Landroid/content/res/Resources;->getDimensionPixelSize(I)I
move-result v13
4-Find this line and assign <public type="dimen" name="rectangularMagnificationWidth" id="0x01050074" /> id here
Code:
.line 426
move-object/from16 v0, p0
iget-object v3, v0, Landroid/widget/MagnifierView;->mMagnificationWidth:[I
const/4 v4, 0x1
const v5, 0x10[COLOR="red"]50074[/COLOR]
5-Find this line and assign <public type="dimen" name="rectangularMagnificationHeight" id="0x01050075" /> id here
Code:
.line 428
move-object/from16 v0, p0
iget-object v3, v0, Landroid/widget/MagnifierView;->mMagnificationHeight:[I
const/4 v4, 0x1
const v5, 0x10[COLOR="red"]50075[/COLOR]
6-Find this line and assign <public type="dimen" name="selection_handle_offset_y" id="0x01050076" /> id here
Code:
.line 452
move-object/from16 v0, p0
iget-object v3, v0, Landroid/widget/MagnifierView;->mArrowDrawables:[Landroid/graphics/drawable/Drawable;
const/4 v4, 0x0
const v5, 0x10[COLOR="red"]50076[/COLOR]
7-Find this line and assign <public type="dimen" name="selection_handle_right_offset_x" id="0x01050077" /> id here
Code:
.line 454
move-object/from16 v0, p0
iget-object v3, v0, Landroid/widget/MagnifierView;->mArrowDrawables:[Landroid/graphics/drawable/Drawable;
const/4 v4, 0x1
const v5, 0x10[COLOR="red"]50077[/COLOR]
8-Find this line and assign <public type="dimen" name="selection_handle_left_offset_x" id="0x01050078" /> id here
Code:
.line 456
move-object/from16 v0, p0
iget-object v3, v0, Landroid/widget/MagnifierView;->mArrowDrawables:[Landroid/graphics/drawable/Drawable;
const/4 v4, 0x2
const v5, 0x10[COLOR="red"]50078[/COLOR]
once u done it..
recompile ur framework.jar
STEP-7
now use the flashable zip i have provided to flash this mod..
PS- my way for presentation of this TUT is bad...hope u guys understand.
CREDITS:
AOEN WORLD -for resources.and initial tut
More TUTS here
Adding options in settings.apk
well friends today iam going to show u have to add options like CPU control, panel settings , navigation bar in ur settings.apk
SO lets start
1-STEP
install the frameworks from the rom from where u are taking the settings.apk
2-STEP
hope u guys know how to decompile iam not going to explain it
so decompile the settings.apk (make sure u set the compression level 128mb)
3-STEP
once decompiled
goto res\values
1)strings.xml
add the lines at the end
creating a header name
add this line at the end
Code:
[B]<string name="header_category_advanced">[COLOR="Red"]Sandy's mod[/COLOR]</string>[/B]
note:u can change the red colored highlighted name to any thing..
for CPU control
Code:
[B]<string name="overclocktool_title">CPU control</string>[/B]
for quickpanel
Code:
[B]<string name="quickpanel_location">Quick panel</string>[/B]
for navigation bar
Code:
[B]<string name="nav_title">Navigation button</string>[/B]
for sim card option
Code:
<string name="sim_title">SIM card</string>
For sms counter
Code:
<string name="sms_title">SMS counter</string>
for lockscreen changer
Code:
<string name="lockscreen_title">Lock screen</string>
for audio effect
Code:
<string name="audio_title">Audio</string>
for LED control app
Code:
<string name="led_title">LED control</string>
so one u add all these lines in strings.xml it should look like this
2)Public.xml
now add these lines at the end of <public type="string" line
for CPU control
Code:
[B]<public type="string" name="overclocktool_title" id="0x7f0b0658" />[/B]
for quickpanel
Code:
[B]<public type="string" name="quickpanel_location" id="0x7f0b065b" />[/B]
for navigation bar
Code:
[B]<public type="string" name="nav_title" id="0x7f0b065c" />[/B]
for sim card option
Code:
<public type="string" name="sim_title" id="0x7f0b062d" />
For sms counter
Code:
<public type="string" name="sms_title" id="0x7f0b062e" />
for lockscreen changer
Code:
<public type="string" name="lockscreen_title" id="0x7f0b0633" />
for audio effect
Code:
<public type="string" name="audio_title" id="0x7f0b062b" />
for LED control app
Code:
<public type="string" name="led_title" id="0x7f0b062f" />
IMP:- make sure the hex codes are in order
so one u add all these lines in public.xml it should look like this
4-STEP
goto res/xml/settings_headers.xml
and add the following lines.
For add the header that u created.
Code:
[B]<header android:title="@string/header_category_advanced" />[/B]
now placing the option that u have created
for CPU control
Code:
[B]<header android:icon="@drawable/ic_overclocktool" android:title="@string/overclocktool_title">
<intent android:targetPackage="it.sineo.android.noFrillsCPUClassic" android:action="android.intent.action.MAIN" android:targetClass="it.sineo.android.noFrillsCPUClassic.activity.MainActivity" />
</header>[/B]
for quickpanel
Code:
[B]<header android:icon="@drawable/ic_settings_quickpanel" android:id="@id/quickpanel_location_settings" android:title="@string/quickpanel_location">
<intent android:targetPackage="com.lidroid.quickpanel" android:targetClass="com.lidroid.quickpanel.MainActivity" />
</header>[/B]
for navigation bar
Code:
[B]<header android:icon="@drawable/ic_nav" android:title="@string/nav_title">
<intent android:targetPackage="cn.kyle.gn.NavBar" android:action="android.intent.action.MAIN" android:targetClass="cn.kyle.gn.NavBar.GnNavBarActivity" />
</header>[/B]
for sim card option
Code:
<header android:icon="@drawable/ic_sim" android:title="@string/sim_title">
<intent android:targetPackage="com.gsmdev.simcard" android:action="android.intent.action.MAIN" android:targetClass="com.gsmdev.simcard.MainActivity" />
</header>
For sms counter
Code:
<header android:icon="@drawable/ic_sms" android:title="@string/sms_title">
<intent android:targetPackage="org.kknd.android.smscounter" android:action="android.intent.action.MAIN" android:targetClass="org.kknd.android.smscounter.SmsCounterActivity" />
</header>
for lockscreen changer
Code:
<header android:icon="@drawable/ic_settings_lockstyle" android:title="@string/lockscreen_title">
<intent android:targetPackage="com.gagan.style" android:targetClass="com.gagan.style.LockscreenStyleActivity" />
</header>
for audio effect
Code:
<header android:icon="@drawable/ic_audio" android:title="@string/audio_title">
<intent android:targetPackage="org.nocrew.tomas.headsetnotifierfree" android:action="android.intent.action.MAIN" android:targetClass="org.nocrew.tomas.headsetnotifierfree.HeadsetNotifierActivity" />
</header>
for LED control app
Code:
<header android:icon="@drawable/ic_led" android:title="@string/led_title">
<intent android:targetPackage="com.koo.lightmanager" android:action="android.intent.action.MAIN" android:targetClass="com.koo.lightmanager.MainActivity" />
</header>
so one u add all these lines in settings_headers.xml it should look like this
5-STEP
now we have to add some png's for these options in settings..
i have provided the pngs in 'settings_resources.rar' attached below
add the png's in this place like this
MDPI- res\drawables-mdpi
HDPI- res\drawables-hdpi
6-STEP
recompile it new its done
7-STEP
new u need th push the settings with options apk's (like cpu OC ,panel settings ' nav bar)
i have provided the apk's in settings_resources.rar
8-STEP
now push these settings.apk and other apks using a flashable zip formate i have attached below
HOW TO ADD PER APP DPI IN DISPLAY SETTINGS
1-STEP
decompile settings.apk
open res/values/strings.xml
and add these lines at the end
Code:
<string name="dpi_enable">per app dpi</string>
<string name="dpi_enable_summary">Tablet UI</string>
<string name="dpi_settings">dpi settings</string>
<string name="dpi_settings_summary">change dpi of each app</string>
2-STEP
open res/xml/display_settings.xml
and add the red marked lines..
Code:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen android:title="@string/display_settings"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
<CheckBoxPreference android:title="@string/swiqi_strings_swiqi_txt" android:key="swiqi_strings_swiqi_txt" android:summary="@string/swiqi_strings_swiqi_desc_txt" />
<com.android.settings.BrightnessPreference android:title="@string/brightness" android:key="brightness" android:dialogTitle="@string/brightness" />
<PreferenceScreen android:title="@string/wallpaper_settings_title" android:key="wallpaper" android:fragment="com.android.settings.WallpaperTypeSettings" />
<CheckBoxPreference android:title="@string/accelerometer_title" android:key="accelerometer" />
<ListPreference android:persistent="false" android:entries="@array/screen_timeout_entries" android:title="@string/screen_timeout" android:key="screen_timeout" android:summary="@string/screen_timeout_summary" android:entryValues="@array/screen_timeout_values" />
<ListPreference android:entries="@array/font_size_entries" android:title="@string/title_font_size" android:key="font_size" android:summary="@string/summary_font_size" android:dialogTitle="@string/dialog_title_font_size" android:entryValues="@array/font_size_values" />
<CheckBoxPreference android:persistent="false" android:title="@string/notification_pulse_title" android:key="notification_pulse" />
<PreferenceCategory android:title="@string/display_category_personalisation_title" android:key="personalisation_category">
<PreferenceScreen android:title="@string/theme_label" android:key="theme" android:summary="@string/theme_summary" />
<PreferenceScreen android:title="@string/lockscreen_label" android:key="lockscreen" android:summary="@string/lockscreen_summary" />
[COLOR="red"]<PreferenceScreen android:title="@string/dpi_enable" android:key="dpi" android:summary="@string/dpi_enable_summary">
<intent android:targetPackage="de.robv.android.xposed.installer" android:action="android.intent.action.MAIN" android:targetClass="de.robv.android.xposed.installer.XposedInstallerActivity" />
</PreferenceScreen>
<PreferenceScreen android:title="@string/dpi_settings" android:key="dpi" android:summary="@string/dpi_settings_summary">
<intent android:targetPackage="de.robv.android.xposed.mods.appsettings" android:action="android.intent.action.MAIN" android:targetClass="de.robv.android.xposed.mods.appsettings.XposedModActivity" />
</PreferenceScreen>[/COLOR]
</PreferenceCategory>
</PreferenceScreen>
3-STEP
push the xposed apps provided in settings_resoures_new.rar to system/app
so thats it..
CREDITS
Serajr
Till-Kurpse
gagan
so thats it..hope its understandable
if u like my contributions hit the thanks button or buy me a beer (make me drunk )
[ Guide for using .13 with .587 Mods ]
Hi,
In this guide I'll show you how to use mods from the old .587 with the new. 13 ics software found here:
4.1.B.1.13 Port by Jader13254
(xperia-arc-development)
.13 has some new java code inside framework & libs, so we need to port .587 mods...
This is nooby-easy and doesn't requiere ANY coding experience...
BUT you need to know how to use apktool & java..
You need:
Apktool
Notepad++
7zip
PC
1. Download any Mod you want...
2. Get "framework.jar" out of the mod using 7zip & copy to C:\
3. open a cmd window & type "apktool d C:\framework.jar C:\framework
4. open C:\framework
5. download this and paste inside /framework (put the files from /smali inside the /smali from the C:\framework)
6. now open a cmd window
7. type "apktool b C:\framework"
8. put C:\framework\dist\framework.jar (after built complete) back inside the .zip of your mod..
9. flash it via cwm
10. done, enjoy
btw, feel free to press thanks
correction crt off animation have to change from true to false
AW: [TUTORIAL] How to add various framework mods
I dont read all but is there a description how to go with headphones?
sorry for my little english
sinoboss said:
I dont read all but is there a description how to go with headphones?
sorry for my little english
Click to expand...
Click to collapse
what?
added xperia s lockscreen and small apps TUT
thanks for tuts. If you know the important thing is long press back button to kill apps. I belive lots of people need that..
SKIP TRACK VIA VOL LONG PRESS not Work Error ???
Send Me ur Apktool ...
problem Solved Wrong Code
Code:
.line 2841
invoke-direct {p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->cancelPendingScreenshotChordAction()V
invoke-virtual {p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->handleVolumeLongPressAbort()V
invoke-virtual {p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->isMusicActive()Z
move-result v12
if-eqz v12, :cond_c2
move-object/from16 v0, p0
iget-boolean v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsLongPress:Z
move v12, v0
if-nez v12, :cond_c2
and-int/lit8 v12, v10, 0x1
if-nez v12, :cond_c2
const/4 v12, 0x3
move-object/from16 v0, p0
invoke-virtual {v0, v12, v8}, Lcom/android/internal/policy/impl/PhoneWindowManager;->handleVolumeKey(II)V
goto :goto_c2
.line 2843
to
Code:
.line 2841
invoke-direct {p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->cancelPendingScreenshotChordAction()V
invoke-virtual {p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->handleVolumeLongPressAbort()V
invoke-virtual {p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->isMusicActive()Z
move-result v12
if-eqz v12, :cond_c0
move-object/from16 v0, p0
iget-boolean v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsLongPress:Z
move v12, v0
if-nez v12, :cond_c0
and-int/lit8 v12, v10, 0x1
if-nez v12, :cond_c0
const/4 v12, 0x3
move-object/from16 v0, p0
invoke-virtual {v0, v12, v8}, Lcom/android/internal/policy/impl/PhoneWindowManager;->handleVolumeKey(II)V
goto :goto_c0
.line 2843
thanks for letting me know the code...... appreciate it..
sry out of 8 thanks
@sandy7, Great work bro! :good:
Hi, Sandy, I have some question here. What if the id at public.xml that is used for the following line to add small app are like these:
<public type="string" name="permlab_smallapp" id="0x01040552" />
<public type="string" name="permdesc_smallapp" id="0x01040553" />
<public type="string" name="permlab_external_lockscreen" id="0x01040554" />
<public type="string" name="permdesc_external_lockscreen" id="0x01040555" />
<public type="string" name="permlab_externalTaskSwitcher" id="0x01040556" />
<public type="string" name="permdesc_externalTaskSwitcher" id="0x01040557" />
should I edit those smali at the small app apk and framework.jar? which line should be changed? I'm from Optimax, the framework of that ROM last string id ends at 0x01040551, so I cant use the lines provided by you or else fail recompile as the co-exist of the id.
mind to teach me how to do it?
xange said:
Hi, Sandy, I have some question here. What if the id at public.xml that is used for the following line to add small app are like these:
<public type="string" name="permlab_smallapp" id="0x01040552" />
<public type="string" name="permdesc_smallapp" id="0x01040553" />
<public type="string" name="permlab_external_lockscreen" id="0x01040554" />
<public type="string" name="permdesc_external_lockscreen" id="0x01040555" />
<public type="string" name="permlab_externalTaskSwitcher" id="0x01040556" />
<public type="string" name="permdesc_externalTaskSwitcher" id="0x01040557" />
should I edit those smali at the small app apk and framework.jar? which line should be changed? I'm from Optimax, the framework of that ROM last string id ends at 0x01040551, so I cant use the lines provided by you or else fail recompile as the co-exist of the id.
mind to teach me how to do it?
Click to expand...
Click to collapse
well no need edit any smali's just add the smali's i have provided in resources.zip in framework.jar..
well about public.xml
u are telling that the last id ends at 0x01040551 so the next id's will be like this
0x01040552
0x01040553
0x01040554
0x01040555
0x01040556
0x01040557
0x01040558
0x01040559
0x0104055a
0x0104055b
and so on
and if ur adding only small apps u dont need these lines..
<public type="string" name="permlab_external_lockscreen" id="0x01040554" />
<public type="string" name="permdesc_external_lockscreen" id="0x01040555" />
these are for lockscreen
Sandy, you are no less than a God to me, I have always wanted to learn and know,
the volume key hack/mod. Could you tell me it's possible on any version of Android, (from Donut to JB) also would it work on OEM's. Like am on stock Galaxy Note 2 would it work?
OR if i go back to X10i stock would it work? Or are there other formalities?
Re: [TUTORIAL] How to add various framework mods
Sandy :thumbup::thumbup: bro you made my day!
Hope I can learn some things from this tut!
Hope you find time to add some more mod guides!
Sent from my MT11i using xda premium
Re: [TUTORIAL] How to add various framework mods
pathaniya said:
Sandy, you are no less than a God to me, I have always wanted to learn and know,
the volume key hack/mod. Could you tell me it's possible on any version of Android, (from Donut to JB) also would it work on OEM's. Like am on stock Galaxy Note 2 would it work?
OR if i go back to X10i stock would it work? Or are there other formalities?
Click to expand...
Click to collapse
Should be the same..any how upload ur android.policy.jar ill go through it...and see if it has any changes..
Sent from my SK17i using XDA Premium HD app
Re: [TUTORIAL] How to add various framework mods
Ghostfreak NB said:
Sandy :thumbup::thumbup: bro you made my day!
Hope I can learn some things from this tut!
Hope you find time to add some more mod guides!
Sent from my MT11i using xda premium
Click to expand...
Click to collapse
Hope u like it..
Yes back to kill all apps tut is in process..will add soon.
Sent from my SK17i using XDA Premium HD app
Re: [TUTORIAL] How to add various framework mods
sandy7 said:
Hope u like it..
Yes back to kill all apps tut is in process..will add soon.
Sent from my SK17i using XDA Premium HD app
Click to expand...
Click to collapse
No doubting that + you kept your word bro!
You'd told I'd be making a guide when we'd talked over pm!
Will require your help! Hope you'd
Help me and not get offended! (final exams are near so not much chance before that,but once its over! I'd be the 1st one to trouble you, just kiddin ')
Sent from my MT11i using xda premium
Sandy would it be too much to ask if you can incorporate download links in your original posts. Since google so so much to offer, too many links to go through.
How to enable AOSP lockscreen for the S4
As always, for reasons of keeping things simple I use my Rom Control file to house all my MOD settings. Its easier to add and remove code and never changes with updates.
We will be working with three files:
SecSettings
framework-res
android.policy
We will begin with SecSettings
Navigate to res/values/strings and add the following:
Code:
<string name="lockscreen_title">Enable AOSP lockscreen</string>
<string name="lockscreen_summary">Choose AOSP or TW lockscreen</string>
Navigate to res/xml/rom_settings (or your xml of choice) and add the following:
Code:
<CheckBoxPreference android:title="@string/lockscreen_title" android:key="aosp_lock_enabled" android:summary="@string/lockscreen_summary" />
Navigate to smali/com/android/settings/didact/RomSettings.smali (or your settings smali of choice) and add the following:
The first lines just describe what method to add the code to. Dont copy them into the file.
Code:
.field mAospLock:Landroid/preference/CheckBoxPreference;
Code:
[B]In .method public onCreate(Landroid/os/Bundle;)V.....[/B]
:goto_4
invoke-virtual {v4, v1}, Landroid/preference/CheckBoxPreference;->setChecked(Z)V
const-string v1, "aosp_lock_enabled"
invoke-virtual {p0, v1}, Lcom/android/settings/didact/RomSettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
move-result-object v1
check-cast v1, Landroid/preference/CheckBoxPreference;
iput-object v1, p0, Lcom/android/settings/didact/RomSettings;->mAospLock:Landroid/preference/CheckBoxPreference;
iget-object v4, p0, Lcom/android/settings/didact/RomSettings;->mAospLock:Landroid/preference/CheckBoxPreference;
invoke-virtual {p0}, Lcom/android/settings/didact/RomSettings;->getActivity()Landroid/app/Activity;
move-result-object v1
invoke-virtual {v1}, Landroid/app/Activity;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v1
const-string v5, "aosp_lock_enabled"
invoke-static {v1, v5, v3}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v1
if-ne v1, v2, :cond_5
move v1, v2
:goto_5
invoke-virtual {v4, v1}, Landroid/preference/CheckBoxPreference;->setChecked(Z)V
Code:
[B]in .method public onPreferenceTreeClick(Landroid/preference/PreferenceScreen;Landroid/preference/Preference;)Z[/B]
:cond_9
invoke-static {v2, v3, v0}, Landroid/provider/Settings$System;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z
goto/16 :goto_0
:cond_a
iget-object v2, p0, Lcom/android/settings/didact/RomSettings;->mAospLock:Landroid/preference/CheckBoxPreference;
if-ne p2, v2, :cond_1
invoke-virtual {p0}, Lcom/android/settings/didact/RomSettings;->getActivity()Landroid/app/Activity;
move-result-object v2
invoke-virtual {v2}, Landroid/app/Activity;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v2
const-string v3, "aosp_lock_enabled"
check-cast p2, Landroid/preference/CheckBoxPreference;
invoke-virtual {p2}, Landroid/preference/CheckBoxPreference;->isChecked()Z
move-result v4
if-eqz v4, :cond_b
move v0, v1
:cond_b
invoke-static {v2, v3, v0}, Landroid/provider/Settings$System;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z
goto/16 :goto_0
.end method
Thats it for SecSettings. Again, you may wish to add these mods to lockscreen settings ot your own xml control. If you want to add them to lockscreen settings, have a look at my guide for the S3, it goes into how to do that. Now on to Framework-res in the next section......
AOSP Lockscreen with toggle, part 2.....framework-res
In this file we will be doing two things:
Centering the glowpad in your screen
adding lock targets with camera (stock only adds unlock).
Navigate to res/layout/keyguard_selector_view.xml and replace the whole file with the following:
Code:
<?xml version="1.0" encoding="utf-8"?>
<com.android.internal.policy.impl.keyguard.KeyguardSelectorView android:orientation="vertical" android:id="@id/keyguard_selector_view" android:clipChildren="false" android:clipToPadding="false" android:layout_width="fill_parent" android:layout_height="fill_parent" android:contentDescription="@string/keyguard_accessibility_slide_unlock" android:layout_maxHeight="@dimen/keyguard_security_height" android:layout_maxWidth="420.0dip"
xmlns:prvandroid="http://schemas.android.com/apk/prv/res/android"
xmlns:android="http://schemas.android.com/apk/res/android">
<FrameLayout android:gravity="center" android:layout_gravity="center" android:clipChildren="false" android:clipToPadding="false" android:layout_width="fill_parent" android:layout_height="fill_parent">
<include android:layout_width="fill_parent" android:layout_height="wrap_content" layout="@layout/keyguard_message_area" />
<View android:id="@id/keyguard_selector_view_frame" android:background="@drawable/kg_bouncer_bg_white" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginLeft="16.0dip" android:layout_marginRight="16.0dip" />
<include layout="@layout/keyguard_glow_pad_container" />
<include android:layout_gravity="bottom|center" android:id="@id/keyguard_selector_fade_container" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="0.0dip" layout="@layout/keyguard_eca" />
</FrameLayout>
</com.android.internal.policy.impl.keyguard.KeyguardSelectorView>
Navigate to res/layout/keyguard_glow_pad_view.xml and replace the entire file with the following:
Code:
<?xml version="1.0" encoding="utf-8"?>
<com.android.internal.widget.multiwaveview.GlowPadView android:gravity="center" android:layout_gravity="center" android:orientation="horizontal" android:id="@id/glow_pad_view" android:layout_width="wrap_content" android:layout_height="wrap_content" prvandroid:innerRadius="@dimen/glowpadview_inner_radius" android:contentDescription="@string/keyguard_accessibility_slide_area" prvandroid:targetDescriptions="@array/lockscreen_target_descriptions_with_camera" prvandroid:directionDescriptions="@array/lockscreen_direction_descriptions" prvandroid:outerRingDrawable="@drawable/ic_lockscreen_outerring" prvandroid:pointDrawable="@drawable/ic_lockscreen_glowdot" prvandroid:glowRadius="@dimen/glowpadview_glow_radius" prvandroid:firstItemOffset="@integer/kg_glowpad_rotation_offset" prvandroid:magneticTargets="true" prvandroid:allowScaling="true" prvandroid:targetDrawables="@array/lockscreen_targets_with_camera" prvandroid:handleDrawable="@drawable/ic_lockscreen_handle" prvandroid:outerRadius="@dimen/glowpadview_target_placement_radius" prvandroid:vibrationDuration="20" prvandroid:snapMargin="@dimen/glowpadview_snap_margin" prvandroid:feedbackCount="1"
xmlns:prvandroid="http://schemas.android.com/apk/prv/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" />
Thats it for framework-res. The last section is for android.policy
AOSP Lockscreen with toggle part 3, android.policy
This last part will add the AOSP functionality with toggle.
Navigate to smali/com/android/internal/policy/impl/keyguard/KeyguardHostView.smali
Add the following:
Code:
.field private mAospLock:I
Find .method private getLayoutIdFor(Lcom/android/internal/policy/impl/keyguard/KeyguardSecurityModel$SecurityModeI
Replace from pswitch_0 to pswitch_1 with the following code:
Code:
:pswitch_0
iget-object v2, p0, Lcom/android/internal/policy/impl/keyguard/KeyguardHostView;->mContext:Landroid/content/Context;
invoke-virtual {v2}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v2
const-string v3, "aosp_lock_enabled"
invoke-static {v2, v3, v1}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v2
iput v2, p0, Lcom/android/internal/policy/impl/keyguard/KeyguardHostView;->mAospLock:I
iget v2, p0, Lcom/android/internal/policy/impl/keyguard/KeyguardHostView;->mAospLock:I
if-eqz v2, :cond_nocrt
const v1, 0x1090084
goto :goto_1
:cond_nocrt
const v1, 0x1090091
goto :goto_1
:pswitch_1
Thats it. Recompile and push the files to your phone. Enjoy AOSP Lockscreen.
I am currently working to add more functions such as weather and added shortcuts so stay tuned....
Thanks Button!!
Nice!! I assume we would need to add the rom control bits you talk about. Where are they? They are not already there are they?
hlxanthus said:
Nice!! I assume we would need to add the rom control bits you talk about. Where are they? They are not already there are they?
Click to expand...
Click to collapse
No, you don't have to. I just geared this tutorial around the idea that you would. You can add it to any XML you want, just have to follow the flow of the xml you add it to.
Looks cool! Can you post some screenshots?
awesome job like always thanks
xShockz said:
Looks cool! Can you post some screenshots?
Click to expand...
Click to collapse
I will tomorrow, in bed now. Unless someone else has it going and would like to post a pic.
Nice work as always my man.
In order to get the AOSP lock screen working I had to set "Screen lock" to "Swipe" and "Unlock effect" to "None" in Lock screen settings.
Is that how it works or did I screw something up?
upndwn4par said:
Nice work as always my man.
In order to get the AOSP lock screen working I had to set "Screen lock" to "Swipe" and "Unlock effect" to "None" in Lock screen settings.
Is that how it works or did I screw something up?
Click to expand...
Click to collapse
It works for me no matter how I have the unlock effect.
Is this the actual aosp lockscreen or just the similar one that has the fixed unlock shortcuts?
Sent from my SCH-I545 using Tapatalk 4 Beta
andybones said:
It works for me no matter how I have the unlock effect.
Click to expand...
Click to collapse
Hmmmm...maybe I need to go through this again....
Edit:
Works perfect. Just needed to clean up some code.
Is it possible to get this in a zip file?
Sent from my SCH-I545 using xda app-developers app
I am having a it of an issue. I can't find pswitch_0 nor pswitch_1
Can someone direct me? I'm in keyguardhostview.smali
Error I'm getting while recompiling android.policy
Code:
C:\AndroidApktool>android.policy\com\android\internal\policy\impl\keyguard\KeyguardHostView.smali[3630,7] Label "goto_1" is not defined.
android.policy\com\android\internal\policy\impl\keyguard\KeyguardHostView.smali[3635,10] Label "goto_1" is not defined.
android.policy\com\android\internal\policy\impl\keyguard\KeyguardHostView.smali[0,0] mismatched tree node: UP expecting I_CATCHES
android.policy\com\android\internal\policy\impl\keyguard\KeyguardHostView.smali[3648,4] mismatched tree node: I_STATEMENT_FORMAT21c_STRING expecting <UP>
And here's the code that I have ended.
.method private getLayoutIdFor(Lcom/android/internal/policy/impl/keyguard/KeyguardSecurityModel$SecurityModeI
.registers 6
const/4 v0, 0x1
const/4 v1, 0x0
iget-object v2, p0, Lcom/android/internal/policy/impl/keyguard/KeyguardHostView;->mContext:Landroid/content/Context;
invoke-virtual {v2}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v2
const-string v3, "onehand_pattern_enabled"
invoke-static {v2, v3, v1}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v2
if-ne v2, v0, :cond_1c
:goto_10
sget-object v2, Lcom/android/internal/policy/impl/keyguard/KeyguardHostView$21;->$SwitchMap$com$android$internal$policy$impl$keyguard$KeyguardSecurityModel$SecurityMode:[I
invoke-virtual {p1}, Lcom/android/internal/policy/impl/keyguard/KeyguardSecurityModel$SecurityMode;->ordinal()I
move-result v3
aget v2, v2, v3
packed-switch v2, switch_data_90
:goto_1b
return v1
:cond_1c
move v0, v1
goto :goto_10
switch_0
iget-object v2, p0, Lcom/android/internal/policy/impl/keyguard/KeyguardHostView;->mContext:Landroid/content/Context;
invoke-virtual {v2}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v2
const-string v3, "aosp_lock_enabled"
invoke-static {v2, v3, v1}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v2
iput v2, p0, Lcom/android/internal/policy/impl/keyguard/KeyguardHostView;->mAospLock:I
iget v2, p0, Lcom/android/internal/policy/impl/keyguard/KeyguardHostView;->mAospLock:I
if-eqz v2, :cond_nocrt
const v1, 0x1090084
goto :goto_1
:cond_nocrt
const v1, 0x1090091
goto :goto_1
switch_1
switch_1e << this is the first pswitch I see [/b]
Click to expand...
Click to collapse
dscblu said:
Is it possible to get this in a zip file?
Sent from my SCH-I545 using xda app-developers app
Click to expand...
Click to collapse
I second this.
Sent from my SCH-I545 using xda premium
Adrozz07 said:
Is this the actual aosp lockscreen or just the similar one that has the fixed unlock shortcuts?
Sent from my SCH-I545 using Tapatalk 4 Beta
Click to expand...
Click to collapse
Still wondering about this.
Sent from my SCH-I545 using Tapatalk 4 Beta
Hmm i'm on 4.2.2 TW
The outerring become smaller when i set gravity to center, but when i set it to left or right, it become normal.
any idea how to fix it?
Faye Reagan said:
Hmm i'm on 4.2.2 TW
The outerring become smaller when i set gravity to center, but when i set it to left or right, it become normal.
any idea how to fix it?
Click to expand...
Click to collapse
In keyguard_selector_view.xml you can change the size and position of the ring. You just need to play around a little.
upndwn4par said:
In keyguard_selector_view.xml you can change the size and position of the ring. You just need to play around a little.
Click to expand...
Click to collapse
Well i just play around, it's back to normal again after playing with android.policy since play with keyguard_selector_view.xml didn't works
mgbotoe said:
I am having a it of an issue. I can't find pswitch_0 nor pswitch_1
Can someone direct me? I'm in keyguardhostview.smali
Error I'm getting while recompiling android.policy
Code:
C:\AndroidApktool>android.policy\com\android\internal\policy\impl\keyguard\KeyguardHostView.smali[3630,7] Label "goto_1" is not defined.
android.policy\com\android\internal\policy\impl\keyguard\KeyguardHostView.smali[3635,10] Label "goto_1" is not defined.
android.policy\com\android\internal\policy\impl\keyguard\KeyguardHostView.smali[0,0] mismatched tree node: UP expecting I_CATCHES
android.policy\com\android\internal\policy\impl\keyguard\KeyguardHostView.smali[3648,4] mismatched tree node: I_STATEMENT_FORMAT21c_STRING expecting <UP>
And here's the code that I have ended.
Click to expand...
Click to collapse
Did you solve your issue yet? As i am facing exactly the same problem.. :/
Mr.Yawnie said:
Did you solve your issue yet? As i am facing exactly the same problem.. :/
Click to expand...
Click to collapse
naw, i gave up on this a while ago lol
mgbotoe said:
naw, i gave up on this a while ago lol
Click to expand...
Click to collapse
It's so frustrating!! haha. I know your comments were quite a long time ago but i decided to give it a try if you found the issue
Hi xda!
This is not mine tutorial ,credits go to darkera13 (SAMSUNG Developer) from Samsungviet
Link to orginal thread here
I decided to translate it made some changes in code to work with G900F
This works only with deodex system files!
So lets start modding:
Decompile android.policy.jar and go to /com/android/internal/policy/impl/GlobalActions.smali
Search for:
Code:
[COLOR="SeaGreen"].field private mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;[/COLOR]
Add something like the following:
Code:
[COLOR="SeaGreen"].field private mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;[/COLOR]
[COLOR="Red"].field private mFlashlight:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
.field private mFlashlightState:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
.field private mScreenshot:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;[/COLOR]
Search for:
Code:
[COLOR="SeaGreen"]iput-object v3, p0, Lcom/android/internal/policy/impl/GlobalActions;->mAirplaneState:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
sget-object v3, Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;->Off:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;[/COLOR]
Add something like the following:
Code:
[COLOR="SeaGreen"]iput-object v3, p0, Lcom/android/internal/policy/impl/GlobalActions;->mAirplaneState:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
sget-object v3, Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;->Off:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;[/COLOR]
[COLOR="Red"]iput-object v3, p0, Lcom/android/internal/policy/impl/GlobalActions;->mFlashlightState:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
sget-object v3, Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;->Off:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;[/COLOR]
Search for:
Code:
[COLOR="SeaGreen"].method static synthetic access$4700()Ljava/lang/String;[/COLOR]
Add to the below like this:
Code:
[COLOR="SeaGreen"].method static synthetic access$4700()Ljava/lang/String;
.registers 1
.prologue
.line 158
sget-object v0, Lcom/android/internal/policy/impl/GlobalActions;->mScafe:Ljava/lang/String;
return-object v0
.end method[/COLOR]
[COLOR="Red"]
.method static synthetic access$500(Lcom/android/internal/policy/impl/GlobalActions;)Landroid/content/Context;
.registers 2
iget-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mContext:Landroid/content/Context;
return-object v0
.end method
.method static synthetic access$5000(Lcom/android/internal/policy/impl/GlobalActions;)Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
.registers 2
iget-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mFlashlight:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
return-object v0
.end method
.method static synthetic access$5001(Lcom/android/internal/policy/impl/GlobalActions;)Z
.registers 2
invoke-direct {p0}, Lcom/android/internal/policy/impl/GlobalActions;->getTorchStatus()Z
move-result v0
return v0
.end method[/COLOR]
Search for:
Code:
[COLOR="SeaGreen"] iput-object v2, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;[/COLOR]
Add something like the following (* Note this paragraph have the id, id have to create the corresponding public.xml then replaced in right here, guiding the bottom):
Code:
[COLOR="SeaGreen"] iput-object v2, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;[/COLOR]
[COLOR="Red"]new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$Flashlight;
const v4, 0x1080b74
const v5, 0x1080b75
const v6, 0x1040ba4
const v7, 0x1040ba6
const v8, 0x1040ba7
move-object/from16 v3, p0
invoke-direct/range {v2 .. v8}, Lcom/android/internal/policy/impl/GlobalActions$Flashlight;-><init>(Lcom/android/internal/policy/impl/GlobalActions;IIIII)V
move-object/from16 v0, p0
iput-object v2, v0, Lcom/android/internal/policy/impl/GlobalActions;->mFlashlight:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$Screenshot;
const v3, 0x1080b76
const v4, 0x1040ba3
move-object/from16 v0, p0
invoke-direct {v2, v0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$Screenshot;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
move-object/from16 v0, p0
iput-object v2, v0, Lcom/android/internal/policy/impl/GlobalActions;->mScreenshot:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;[/COLOR]
Search for:
Code:
[COLOR="SeaGreen"] const/16 v2, 0x100[/COLOR]
Add the following:
Code:
[COLOR="SeaGreen"]
const/16 v2, 0x100
invoke-direct/range {p0 .. p0}, Lcom/android/internal/policy/impl/GlobalActions;->getBugReportAction()Lcom/android/internal/policy/impl/GlobalActions$Action;
move-result-object v3
move-object/from16 v0, p0
iget-object v4, v0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;
const/4 v5, 0x1
move-object/from16 v0, p0
invoke-direct {v0, v2, v3, v4, v5}, Lcom/android/internal/policy/impl/GlobalActions;->addDialogItemsIfEnabled(ILcom/android/internal/policy/impl/GlobalActions$Action;Ljava/util/ArrayList;Z)Z[/COLOR]
[COLOR="Red"]const/16 v2, 0x200
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mFlashlight:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
move-object/from16 v0, p0
iget-object v4, v0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;
const/4 v5, 0x1
move-object/from16 v0, p0
invoke-direct {v0, v2, v3, v4, v5}, Lcom/android/internal/policy/impl/GlobalActions;->addDialogItemsIfEnabled(ILcom/android/internal/policy/impl/GlobalActions$Action;Ljava/util/ArrayList;Z)Z
const/16 v2, 0x400
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mScreenshot:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
move-object/from16 v0, p0
iget-object v4, v0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;
const/4 v5, 0x1
move-object/from16 v0, p0
invoke-direct {v0, v2, v3, v4, v5}, Lcom/android/internal/policy/impl/GlobalActions;->addDialogItemsIfEnabled(ILcom/android/internal/policy/impl/GlobalActions$Action;Ljava/util/ArrayList;Z)Z[/COLOR]
Search for:
Code:
[COLOR="SeaGreen"]const-string v2, "emergencymode"[/COLOR]
change this value like this:
Code:
[COLOR="Red"] if-eqz v2, :cond_315[/COLOR]
Add to the above as follows::
Code:
[COLOR="SeaGreen"] const-string v2, "emergencymode"
invoke-virtual {v2, v9}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
[COLOR="Red"] if-eqz v2, :cond_315[/COLOR]
.line 1255
move-object/from16 v0, p0
iget-object v2, v0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mEmergency:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
invoke-virtual {v2, v3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
goto :goto_24b
[COLOR="Red"] .line 1255
:cond_315
const-string v2, "flashlight"
invoke-virtual {v2, v9}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_32a
move-object/from16 v0, p0
iget-object v2, v0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mFlashlight:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
invoke-virtual {v2, v3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
goto :goto_24b
:cond_32a
const-string v2, "screenshot"
invoke-virtual {v2, v9}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_2ca
move-object/from16 v0, p0
iget-object v2, v0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mScreenshot:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
invoke-virtual {v2, v3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
goto :goto_24b[/COLOR]
[/COLOR]
Search for:
Code:
[COLOR="SeaGreen"].method private prepareDialog()V
.registers 8[/COLOR]
Add to the below as follows:
Code:
[COLOR="SeaGreen"].method private prepareDialog()V
.registers 8[/COLOR]
[COLOR="Red"] .prologue
.line 1820
invoke-direct {p0}, Lcom/android/internal/policy/impl/GlobalActions;->getTorchStatus()Z
move-result v1
if-eqz v1, :cond_b
sget-object v4, Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;->On:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
iput-object v4, p0, Lcom/android/internal/policy/impl/GlobalActions;->mFlashlightState:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
goto :goto_10
:cond_b
sget-object v4, Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;->Off:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
iput-object v4, p0, Lcom/android/internal/policy/impl/GlobalActions;->mFlashlightState:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
goto :goto_10[/COLOR]
search for:
Code:
[COLOR="SeaGreen"].method private handleShow()V
.registers 5[/COLOR]
Add to the above as follows:
Code:
[COLOR="Red"].method private getTorchStatus()Z
.registers 5
.prologue
const/4 v0, 0x0
iget-object v1, p0, Lcom/android/internal/policy/impl/GlobalActions;->mContext:Landroid/content/Context;
invoke-virtual {v1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v1
const-string v2, "torch_light"
const/4 v3, -0x2
invoke-static {v1, v2, v0, v3}, Landroid/provider/Settings$System;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)I
move-result v1
if-eqz v1, :cond_11
const/4 v0, 0x1
:cond_11
return v0
.end method[/COLOR]
[COLOR="SeaGreen"].method private handleShow()V
.registers 5[/COLOR]
Search for:
Code:
[COLOR="SeaGreen"] const-string v4, "content://com.sec.knox.provider2/KnoxCustomManagerService1"[/COLOR]
Add to the above like this:
Code:
[COLOR="Red"] .line 1840
iget-object v4, p0, Lcom/android/internal/policy/impl/GlobalActions;->mFlashlight:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
iget-object v5, p0, Lcom/android/internal/policy/impl/GlobalActions;->mFlashlightState:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
invoke-virtual {v4, v5}, Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;->updateState(Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;)V[/COLOR]
[COLOR="SeaGreen"] .line 1842
const-string v4, "content://com.sec.knox.provider2/KnoxCustomManagerService1"[/COLOR]
Save and unzip attachments GlobalMenu_darkera13_samsungviet.vn.zip copy the entire file in andorid.policy in / com / android / internal / policy / impl /
Decompile framework-res.apk and go to /res/values/arrays.xml
Search for:
Code:
[COLOR="SeaGreen"] <string-array name="config_globalActionsList">[/COLOR]
Add the following:
Code:
[COLOR="SeaGreen"]<string-array name="config_globalActionsList">
<item>power</item>
<item>datamode</item>
<item>airplane</item>
<item>restart</item>
<item>lockdown</item>
<item>bugreport</item>
<item>users</item>
<item>emergencymode</item>[/COLOR]
[COLOR="Red"]<item>flashlight</item>
<item>screenshot</item>[/COLOR]
[COLOR="SeaGreen"]</string-array>[/COLOR]
Save and open files /res/values/strings.xml
Add to the end of the file is as follows:
Code:
[COLOR="Red"] <string name="global_action_screenshot">Take Screenshot</string>
<string name="global_action_flashlight">Flashlight</string>
<string name="global_actions_flashlight_on_status">On</string>
<string name="global_actions_flashlight_off_status">Off</string>[/COLOR]
[COLOR="SeaGreen"] </resources>[/COLOR]
Save and open files /res/values/public.xml
Add to the end of the file is as follows:
Code:
[COLOR="Red"] <public type="string" name="global_action_screenshot" id="0x01040ba3" />
<public type="string" name="global_action_flashlight" id="0x01040ba4" />
<public type="string" name="global_actions_flashlight_on_status" id="0x01040ba5" />
<public type="string" name="global_actions_flashlight_off_status" id="0x01040ba6" />
<public type="drawable" name="tw_ic_lock_flashlight_on" id="0x01080b74" />
<public type="drawable" name="tw_ic_lock_flashlight_off" id="0x01080b75" />
<public type="drawable" name="tw_ic_lock_screenshot" id="0x01080b76" />[/COLOR]
The id of public.xml may vary depending on the change of the file before public.xml so id have to figure out the right to revise section above id.
The principle of the id is constantly and have the right type, each type will have its own code (eg look at the section on the string is found 0x0104, 0x0108 will be drawable)
So to know the correct id id must be the biggest find in each type, try before going straight string,
here we see this guy 0x0104xxxx code is wrong we try to thousands and hundreds, tens and units ie instead of to find us every turn from 0x01040 -> 0x01049 guy, the guy does not have before it the biggest guy,
for example 0x01045 guy does not have the biggest guy thousands of it is 0x01044, so look down to the hundreds, tens and units. Note small as it used id hexadecimal should turn from small to large 0 -> 9, a, b, c, d, e, f
After finding the largest id translational then 1 unit and instead turn to the id in public.xml similar.
Afterward, they must determine the correct id id in the code Smail (noted above) with the correct id (Note that in the smali code id dropping 1 to 0 on, eg 0x01040ba3 going into 0x1040ba3)
something like this:
Code:
<public type="drawable" name="tw_ic_lock_flashlight_off" id="0x01080b84" /> -> 0x1080b84 -> const v5
<public type="drawable" name="tw_ic_lock_flashlight_on" id="0x01080b85" /> -> 0x1080b85 -> const v4
<public type="drawable" name="tw_ic_lock_screenshot" id="0x01080b86" /> -> 0x1080b86 -> const v3
<public type="string" name="global_action_screenshot" id="0x01040b85" /> -> 0x1040b85 -> const v4
<public type="string" name="global_actions_flashlight_on_status" id="0x01040b87" /> -> 0x1040b87 -> const v7
<public type="string" name="global_actions_flashlight_off_status" id="0x01040b88" /> -> 0x1040b88 -> const v8
<public type="string" name="global_action_flashlight" id="0x01040b86" /> -> 0x1040b86 -> const v6
Next copy the image file in framework-res attachments / *. Png into the framework-res / res / drawable-xhdpi
Recompile and done!
Download smali and framework-res files from here
Power Menu Mod with screenshot and flashlight button + 5 way reboot menu (G900FXXU1BNL9)
download
Credits:
@darkera13
AWESOME GUIDE!!! Thank you so much!!!
Sent from my SM-G900F using Tapatalk
i didn't test it yet , if someone make it for deodex android.policy.jar and framework-res.apk (only clean not earlier modded) please share with us here and wrote phone model, thank you
Any way to add flashlight to notification bar toogles?
Thanks!
aguarello said:
Any way to add flashlight to notification bar toogles?
Thanks!
Click to expand...
Click to collapse
Yes you can by Sqlite Editor from Google playstore
Excellent guide. Keep it up!
you need to change some line to correct with your Global.Action.smali (do not copy/paste all code it not work becouse this tutorial is for Note 3!)
ambasadii said:
Yes you can by Sqlite Editor from Google playstore
Click to expand...
Click to collapse
Can you please share how?
Thanx in advance
seky0405 said:
Can you please share how?
Thanx in advance
Click to expand...
Click to collapse
1) download from playstore SQLite Editor
2) install and run, we grant root permissions
3) find the APPS tab and go to "this" and open it
4) press the "settings.db" and then select "system"
5) locate the "notification_panel_active_app_list" and press it to be is highlighted in gray after which choose the pencil icon to enter the settings, see here
6) complement entry with missing buttons below:
Wifi;MobileData;Bluetooth;Location;AutoRotate;SilentMode;Location;NetworkBooster;Toolbox;SFinder;QuickConnect;MultiWindow;WiFiHotspot;Nfc;SBeam;AllShareCast;SmartStay;SmartPause;Sync;AirView;AirGesture;AirplaneMode;CarMode;PersonalMode;Ebook;UltraPowerSaving;PowerSaving;TouchSensitivity;DormantMode;SideKey;FloatingMessage;Flashlight;
7) press "save" and restart the phone
ambasadii said:
1) download from playstore SQLite Editor
2) install and run, we grant root permissions
3) find the APPS tab "Pamięć ustawień" and open it
4) press the "settings.db" and then select "system"
5) locate the "notification_panel_active_app_list" and press it to be is highlighted in gray after which choose the pencil icon to enter the settings, see tutaj
6) complement entry with missing buttons below:
Wifi;MobileData;Bluetooth;Location;AutoRotate;SilentMode;Location;NetworkBooster;Toolbox;SFinder;QuickConnect;MultiWindow;WiFiHotspot;Nfc;SBeam;AllShareCast;SmartStay;SmartPause;Sync;AirView;AirGesture;AirplaneMode;CarMode;PersonalMode;Ebook;UltraPowerSaving;PowerSaving;TouchSensitivity;DormantMode;SideKey;Flashlight
7) press "save" and restart the phone
Click to expand...
Click to collapse
WoW! Thanx :good: :good: :good:
Thanks for the input, but opened a way to simplify mod type for which we are newbies
thank you very much
Any one have android.policy.jar for BOA3 with this mod ?
Is it only for deodexed roms? I have odexed rom and android.policy.jar file is empty.
ok i make the power menu here
the screenshoot buton works good but when i push flashlight the phone reboots
when i do a mistake ?
logcat attacet!
meaby something here:
.line 2810
.restart local v0 # "airplaneModeOn":Z
:cond_25
sget-object v1, Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;->Off:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
goto :goto_19
.end method
.method private getTorchStatus()Z
.locals 4
.prologue
const/4 v0, 0x0
iget-object v1, p0, Lcom/android/internal/policy/impl/GlobalActions;->mContext:Landroid/content/Context;
invoke-virtual {v1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v1
const-string v2, "torch_light"
const/4 v3, -0x2
invoke-static {v1, v2, v0, v3}, Landroid/provider/Settings$System;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)I
move-result v1
if-eqz v1, :cond_0
const/4 v0, 0x1
:cond_0
return v0
.end method
.method private prepareDialog()V
.registers 8
invoke-direct {p0}, Lcom/android/internal/policy/impl/GlobalActions;->getTorchStatus()Z
move-result v1
if-eqz v1, :cond_20
sget-object v4, Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;->On:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
iput-object v4, p0, Lcom/android/internal/policy/impl/GlobalActions;->mFlashlightState:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
goto :cond_21
:cond_20
sget-object v4, Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;->Off:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
iput-object v4, p0, Lcom/android/internal/policy/impl/GlobalActions;->mFlashlightState:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
goto :cond_21
:cond_21
.prologue
.line 1820
iget-object v4, p0, Lcom/android/internal/policy/impl/GlobalActions;->cm:Landroid/net/ConnectivityManager;
Hi, I know this thread is for Galaxy S5, but can similar be implemented on any phone running Android Lollipop AOSP? I have a Xperia S, which has Android Lollipop AOSP, and I found somewhat similar code in the android.policy.jar of My ROM too. I just want to implement the Screenshot shortcut, not the flashlight one.
Mirhawk said:
Hi, I know this thread is for Galaxy S5, but can similar be implemented on any phone running Android Lollipop AOSP? I have a Xperia S, which has Android Lollipop AOSP, and I found somewhat similar code in the android.policy.jar of My ROM too. I just want to implement the Screenshot shortcut, not the flashlight one.
Click to expand...
Click to collapse
yes i think you can try it, good look mate!
ambasadii said:
ok i make the power menu here
the screenshoot buton works good but when i push flashlight the phone reboots
when i do a mistake ?
meaby something here:
.line 2810
.restart local v0 # "airplaneModeOn":Z
:cond_25
sget-object v1, Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;->Off:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
goto :goto_19
.end method
.method private getTorchStatus()Z
.locals 4
.prologue
const/4 v0, 0x0
iget-object v1, p0, Lcom/android/internal/policy/impl/GlobalActions;->mContext:Landroid/content/Context;
invoke-virtual {v1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v1
const-string v2, "torch_light"
const/4 v3, -0x2
invoke-static {v1, v2, v0, v3}, Landroid/provider/Settings$System;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)I
move-result v1
if-eqz v1, :cond_0
const/4 v0, 0x1
:cond_0
return v0
.end method
.method private prepareDialog()V
.registers 8
invoke-direct {p0}, Lcom/android/internal/policy/impl/GlobalActions;->getTorchStatus()Z
move-result v1
if-eqz v1, :cond_20
sget-object v4, Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;->On:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
iput-object v4, p0, Lcom/android/internal/policy/impl/GlobalActions;->mFlashlightState:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
goto :cond_21
:cond_20
sget-object v4, Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;->Off:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
iput-object v4, p0, Lcom/android/internal/policy/impl/GlobalActions;->mFlashlightState:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
goto :cond_21
:cond_21
.prologue
.line 1820
iget-object v4, p0, Lcom/android/internal/policy/impl/GlobalActions;->cm:Landroid/net/ConnectivityManager;
Click to expand...
Click to collapse
Did you check whether those IDs created in framework are matched in andoid.policy?
kmokhtar79 said:
Did you check whether those IDs created in framework are matched in andoid.policy?
Click to expand...
Click to collapse
yes mate i check it:
<public type="drawable" name="tw_ic_lock_flashlight_off" id="0x01080b84" /> 0x1080b84 const v5
<public type="drawable" name="tw_ic_lock_flashlight_on" id="0x01080b85" /> 0x1080b85 const v4
<public type="drawable" name="tw_ic_lock_screenshot" id="0x01080b86" /> 0x1080b86 const v3
<public type="string" name="global_action_screenshot" id="0x01040b85" /> 0x1040b85 const v4
<public type="string" name="global_actions_flashlight_on_status" id="0x01040b87" /> 0x1040b87 const v7
<public type="string" name="global_actions_flashlight_off_status" id="0x01040b88" /> 0x1040b88 const v8
<public type="string" name="global_action_flashlight" id="0x01040b86" /> 0x1040b86 const v6
ambasadii said:
yes mate i check it:
<public type="drawable" name="tw_ic_lock_flashlight_off" id="0x01080b84" /> 0x1080b84 const v5
<public type="drawable" name="tw_ic_lock_flashlight_on" id="0x01080b85" /> 0x1080b85 const v4
<public type="drawable" name="tw_ic_lock_screenshot" id="0x01080b86" /> 0x1080b86 const v3
<public type="string" name="global_action_screenshot" id="0x01040b85" /> 0x1040b85 const v4
<public type="string" name="global_actions_flashlight_on_status" id="0x01040b87" /> 0x1040b87 const v7
<public type="string" name="global_actions_flashlight_off_status" id="0x01040b88" /> 0x1040b88 const v8
<public type="string" name="global_action_flashlight" id="0x01040b86" /> 0x1040b86 const v6
Click to expand...
Click to collapse
I am seeing you are linking same ID for string and drawable.
Code:
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$Flashlight;
const v4, 0x1080b74 <public type="[COLOR="Red"]drawable[/COLOR]" name="tw_ic_lock_flashlight_on" id="
const v5, 0x1080b75 <public type="[COLOR="red"]drawable[/COLOR]" name="tw_ic_lock_flashlight_off" id="
const v6, 0x1040ba4 <public type="[COLOR="red"]string[/COLOR]" name="global_action_flashlight" id="
const v7, 0x1040ba6 <public type="[COLOR="red"]string[/COLOR]" name="global_actions_flashlight_off_status" id="
const v8, 0x1040ba7 <public type="[COLOR="red"]string[/COLOR]" name="global_actions_flashlight_on_status" id="
move-object/from16 v3, p0
invoke-direct/range {v2 .. v8}, Lcom/android/internal/policy/impl/GlobalActions$Flashlight;-><init>(Lcom/android/internal/policy/impl/GlobalActions;IIIII)V
move-object/from16 v0, p0
iput-object v2, v0, Lcom/android/internal/policy/impl/GlobalActions;->mFlashlight:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$Screenshot;
const v3, 0x1080b76 <public type="[COLOR="red"]drawable[/COLOR]" name="tw_ic_lock_screenshot" id="
const v4, 0x1040ba3 <public type="[COLOR="red"]string[/COLOR]" name="global_action_screenshot" id="
move-object/from16 v0, p0
Check your IDs again. Just to double check did you recompile after modifying framework and again decompile? IDs in public has to be created you cannot leave a random id there sorry I have to be precise to narrow down problems.
kmokhtar79 said:
I am seeing you are linking same ID for string and drawable.
Code:
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$Flashlight;
const v4, 0x1080b74 <public type="[COLOR="Red"]drawable[/COLOR]" name="tw_ic_lock_flashlight_on" id="
const v5, 0x1080b75 <public type="[COLOR="red"]drawable[/COLOR]" name="tw_ic_lock_flashlight_off" id="
const v6, 0x1040ba4 <public type="[COLOR="red"]string[/COLOR]" name="global_action_flashlight" id="
const v7, 0x1040ba6 <public type="[COLOR="red"]string[/COLOR]" name="global_actions_flashlight_off_status" id="
const v8, 0x1040ba7 <public type="[COLOR="red"]string[/COLOR]" name="global_actions_flashlight_on_status" id="
move-object/from16 v3, p0
invoke-direct/range {v2 .. v8}, Lcom/android/internal/policy/impl/GlobalActions$Flashlight;-><init>(Lcom/android/internal/policy/impl/GlobalActions;IIIII)V
move-object/from16 v0, p0
iput-object v2, v0, Lcom/android/internal/policy/impl/GlobalActions;->mFlashlight:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$Screenshot;
const v3, 0x1080b76 <public type="[COLOR="red"]drawable[/COLOR]" name="tw_ic_lock_screenshot" id="
const v4, 0x1040ba3 <public type="[COLOR="red"]string[/COLOR]" name="global_action_screenshot" id="
move-object/from16 v0, p0
Check your IDs again. Just to double check did you recompile after modifying framework and again decompile? IDs in public has to be created you cannot leave a random id there sorry I have to be precise to narrow down problems.
Click to expand...
Click to collapse
yest i add strings to framework-res and recompile again new framework-res to check random id in public, ok i check it again,thx