Hi guys,
I would like to share a Mod/Animations that I ported from PAC man ROM.. This will enable a IME(Keyboard) Animations and you will be able to test them and change them on the fly!!
What exatcly does this mod do?
Click to expand...
Click to collapse
This mod will enable your keyboard to have all different types of Enter and Exit Animations, along with different animations for the Interpolator and speed of the animation..
Here is a video of what I mean..
I started looking into this bc I thought it was a pretty cool feature. I want to remind you that this is NOT my work. I DID NOT create these animations..All I did was port them over to TW 4.3 to make them work:laugh:
Anyone is able to use this mod, just please give proper credit to Devs of PAC Man ROM & Xylon ROM, @zst123 for open source XUI MOD Xposed Module and me if you want
ALSO I want to give a BIG THANKS to:
@dwitherell - for always being there to help and for a sounding bored (LOLLL)
@Deckoz2302 - you already know
@Stryke_the_Orc - logcat thread and a 2nd eye
And too everyone else whos guides I've used to teach me and all the things I know now and am planning to learn along the way
WARNING!!! THIS IS GUIDE IS NOT FOR NOVICE USERS/MODDERS/THEMERS ETC...THERE ARE A LOT OF EDITS IN RES FOLDERS AND SMALI!! IF YOU GET STOCK PLEASE PLEASE POST A LOG OR THE ERROR! I WILL TRY TO BE AS NOOB FRIENDLY AS POSSIBLE BUT THIS IS NOT A NOOB GUIDE/MOD!
PS:This guide may not be PERFECT.. There maybe somethings that I added that this mod may not need..or use.. But i added them for the sake of not missing anything..So if you see something and are like "Why did he add those ids, strings, layouts etc" WHATEVER..Just ignore it or don't use them.. I will try to be as accurate as possible.
So let's begin..
What you'll need:
Note Pad++
Apktool and knowledge on how to read errors
framework-res.apk
SecSettings.apk
framework.jar
PATIENCE
Let's start with SecSettings, decompile it goto res/values..
strings.xml add these:
Code:
<string name="listview_off">Off</string>
<string name="listview_wave_left">Wave (Left)</string>
<string name="listview_wave_right">Wave (Right)</string>
<string name="listview_alpha">Alpha</string>
<string name="listview_scale">Scale</string>
<string name="listview_stack_top">Stack (Top)</string>
<string name="listview_stack_bottom">Stack (Bottom)</string>
<string name="listview_unfold">Unfold</string>
<string name="listview_fold">Fold</string>
<string name="listview_translate_left">Translate (Left)</string>
<string name="listview_translate_right">Translate (Right)</string>
<string name="listview_accelerate_interpolator">Accelerate</string>
<string name="listview_decelerate_interpolator">Decelerate</string>
<string name="listview_accelerate_decelerate_interpolator">Accelerate/Decelerate</string>
<string name="listview_anticipate_interpolator">Anticipate</string>
<string name="listview_overshoot_interpolator">Overshoot</string>
<string name="listview_anticipate_overshoot_interpolator">Anticipate/Overshoot</string>
<string name="listview_bounce_interpolator">Bounce</string>
<string name="listview_cycle_interpolator">Cycle</string>
<string name="listview_linear_interpolator">Linear</string>
<string name="animation_default">Default</string>
<string name="animation_fade">Fade</string>
<string name="animation_slide_right">Slide in right</string>
<string name="animation_slide_left">Slide in left</string>
<string name="animation_slide_right_no_fade">Slide in right (No fade)</string>
<string name="animation_slide_left_no_fade">Slide in left (No fade)</string>
<string name="animation_slide_up">Slide in bottom</string>
<string name="animation_slide_down">Slide in top</string>
<string name="animation_translucent">Translucent</string>
<string name="animation_grow_shrink">Grow in (Top)</string>
<string name="animation_grow_shrink_center">Grow in (Center)</string>
<string name="animation_grow_shrink_bottom">Grow in (Bottom)</string>
<string name="animation_grow_shrink_left">Grow in (Left)</string>
<string name="animation_grow_shrink_right">Grow in (Right)</string>
<string name="ime_animation_title">IME animations</string>
<string name="ime_animation_summary">Set keyboard animations</string>
<string name="ime_animation_test_title">Test IME Animation Here</string>
<string name="ime_enter_animation_title">Enter Animation</string>
<string name="ime_exit_animation_title">Exit Animation</string>
<string name="ime_interpolator_title">Interpolator</string>
<string name="ime_duration_title">IME Duration</string>
<string name="animation_duration_title">Animation duration</string>
<string name="animation_duration_summary">Set duration</string>
<string name="animation_settings_reset_message">Reset all animation settings to default?</string>
Save..
ids.xml add these:
Code:
<item type="id" name="seekBarPrefUnitsRight">false</item>
<item type="id" name="seekBarPrefValue">false</item>
<item type="id" name="seekBarPrefUnitsLeft">false</item>
<item type="id" name="seekBarPrefBarContainer">false</item>
Save..
arrays.xml add these:
Code:
<string-array name="listview_animation_entries">
<item [user=251364]@Str[/user]ing/listview_off</item>
<item [user=251364]@Str[/user]ing/listview_wave_left</item>
<item [user=251364]@Str[/user]ing/listview_wave_right</item>
<item [user=251364]@Str[/user]ing/listview_scale</item>
<item [user=251364]@Str[/user]ing/listview_alpha</item>
<item [user=251364]@Str[/user]ing/listview_stack_top</item>
<item [user=251364]@Str[/user]ing/listview_stack_bottom</item>
<item [user=251364]@Str[/user]ing/listview_unfold</item>
<item [user=251364]@Str[/user]ing/listview_fold</item>
<item [user=251364]@Str[/user]ing/listview_translate_left</item>
<item [user=251364]@Str[/user]ing/listview_translate_right</item>
</string-array>
<string-array name="listview_animation_values">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>
<item>8</item>
<item>9</item>
<item>10</item>
</string-array>
<string-array name="listview_interpolator_entries">
<item [user=251364]@Str[/user]ing/listview_off</item>
<item [user=251364]@Str[/user]ing/listview_accelerate_interpolator</item>
<item [user=251364]@Str[/user]ing/listview_decelerate_interpolator</item>
<item [user=251364]@Str[/user]ing/listview_accelerate_decelerate_interpolator</item>
<item [user=251364]@Str[/user]ing/listview_anticipate_interpolator</item>
<item [user=251364]@Str[/user]ing/listview_overshoot_interpolator</item>
<item [user=251364]@Str[/user]ing/listview_anticipate_overshoot_interpolator</item>
<item [user=251364]@Str[/user]ing/listview_bounce_interpolator</item>
<item [user=251364]@Str[/user]ing/listview_cycle_interpolator</item>
<item [user=251364]@Str[/user]ing/listview_linear_interpolator</item>
</string-array>
<string-array name="listview_interpolator_values">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>
<item>8</item>
<item>9</item>
</string-array>
<string-array name="anim_controls_entries">
<item [user=251364]@Str[/user]ing/animation_default</item>
<item [user=251364]@Str[/user]ing/animation_fade</item>
<item [user=251364]@Str[/user]ing/animation_slide_right</item>
<item [user=251364]@Str[/user]ing/animation_slide_left</item>
<item [user=251364]@Str[/user]ing/animation_slide_right_no_fade</item>
<item [user=251364]@Str[/user]ing/animation_slide_left_no_fade</item>
<item [user=251364]@Str[/user]ing/animation_slide_up</item>
<item [user=251364]@Str[/user]ing/animation_slide_down</item>
<item [user=251364]@Str[/user]ing/animation_translucent</item>
<item [user=251364]@Str[/user]ing/animation_grow_shrink</item>
<item [user=251364]@Str[/user]ing/animation_grow_shrink_center</item>
<item [user=251364]@Str[/user]ing/animation_grow_shrink_bottom</item>
<item [user=251364]@Str[/user]ing/animation_grow_shrink_left</item>
<item [user=251364]@Str[/user]ing/animation_grow_shrink_right</item>
</string-array>
<string-array name="anim_controls_values">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>
<item>8</item>
<item>9</item>
<item>10</item>
<item>11</item>
<item>12</item>
<item>13</item>
</string-array>
Save..
attrs.xml add these:
Code:
<attr name="interval" format="integer" />
<attr name="unitsLeft" format="reference|string" />
<attr name="unitsRight" format="reference|string" />
<attr name="maximum" format="integer" />
<attr name="minimum" format="integer" />
Save..
Now go to res/xml/ and where ever you want to add the preference screen to change the animations.. I added it to a xml that we (N3bula) have specifically for keyboard mods..Add this line
Code:
<PreferenceScreen android:title= [user=251364]@Str[/user]ing/ime_animation_title" android:key="interface_animation_scroll" android:summary= [user=251364]@Str[/user]ing/ime_animation_summary" android:fragment="com.android.settings.pac.KeyboardAnimationInterfaceSettings" />
Goto android/settings/SubSettings.smali
Search
Code:
.method public constructor
add this below .end method
Code:
.method private popFragment()Z
.locals 2
.prologue
.line 46
invoke-virtual {p0}, Lcom/android/settings/SubSettings;->getFragmentManager()Landroid/app/FragmentManager;
move-result-object v0
.line 47
.local v0, "fm":Landroid/app/FragmentManager;
invoke-virtual {v0}, Landroid/app/FragmentManager;->getBackStackEntryCount()I
move-result v1
if-lez v1, :cond_0
.line 48
invoke-virtual {v0}, Landroid/app/FragmentManager;->popBackStack()V
.line 49
const/4 v1, 0x1
.line 51
:goto_0
return v1
:cond_0
const/4 v1, 0x0
goto :goto_0
.end method
Then search
Code:
# virtual methods
Add this below it:
Code:
.method protected isValidFragment(Ljava/lang/String;)Z
.locals 3
.param p1, "fragmentName" # Ljava/lang/String;
.prologue
.line 41
const-string v0, "SubSettings"
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Launching fragment "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 42
const/4 v0, 0x1
return v0
.end method
Find
Code:
.method public onNavigateUp()Z
Add blue:
Code:
.method public onNavigateUp()Z
.locals 1
.prologue
.line 27
[COLOR="Blue"]invoke-direct {p0}, Lcom/android/settings/SubSettings;->popFragment()Z
move-result v0
if-nez v0, :cond_0
[/COLOR]
invoke-virtual {p0}, Lcom/android/settings/SubSettings;->finish()V
.line 28
[COLOR="blue"]:cond_0[/COLOR]
const/4 v0, 0x1
return v0
.end method
Now extract the zip below and add all the contents to their respected folders..
SecSettings.zip
Once you have them in place compile the apk, then decompile it so you can pull your new public id's in res/values/public.xml
Here is my public.xml please go through all the smali you added and search for all the 0x7******* (public ids) When you find one search my public.xml for it, find the name, then search your NEW public.xml for that name and id. Then change the id to YOUR NEW ONE. (Please if you don't understand how to do this, then this mod is NOT for you..either that or you need to search and find out what I am talking about. I will not post every id with the name bc there are A LOT)
Now moving on, framework-res.apk, decompile it...go to res/arrays add these..
Code:
<string-array name="anim_controls_entries">
<item [user=251364]@Str[/user]ing/animation_default</item>
<item [user=251364]@Str[/user]ing/animation_fade</item>
<item [user=251364]@Str[/user]ing/animation_slide_right</item>
<item [user=251364]@Str[/user]ing/animation_slide_left</item>
<item [user=251364]@Str[/user]ing/animation_slide_right_no_fade</item>
<item [user=251364]@Str[/user]ing/animation_slide_left_no_fade</item>
<item [user=251364]@Str[/user]ing/animation_slide_up</item>
<item [user=251364]@Str[/user]ing/animation_slide_down</item>
<item [user=251364]@Str[/user]ing/animation_translucent</item>
<item [user=251364]@Str[/user]ing/animation_grow_shrink</item>
<item [user=251364]@Str[/user]ing/animation_grow_shrink_center</item>
<item [user=251364]@Str[/user]ing/animation_grow_shrink_bottom</item>
<item [user=251364]@Str[/user]ing/animation_grow_shrink_left</item>
<item [user=251364]@Str[/user]ing/animation_grow_shrink_right</item>
</string-array>
<string-array name="anim_controls_values">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>
<item>8</item>
<item>9</item>
<item>10</item>
<item>11</item>
<item>12</item>
<item>13</item>
</string-array>
Save..
Then go to res/strings.xml add these:
Code:
<string name="animation_fade">Fade</string>
<string name="animation_slide_right">Slide in right</string>
<string name="animation_slide_left">Slide in left</string>
<string name="animation_slide_right_no_fade">Slide in right (No fade)</string>
<string name="animation_slide_left_no_fade">Slide in left (No fade)</string>
<string name="animation_slide_up">Slide in bottom</string>
<string name="animation_slide_down">Slide in top</string>
<string name="animation_default">Default</string>
<string name="animation_translucent">Translucent</string>
<string name="animation_grow_shrink">Grow in (Top)</string>
<string name="animation_grow_shrink_center">Grow in (Center)</string>
<string name="animation_grow_shrink_bottom">Grow in (Bottom)</string>
<string name="animation_grow_shrink_left">Grow in (Left)</string>
<string name="animation_grow_shrink_right">Grow in (Right)</string>
<string name="action_null">Blank</string>
Save..
Now extract the zip below and add them in their respected folder(s)..
framework-res.zip
Compile it and then decompile it, you will need to generate a new public.xml for framework.jar which is the next step..
Goto POST#5
Neat. Gonna try this when I have time to match all those ids (I see why you didn't list them all, thats gonna be alot lol)
Sent from my Galaxy Note II
icedventimocha said:
Neat. Gonna try this when I have time to match all those ids (I see why you didn't list them all, thats gonna be alot lol)
Sent from my Galaxy Note II
Click to expand...
Click to collapse
Yep.. I guess I could have planned it better and wrote them all down.. But wasn't sure I could get it all working
lacoursiere18 said:
Yep.. I guess I could have planned it better and wrote them all down.. But wasn't sure I could get it all working
Click to expand...
Click to collapse
Eff that dude. Doing tedious **** like that is how you learn. Let people work for it lol
Sent from my Galaxy Note II
Now framework.jar..goto android\inputservices\InputMethodSevices.smali..
Now search
Code:
# annotations
add blue:
Code:
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Landroid/inputmethodservice/InputMethodService$Insets;,
Landroid/inputmethodservice/InputMethodService$InputMethodSessionImpl;,
Landroid/inputmethodservice/InputMethodService$InputMethodImpl;,
[COLOR="Blue"] Landroid/inputmethodservice/InputMethodService$SettingsObserver;[/COLOR]
}
.end annotation
Search
Code:
# instance fields
add these below
Code:
.field private mAnimationDuration:I
.field private mAnimationEnterIndex:I
.field private mAnimationExitIndex:I
.field mHandler:Landroid/os/Handler;
.field private mInterpolatorIndex:I
.field private mSettingsObserver:Landroid/inputmethodservice/InputMethodService$SettingsObserver;
.field private mWindowIme:Landroid/view/Window;
Now search
Code:
.method static synthetic
add this whole .method
Code:
.method static synthetic access$123(Landroid/inputmethodservice/InputMethodService;)V
.locals 0
.param p0, "x0" # Landroid/inputmethodservice/InputMethodService;
.prologue
.line 232
invoke-direct {p0}, Landroid/inputmethodservice/InputMethodService;->updateSettings()V
return-void
.end method
Now search
Code:
.method private sendInputViewShownState()V
Add this above it:
Code:
.method private retrieveAnimation(Z)Landroid/view/animation/Animation;
.locals 6
.param p1, "enter" # Z
.prologue
.line 1709
if-eqz p1, :cond_1
iget v4, p0, Landroid/inputmethodservice/InputMethodService;->mAnimationEnterIndex:I
:goto_0
invoke-static {v4}, Lcom/android/internal/util/aokp/AwesomeAnimationHelper;->getAnimations(I)[I
move-result-object v1
.line 1710
.local v1, "animArray":[I
if-eqz p1, :cond_2
const/4 v4, 0x1
aget v2, v1, v4
.line 1711
.local v2, "animInt":I
:goto_1
if-nez v2, :cond_3
const/4 v0, 0x0
.line 1718
:cond_0
:goto_2
return-object v0
.line 1709
.end local v1 # "animArray":[I
.end local v2 # "animInt":I
:cond_1
iget v4, p0, Landroid/inputmethodservice/InputMethodService;->mAnimationExitIndex:I
goto :goto_0
.line 1710
.restart local v1 # "animArray":[I
:cond_2
const/4 v4, 0x0
aget v2, v1, v4
goto :goto_1
.line 1712
.restart local v2 # "animInt":I
:cond_3
invoke-static {p0, v2}, Landroid/view/animation/AnimationUtils;->loadAnimation(Landroid/content/Context;I)Landroid/view/animation/Animation;
move-result-object v0
.line 1713
.local v0, "anim":Landroid/view/animation/Animation;
iget v4, p0, Landroid/inputmethodservice/InputMethodService;->mInterpolatorIndex:I
invoke-static {p0, v4}, Lcom/android/internal/util/aokp/AwesomeAnimationHelper;->getInterpolator(Landroid/content/Context;I)Landroid/view/animation/Interpolator;
move-result-object v3
.line 1714
.local v3, "intplr":Landroid/view/animation/Interpolator;
if-eqz v3, :cond_4
invoke-virtual {v0, v3}, Landroid/view/animation/Animation;->setInterpolator(Landroid/view/animation/Interpolator;)V
.line 1715
:cond_4
iget v4, p0, Landroid/inputmethodservice/InputMethodService;->mAnimationDuration:I
if-lez v4, :cond_0
.line 1716
iget v4, p0, Landroid/inputmethodservice/InputMethodService;->mAnimationDuration:I
int-to-long v4, v4
invoke-virtual {v0, v4, v5}, Landroid/view/animation/Animation;->setDuration(J)V
goto :goto_2
.end method
Next search:
Code:
# virtual methods
.method doFinishInput()V
Add this above it:
Code:
.method private updateSettings()V
.locals 4
.prologue
const/4 v3, 0x0
.line 413
invoke-virtual {p0}, Landroid/inputmethodservice/InputMethodService;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v1
const-string v2, "animation_ime_enter"
invoke-static {v1, v2, v3}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v1
iput v1, p0, Landroid/inputmethodservice/InputMethodService;->mAnimationEnterIndex:I
.line 415
invoke-virtual {p0}, Landroid/inputmethodservice/InputMethodService;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v1
const-string v2, "animation_ime_exit"
invoke-static {v1, v2, v3}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v1
iput v1, p0, Landroid/inputmethodservice/InputMethodService;->mAnimationExitIndex:I
.line 417
invoke-virtual {p0}, Landroid/inputmethodservice/InputMethodService;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v1
const-string v2, "animation_ime_interpolator"
invoke-static {v1, v2, v3}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v1
iput v1, p0, Landroid/inputmethodservice/InputMethodService;->mInterpolatorIndex:I
.line 419
invoke-virtual {p0}, Landroid/inputmethodservice/InputMethodService;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v1
const-string v2, "animation_ime_duration"
invoke-static {v1, v2, v3}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v0
.line 421
.local v0, "temp":I
mul-int/lit8 v1, v0, 0xf
iput v1, p0, Landroid/inputmethodservice/InputMethodService;->mAnimationDuration:I
.line 422
return-void
.end method
Now search
Code:
.method initViews()V
Add whats is in blue:
Code:
sget-object v0, Landroid/R$styleable;->InputMethodService:[I
invoke-virtual {p0, v0}, Landroid/inputmethodservice/InputMethodService;->obtainStyledAttributes([I)Landroid/content/res/TypedArray;
move-result-object v0
iput-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mThemeAttrs:Landroid/content/res/TypedArray;
.line 1082
iget-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mInflater:Landroid/view/LayoutInflater;
const v1, 0x1090063
invoke-virtual {v0, v1, v3}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;)Landroid/view/View;
move-result-object v0
iput-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mRootView:Landroid/view/View;
.line 776
[COLOR="Blue"]iget-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mRootView:Landroid/view/View;
const/16 v1, 0x300
invoke-virtual {v0, v1}, Landroid/view/View;->setSystemUiVisibility(I)V[/COLOR]
.line 778
iget-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mWindow:Landroid/inputmethodservice/SoftInputWindow;
iget-object v1, p0, Landroid/inputmethodservice/InputMethodService;->mRootView:Landroid/view/View;
invoke-virtual {v0, v1}, Landroid/inputmethodservice/SoftInputWindow;->setContentView(Landroid/view/View;)V
.line 1085
iget-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mRootView:Landroid/view/View;
invoke-virtual {v0}, Landroid/view/View;->getViewTreeObserver()Landroid/view/ViewTreeObserver;
Next search:
Code:
const-string v1, "fancy_ime_animations"
should be just a few lines down
Add blue
Code:
const-string v1, "fancy_ime_animations"
invoke-static {v0, v1, v2}, Landroid/provider/Settings$Global;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v0
if-eqz v0, :cond_0
.line 782
[COLOR="blue"]iget-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mWindow:Landroid/inputmethodservice/SoftInputWindow;
invoke-virtual {v0}, Landroid/inputmethodservice/SoftInputWindow;->getWindow()Landroid/view/Window;
move-result-object v0
const v1, 0x1030201
invoke-virtual {v0, v1}, Landroid/view/Window;->setWindowAnimations(I)V
[/COLOR]
.line 785
:cond_0
iget-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mRootView:Landroid/view/View;
const v1, 0x1020351
invoke-virtual {v0, v1}, Landroid/view/View;->findViewById(I)Landroid/view/View;
move-result-object v0
check-cast v0, Landroid/view/ViewGroup;
Search
Code:
const-string v0, "KOR"
Add blue above like this:
Code:
invoke-virtual {v0, v4}, Landroid/widget/FrameLayout;->setVisibility(I)V
[COLOR="blue"]new-instance v0, Landroid/os/Handler;
invoke-direct {v0}, Landroid/os/Handler;-><init>()V
iput-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mHandler:Landroid/os/Handler;[/COLOR]
.line 1113
const-string v0, "KOR"
const-string v1, "USA"
NOW search
Code:
.method public onCreate()V
Add blue:
Code:
invoke-virtual {v1}, Landroid/inputmethodservice/SoftInputWindow;->getWindow()Landroid/view/Window;
move-result-object v1
const/high16 v2, 0x1000000
invoke-virtual {v1, v2}, Landroid/view/Window;->addFlags(I)V
.line 1003
:cond_0
[COLOR="blue"] new-instance v0, Landroid/os/Handler;
invoke-direct {v0}, Landroid/os/Handler;-><init>()V
iput-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mHandler:Landroid/os/Handler;
.line 742
new-instance v0, Landroid/inputmethodservice/InputMethodService$SettingsObserver;
iget-object v1, p0, Landroid/inputmethodservice/InputMethodService;->mHandler:Landroid/os/Handler;
invoke-direct {v0, p0, v1}, Landroid/inputmethodservice/InputMethodService$SettingsObserver;-><init>(Landroid/inputmethodservice/InputMethodService;Landroid/os/Handler;)V
iput-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mSettingsObserver:Landroid/inputmethodservice/InputMethodService$SettingsObserver;
.line 743
iget-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mSettingsObserver:Landroid/inputmethodservice/InputMethodService$SettingsObserver;
invoke-virtual {v0}, Landroid/inputmethodservice/InputMethodService$SettingsObserver;->observe()V[/COLOR]
invoke-virtual {p0}, Landroid/inputmethodservice/InputMethodService;->initViews()V
.line 1004
iget-object v1, p0, Landroid/inputmethodservice/InputMethodService;->mWindow:Landroid/inputmethodservice/SoftInputWindow;
invoke-virtual {v1}, Landroid/inputmethodservice/SoftInputWindow;->getWindow()Landroid/view/Window;
move-result-object v1
const/4 v2, -0x1
const/4 v3, -0x2
invoke-virtual {v1, v2, v3}, Landroid/view/Window;->setLayout(II)V
.line 1016
[COLOR="blue"] iget-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mWindow:Landroid/inputmethodservice/SoftInputWindow;
invoke-virtual {v0}, Landroid/inputmethodservice/SoftInputWindow;->getWindow()Landroid/view/Window;
move-result-object v0
iput-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mWindowIme:Landroid/view/Window;
.line 747
invoke-direct {p0}, Landroid/inputmethodservice/InputMethodService;->updateSettings()V[/COLOR]
new-instance v0, Landroid/content/IntentFilter;
invoke-direct {v0}, Landroid/content/IntentFilter;-><init>()V
.line 1017
.local v0, "filter":Landroid/content/IntentFilter;
const-string v1, "RequestAxT9Info"
invoke-virtual {v0, v1}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
.line 1018
const-string v1, "com.samsung.axt9info.close"
invoke-virtual {v0, v1}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
.line 1023
iget-object v1, p0, Landroid/inputmethodservice/InputMethodService;->mBR:Landroid/content/BroadcastReceiver;
invoke-virtual {p0, v1, v0}, Landroid/inputmethodservice/InputMethodService;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
.line 1024
const-string v1, "InputMethodService"
const-string v2, "mBR.registerReceiver()"
invoke-static {v1, v2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 1054
return-void
.end method
Search
Code:
.method public onWindowHidden()V
Replace whole method with this:
Code:
.method public onWindowHidden()V
.locals 6
.prologue
.line 1669
iget v4, p0, Landroid/inputmethodservice/InputMethodService;->mAnimationExitIndex:I
if-nez v4, :cond_1
.line 1670
iget-object v4, p0, Landroid/inputmethodservice/InputMethodService;->mWindow:Landroid/inputmethodservice/SoftInputWindow;
invoke-virtual {v4}, Landroid/inputmethodservice/SoftInputWindow;->getWindow()Landroid/view/Window;
move-result-object v4
const v5, 0x1030056
invoke-virtual {v4, v5}, Landroid/view/Window;->setWindowAnimations(I)V
.line 1706
:cond_0
:goto_0
return-void
.line 1673
:cond_1
invoke-virtual {p0}, Landroid/inputmethodservice/InputMethodService;->getWindow()Landroid/app/Dialog;
move-result-object v1
.line 1674
.local v1, "dialog":Landroid/app/Dialog;
invoke-virtual {v1}, Landroid/app/Dialog;->getWindow()Landroid/view/Window;
move-result-object v4
iput-object v4, p0, Landroid/inputmethodservice/InputMethodService;->mWindowIme:Landroid/view/Window;
.line 1675
iget-object v4, p0, Landroid/inputmethodservice/InputMethodService;->mWindowIme:Landroid/view/Window;
const/4 v5, -0x1
invoke-virtual {v4, v5}, Landroid/view/Window;->setWindowAnimations(I)V
.line 1677
new-instance v2, Landroid/os/Handler;
invoke-direct {v2}, Landroid/os/Handler;-><init>()V
.line 1678
.local v2, "handler":Landroid/os/Handler;
new-instance v3, Landroid/inputmethodservice/InputMethodService$4;
invoke-direct {v3, p0, v1}, Landroid/inputmethodservice/InputMethodService$4;-><init>(Landroid/inputmethodservice/InputMethodService;Landroid/app/Dialog;)V
.line 1685
.local v3, "runnable":Ljava/lang/Runnable;
const/4 v4, 0x0
invoke-direct {p0, v4}, Landroid/inputmethodservice/InputMethodService;->retrieveAnimation(Z)Landroid/view/animation/Animation;
move-result-object v0
.line 1686
.local v0, "anim":Landroid/view/animation/Animation;
if-eqz v0, :cond_0
.line 1687
new-instance v4, Landroid/inputmethodservice/InputMethodService$5;
invoke-direct {v4, p0, v2, v3, v1}, Landroid/inputmethodservice/InputMethodService$5;-><init>(Landroid/inputmethodservice/InputMethodService;Landroid/os/Handler;Ljava/lang/Runnable;Landroid/app/Dialog;)V
invoke-virtual {v0, v4}, Landroid/view/animation/Animation;->setAnimationListener(Landroid/view/animation/Animation$AnimationListener;)V
.line 1698
invoke-virtual {v1}, Landroid/app/Dialog;->show()V
.line 1699
iget-object v4, p0, Landroid/inputmethodservice/InputMethodService;->mRootView:Landroid/view/View;
invoke-virtual {v4, v0}, Landroid/view/View;->startAnimation(Landroid/view/animation/Animation;)V
.line 1700
iget v4, p0, Landroid/inputmethodservice/InputMethodService;->mAnimationDuration:I
if-lez v4, :cond_2
.line 1701
iget v4, p0, Landroid/inputmethodservice/InputMethodService;->mAnimationDuration:I
mul-int/lit8 v4, v4, 0x2
int-to-long v4, v4
invoke-virtual {v2, v3, v4, v5}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z
goto :goto_0
.line 1703
:cond_2
const-wide/16 v4, 0x3e8
invoke-virtual {v2, v3, v4, v5}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z
goto :goto_0
.end method
Next search
Code:
.method public onWindowShown()V
Replace whole method with this:
Code:
.method public onWindowShown()V
.locals 4
.prologue
.line 1651
iget v2, p0, Landroid/inputmethodservice/InputMethodService;->mAnimationEnterIndex:I
if-nez v2, :cond_1
.line 1652
iget-object v2, p0, Landroid/inputmethodservice/InputMethodService;->mWindow:Landroid/inputmethodservice/SoftInputWindow;
invoke-virtual {v2}, Landroid/inputmethodservice/SoftInputWindow;->getWindow()Landroid/view/Window;
move-result-object v2
const v3, 0x1030056
invoke-virtual {v2, v3}, Landroid/view/Window;->setWindowAnimations(I)V
.line 1662
:cond_0
:goto_0
return-void
.line 1655
:cond_1
invoke-virtual {p0}, Landroid/inputmethodservice/InputMethodService;->getWindow()Landroid/app/Dialog;
move-result-object v1
.line 1656
.local v1, "dialog":Landroid/app/Dialog;
invoke-virtual {v1}, Landroid/app/Dialog;->getWindow()Landroid/view/Window;
move-result-object v2
iput-object v2, p0, Landroid/inputmethodservice/InputMethodService;->mWindowIme:Landroid/view/Window;
.line 1657
iget-object v2, p0, Landroid/inputmethodservice/InputMethodService;->mWindowIme:Landroid/view/Window;
const/4 v3, -0x1
invoke-virtual {v2, v3}, Landroid/view/Window;->setWindowAnimations(I)V
.line 1658
invoke-virtual {v1}, Landroid/app/Dialog;->show()V
.line 1659
const/4 v2, 0x1
invoke-direct {p0, v2}, Landroid/inputmethodservice/InputMethodService;->retrieveAnimation(Z)Landroid/view/animation/Animation;
move-result-object v0
.line 1660
.local v0, "anim":Landroid/view/animation/Animation;
if-eqz v0, :cond_0
.line 1661
iget-object v2, p0, Landroid/inputmethodservice/InputMethodService;->mRootView:Landroid/view/View;
invoke-virtual {v2, v0}, Landroid/view/View;->startAnimation(Landroid/view/animation/Animation;)V
goto :goto_0
.end method
Extract the zip and add them to their respected folder(s):
framework.jar.zip
After that YOUR DONE!!!
Make sure you have compiled everything with YOUR NEW public ids.. Then go head and transfer/flash the files..
REMINDER!! Please post a log/error if you are having problems. I will try to help as much as possible...:good:
Reserve..
Can you help me with my framework.jar?
the_vanya1 said:
Can you help me with my framework.jar?
Click to expand...
Click to collapse
What is it that you need help with.. I will try
Pls check my framework.jar and pls provide me video for this
https://www.dropbox.com/s/wwpcprwzkfamw30/framework.rar?dl=0
the_vanya1 said:
Pls check my framework.jar and pls provide me video for this
https://www.dropbox.com/s/wwpcprwzkfamw30/framework.rar?dl=0
Click to expand...
Click to collapse
Lol a video for this would be quite lengthy.. I don't really do "here is my files do them for me".. What is it that you are having trouble with or don't understand
ok, sorry, but its only part for framework.jar
I dont have this .method private sendInputViewShownState()V and const-string v0, "KOR" (LG P713, 4.1.2) Pls check it for me, only this part
the_vanya1 said:
ok, sorry, but its only part for framework.jar
I dont have this .method private sendInputViewShownState()V and const-string v0, "KOR" (LG P713, 4.1.2) Pls check it for me, only this part
Click to expand...
Click to collapse
Ok.. well it says to add a method above that (sendInputViewShownState) but you can add it anywhere.. When you compile it will automatically put in alphabetical order..
Not sure what you are referring to with "const-string v0 "KOR"
1. I dont have this line
const-string v0, "KOR"
const-string v1, "USA"
2. My .method public onCreate()V not like yours
3. I dont have inputmethod folder in com\android\internal\
the_vanya1 said:
1. I dont have this line
const-string v0, "KOR"
const-string v1, "USA"
2. My .method public onCreate()V not like yours
3. I dont have inputmethod folder in com\android\internal\
Click to expand...
Click to collapse
Ok.. let me take a look.. The const-string's maybe different but that should not matter.. You need look and see the placement of the code.. a string name should not matter..
Pls check my framework and tell me how to
the_vanya1 said:
1. I dont have this line
const-string v0, "KOR"
const-string v1, "USA"
2. My .method public onCreate()V not like yours
3. I dont have inputmethod folder in com\android\internal\
Click to expand...
Click to collapse
View attachment framework.zipHere is the InputMethodService with whats needed.. You can compare yours and see my edits..
Inputmethod folder might be in your framework2.jar.. framework and framework2 are essentially the same but they had to split them bc of the size..
thx, but I dont have the inputmethod folder in com\android\internal\ and in framework2
the_vanya1 said:
thx, but I dont have the inputmethod folder in com\android\internal\ and in framework2
Click to expand...
Click to collapse
Send it to me please.. You may need to check and see if LG has any specific frameworks, except "res" of course
What send? I already check it
the_vanya1 said:
What send? I already check it
Click to expand...
Click to collapse
Did you see if in your framework folder do you have any LG related frameworks.. except "res" ones.. It has to be somewhere.. pretty big part of the system
Related
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
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
How to add xperia S/T lockscreen and small apps
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>
{
"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"
}
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
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 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
CREDITS:
AOEN WORLD -for resources.
hmm
might need also
i better stop reserving posts...hehe
Wow nice :thumbup: request for hold back to kill app
hehe
Sent from my WT19i using Tapatalk 2
respect bro thanks
Sent from my SK17i using xda premium
tonnitube said:
Wow nice :thumbup: request for hold back to kill app
hehe
Sent from my WT19i using Tapatalk 2
Click to expand...
Click to collapse
no iam not adding back to kill tut...bcz its more complicated (even iam trying to understand it day by day) no req will be taken for back to kill
Nice, let's try the skip tracking on miui
anerik said:
Nice, let's try the skip tracking on miui
Click to expand...
Click to collapse
try it bro...if ur not successful make me a req ill do it ok
sandy7 said:
try it bro...if ur not successful make me a req ill do it ok
Click to expand...
Click to collapse
Sure, thanks!
I'll try this on xperia nexus and let u know asap....
Regards,
AJ
Sent from my Xperia Mini Pro using Tapatalk 2
Works fine on MIUI bro, thx!!
anerik said:
Works fine on MIUI bro, thx!!
Click to expand...
Click to collapse
so learnt some thing ,,,good for u..
You rock my friend!!!! :laugh:
Great thread!!!!
Nice guide
very nicely explained
serajr said:
You rock my friend!!!! :laugh:
Great thread!!!!
Click to expand...
Click to collapse
thanks buddy ...u are the inspiration for me
mv_style said:
Nice guide
very nicely explained
Click to expand...
Click to collapse
thanks ...still more coming up
xperia s lockscreen and small apps tut added.
Nice guide sandy7. Surely it will help me. Thanks btw.
A very useful guide! And well written too. Thanks!
Sent from my SK17i using xda premium
Ticklefish said:
A very useful guide! And well written too. Thanks!
Sent from my SK17i using xda premium
Click to expand...
Click to collapse
Ho thanks...I think my presentation is not so bad after all.
Sent from my SK17i using XDA Premium HD app
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
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
How to add xperia S/T lockscreen and small apps
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>
{
"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"
}
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
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 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
CREDITS:
AOEN WORLD -for resources.
me want this post
Nice tutorial mate good work :good:
added xperis S lockscreen and small apps TUT
Thread closed as it's cross-posted in Arc section. Please use the other thread: http://forum.xda-developers.com/showthread.php?t=2122258
4.2.2 Style Stausbar for Samsung 4.1.2 ROM
(This tutorial is originally made for SGSA but it should work with all samsung 4.1.2 ROMs)
Before we begin let me give credit to original author of this mod @SpaceCaker i'm just gonna tell you how to port it to Samsung JB 4.1.2 ROM.
(SpaceCaker's original Thread here)
Note: Throughout the tutorial we'll travel sequentially, i mean when i ask you to search for something and you find more than two matches, then choose the immediate one which comes after previous modification.
So let's begin
- Decompile SystemUI.apk
- Navigate to res/layout
- tw_status_bar.xml
search for
Code:
<com.android.systemui.statusbar.phone.PhoneStatusBarView android:orientation="vertical" android:id="@id/status_bar" android:background="@drawable/status_bar_background" android:focusable="true" android:fitsSystemWindows="true" android:descendantFocusability="afterDescendants"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
Add this below it
Code:
<com.android.systemui.statusbar.StatusBarServiceLRPull android:layout_width="fill_parent" android:layout_height="wrap_content">
- Now search for
Code:
<LinearLayout android:orientation="horizontal" android:id="@id/ticker" android:paddingLeft="6.0dip" android:animationCache="false" android:layout_width="fill_parent" android:layout_height="fill_parent">
Add this above it
Code:
</com.android.systemui.statusbar.StatusBarServiceLRPull>
- Save file
Click to expand...
Click to collapse
- tw_status_bar_expanded.xml
replace
Code:
<FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginBottom="@dimen/tw_close_handle_underlap">
with
Code:
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginBottom="@dimen/close_handle_underlap">
below it there will be <include /> clause add this line below it
Code:
</LinearLayout>
below it there'll be <TextView /> add these lines below it
Code:
<com.spacecaker.SpaceLayOut android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content">
<include layout="@layout/quickpanel_quick_settings_space" />
</LinearLayout>
<FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginBottom="@dimen/tw_close_handle_underlap">
- Now search for
Code:
<com.android.systemui.statusbar.phone.CloseDragHandle
and add this code above it
Code:
</com.spacecaker.SpaceLayOut>
- Save file
Click to expand...
Click to collapse
- tw_status_bar_expanded_header.xml
search for
Code:
<RelativeLayout android:id="@id/settings_button" android:background="@drawable/tw_quick_panel_setting_button_bg" android:focusable="true" android:visibility="visible" android:layout_width="@dimen/status_bar_expanded_setting_width" android:layout_height="39.0dip">
replace it with below code
Code:
<RelativeLayout android:id="@id/settings_button" android:background="@drawable/tw_quick_panel_setting_button_bg" android:focusable="true" android:visibility="invisible" android:layout_width="0.100000024dip" android:layout_height="0.100000024dip">
<ImageView android:id="@id/settings_button_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/tw_quickpanel_icon_settings" android:scaleType="center" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:contentDescription="@string/accessibility_settings_button" />
</RelativeLayout>
<RelativeLayout android:background="@drawable/tw_quick_panel_setting_button_bg" android:focusable="true" android:visibility="visible" android:layout_width="@dimen/status_bar_expanded_setting_width" android:layout_height="39.0dip">
- Search below for
Code:
android:contentDescription="@string/accessibility_settings_button"
and add this above it
Code:
android:onClick="mOpenSettings"
- Below after </RelativeLayout> add this code
Code:
<com.spacecaker.ButtonBurst android:id="@id/spacebuttonburst" android:layout_width="31.0dip" android:layout_height="34.0dip" android:scaleType="center" />
- Save file.
Click to expand...
Click to collapse
- Navigate to /res/values and add these lines to ids.xml
Code:
<item type="id" name="spaceybeaneyheader">false</item>
<item type="id" name="jbclock">false</item>
<item type="id" name="spacebuttonburst">false</item>
<item type="id" name="recent_app_button">false</item>
Click to expand...
Click to collapse
- Add these lines to end of the file Styles.xml
Code:
<style name="S3.Clear" parent="@*android:style/Widget.Button">
<item name="android:textAppearance">?android:textAppearanceSmallInverse</item>
<item name="android:textColor">#ffffffff</item>
<item name="android:gravity">center</item>
<item name="android:background">@drawable/tw_btn_default_small</item>
<item name="android:focusable">true</item>
<item name="android:clickable">true</item>
</style>
- Save files
Click to expand...
Click to collapse
- Download attached files and extract them in the directory where apk is decompiled.Now compile and again decompile APK.
Click to expand...
Click to collapse
- Go to /res/values/public.xml and search these
Code:
<public type="drawable" name="btn_tg"
<public type="drawable" name="btn_toggles_normal"
- Open smali/com/spacecaker/ButtonBurst.smali and search this
Code:
const v3, 0x7f020180
replace red part with id you got from
Code:
<public type="drawable" name="btn_toggles_normal"
- Now find this
Code:
const v3, 0x7f02017f
replace red part with id you got from
Code:
<public type="drawable" name="btn_tg"
Click to expand...
Click to collapse
- Open smali/com/android/systemui/SystemUIService.smali and add this to end of file
Code:
.method public mOpenSettings(Landroid/view/View;)V
.locals 3
.parameter "v"
.prologue
.line 2431
new-instance v0, Landroid/content/Intent;
invoke-direct {v0}, Landroid/content/Intent;-><init>()V
.line 2432
const-string v1, "com.android.settings"
const-string v2, "com.android.settings.Settings"
invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->setClassName(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
const/high16 v2, 0x1000
invoke-virtual {v0, v2}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;
move-result-object v0
.line 2433
invoke-virtual {p0, v0}, Landroid/content/Context;->startActivity(Landroid/content/Intent;)V
const-string v1, "statusbar"
invoke-virtual {p0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/app/StatusBarManager;
invoke-virtual {v0}, Landroid/app/StatusBarManager;->collapse()V
.line 1720
return-void
.end method
.method public ProfileButton(Landroid/view/View;)V
.locals 3
.parameter "v"
.prologue
.line 2431
new-instance v0, Landroid/content/Intent;
invoke-direct {v0}, Landroid/content/Intent;-><init>()V
.line 2432
const-string v1, "com.android.contacts"
const-string v2, "com.android.contacts.activities.PeopleActivity"
invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->setClassName(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
const/high16 v2, 0x1000
invoke-virtual {v0, v2}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;
move-result-object v0
.line 2433
invoke-virtual {p0, v0}, Landroid/content/Context;->startActivity(Landroid/content/Intent;)V
const-string v1, "statusbar"
invoke-virtual {p0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/app/StatusBarManager;
invoke-virtual {v0}, Landroid/app/StatusBarManager;->collapse()V
.line 1720
return-void
.end method
.method public camera_tile(Landroid/view/View;)V
.locals 3
.parameter "v"
.prologue
.line 2431
new-instance v0, Landroid/content/Intent;
invoke-direct {v0}, Landroid/content/Intent;-><init>()V
.line 2432
const-string v1, "com.sec.android.app.camera"
const-string v2, "com.sec.android.app.camera.Camera"
invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->setClassName(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
const/high16 v2, 0x1000
invoke-virtual {v0, v2}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;
move-result-object v0
.line 2433
invoke-virtual {p0, v0}, Landroid/content/Context;->startActivity(Landroid/content/Intent;)V
const-string v1, "statusbar"
invoke-virtual {p0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/app/StatusBarManager;
invoke-virtual {v0}, Landroid/app/StatusBarManager;->collapse()V
.line 1720
return-void
.end method
.method public turn_off_light(Landroid/view/View;)V
.locals 3
.parameter "v"
.prologue
.line 2431
new-instance v0, Landroid/content/Intent;
invoke-direct {v0}, Landroid/content/Intent;-><init>()V
.line 2432
const-string v1, "turn.off.the.lights"
const-string v2, "turn.off.the.lights.LockerActivity"
invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->setClassName(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
const/high16 v2, 0x1000
invoke-virtual {v0, v2}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;
move-result-object v0
.line 2433
invoke-virtual {p0, v0}, Landroid/content/Context;->startActivity(Landroid/content/Intent;)V
const-string v1, "statusbar"
invoke-virtual {p0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/app/StatusBarManager;
invoke-virtual {v0}, Landroid/app/StatusBarManager;->collapse()V
.line 1720
return-void
.end method
.method public torch_toggle(Landroid/view/View;)V
.locals 3
.parameter "v"
.prologue
.line 2431
new-instance v0, Landroid/content/Intent;
invoke-direct {v0}, Landroid/content/Intent;-><init>()V
.line 2432
const-string v1, "com.teslacoilsw.flashlight"
const-string v2, "com.teslacoilsw.flashlight.TeslaLEDToggle"
invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->setClassName(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
const/high16 v2, 0x1000
invoke-virtual {v0, v2}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;
move-result-object v0
.line 2433
invoke-virtual {p0, v0}, Landroid/content/Context;->startActivity(Landroid/content/Intent;)V
const-string v1, "statusbar"
invoke-virtual {p0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/app/StatusBarManager;
invoke-virtual {v0}, Landroid/app/StatusBarManager;->collapse()V
.line 1720
return-void
.end method
.method public dormant_toggle(Landroid/view/View;)V
.locals 3
.parameter "v"
.prologue
.line 2431
new-instance v0, Landroid/content/Intent;
invoke-direct {v0}, Landroid/content/Intent;-><init>()V
.line 2432
const-string v1, "com.android.settings"
const-string v2, "com.android.settings.dormantmode.DormantmodeSettings"
invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->setClassName(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
const/high16 v2, 0x1000
invoke-virtual {v0, v2}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;
move-result-object v0
.line 2433
invoke-virtual {p0, v0}, Landroid/content/Context;->startActivity(Landroid/content/Intent;)V
const-string v1, "statusbar"
invoke-virtual {p0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/app/StatusBarManager;
invoke-virtual {v0}, Landroid/app/StatusBarManager;->collapse()V
.line 1720
return-void
.end method
.method public tether_toggle(Landroid/view/View;)V
.locals 3
.parameter "v"
.prologue
.line 2431
new-instance v0, Landroid/content/Intent;
invoke-direct {v0}, Landroid/content/Intent;-><init>()V
.line 2432
const-string v1, "com.android.settings"
const-string v2, "com.android.settings.TetherSettings"
invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->setClassName(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
const/high16 v2, 0x1000
invoke-virtual {v0, v2}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;
move-result-object v0
.line 2433
invoke-virtual {p0, v0}, Landroid/content/Context;->startActivity(Landroid/content/Intent;)V
const-string v1, "statusbar"
invoke-virtual {p0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/app/StatusBarManager;
invoke-virtual {v0}, Landroid/app/StatusBarManager;->collapse()V
.line 1720
return-void
.end method
.method public app_toggle(Landroid/view/View;)V
.locals 3
.parameter "v"
.prologue
.line 2431
new-instance v0, Landroid/content/Intent;
invoke-direct {v0}, Landroid/content/Intent;-><init>()V
.line 2432
const-string v1, "com.android.settings"
const-string v2, "com.android.settings.RunningServices"
invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->setClassName(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
const/high16 v2, 0x1000
invoke-virtual {v0, v2}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;
move-result-object v0
.line 2433
invoke-virtual {p0, v0}, Landroid/content/Context;->startActivity(Landroid/content/Intent;)V
const-string v1, "statusbar"
invoke-virtual {p0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/app/StatusBarManager;
invoke-virtual {v0}, Landroid/app/StatusBarManager;->collapse()V
.line 1720
return-void
.end method
.method public bat_toggle(Landroid/view/View;)V
.locals 3
.parameter "v"
.prologue
.line 2431
new-instance v0, Landroid/content/Intent;
invoke-direct {v0}, Landroid/content/Intent;-><init>()V
.line 2432
const-string v1, "com.android.settings"
const-string v2, "com.android.settings.fuelgauge.PowerUsageSummary"
invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->setClassName(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
const/high16 v2, 0x1000
invoke-virtual {v0, v2}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;
move-result-object v0
.line 2433
invoke-virtual {p0, v0}, Landroid/content/Context;->startActivity(Landroid/content/Intent;)V
const-string v1, "statusbar"
invoke-virtual {p0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/app/StatusBarManager;
invoke-virtual {v0}, Landroid/app/StatusBarManager;->collapse()V
.line 1720
return-void
.end method
.method public SpaceCakerButton(Landroid/view/View;)V
.locals 3
.parameter "v"
.prologue
.line 2431
new-instance v0, Landroid/content/Intent;
invoke-direct {v0}, Landroid/content/Intent;-><init>()V
.line 2432
const-string v1, "com.android.settings"
const-string v2, "com.android.settings.Settings"
invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->setClassName(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
const/high16 v2, 0x1000
invoke-virtual {v0, v2}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;
move-result-object v0
.line 2433
invoke-virtual {p0, v0}, Landroid/content/Context;->startActivity(Landroid/content/Intent;)V
const-string v1, "statusbar"
invoke-virtual {p0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/app/StatusBarManager;
invoke-virtual {v0}, Landroid/app/StatusBarManager;->collapse()V
.line 1720
return-void
.end method
Click to expand...
Click to collapse
That's all compile apk and push it to device.
(Torch and Sleep tiles won't work unless you install TeslaLED and Turn Off the Lights app from market)
You can refer to SpaceCaker's thread for more info and tutorial for how to add new tiles.
If you get any errors/FCs report here along with full log.
(i won't quote posts without logcat and ask for logcat, i'll simply ignore them)
How to add Live Tiles
So now you've setup layout for 4.2 statusbar.Now its time to add some live tiles here.
What you'll get
At the moment i've only created live tiles for Battery and WiFi (those are the only ones which are fairly noticeable and widely used).Live tile for battery shows battery level and WiFi tile shows AP name and signal level when connected.See below screenshot for more info.
(More tiles will be added later when i'll get some time)
So let's begin
- Add thses lines to res/values/ids.xml
Code:
<item type="id" name="harsh_batt">false</item>
<item type="id" name="harsh_wifi">false</item>
<item type="id" name="harsh_bat_img">false</item>
<item type="id" name="harsh_wifi_img">false</item>
Click to expand...
Click to collapse
- Now open \res\layout\quickpanel_quick_settings_space.xml
- Every tile here is wrapped up within <FrameLayout></FrameLayout>.So now select one of frameLayout which will be your battery tile.This framelayout will include one ImageView (for indication of battery tile) and one TextView (for showing battery in %).Create them if you haven't.
- Now remove
Code:
android:src="@drawable/set"
or whatever drawable you've associated to that ImageView.
- Add
Code:
android:id="@id/harsh_bat_img"
for same ImageView.
- We'll do the same for TextView.Remove
Code:
android:text="Battery"
and add
Code:
android:id="@id/harsh_batt"
for that TextView.
- Now let's do the same for WiFi tile.Select FrameLayout for that tile and do following changes for that FrameLayout
- Remove
Code:
android:src="@drawable/set"
for the <ImageView> and add
Code:
android:id="@id/harsh_wifi_img"
- Now for <TextView>, remove
Code:
android:text="xxx"
and add
Code:
android:id="@id/harsh_wifi"
- Thats all.Save the files.
Click to expand...
Click to collapse
- Download the attached file and extract it to decompiled directory.
- Compile APK and decompiled it back so that public ids get generated.
- Now keep you res/values/public.xml open.
Click to expand...
Click to collapse
- Open smali\com\spacecaker\SpaceLayOut.smali
- Add
Code:
.field draw:Landroid/graphics/drawable/Drawable;
.field iv:Landroid/widget/ImageView;
before .field private mContext:Landroid/content/Context;
- Add
Code:
.field res:Landroid/content/res/Resources;
.field t:Landroid/widget/TextView;
.field userName:Ljava/lang/String;
after .field private mUpdating:Z
- Now search for .method public constructor <init>(Landroid/content/Context;Landroid/util/AttributeSetV and add following lines before return-void
Code:
invoke-virtual {p0}, Lcom/spacecaker/SpaceLayOut;->getResources()Landroid/content/res/Resources;
move-result-object v0
iput-object v0, p0, Lcom/spacecaker/SpaceLayOut;->res:Landroid/content/res/Resources;
- search for .method private update(Z)V and add this below .line 46 (i.e. at the starting of the method)
Code:
invoke-virtual {p0}, Lcom/spacecaker/SpaceLayOut;->getBatteryState()V
.line 256
invoke-virtual {p0}, Lcom/spacecaker/SpaceLayOut;->getWifiInfo()V
- Now add the following lines after # virtual methods.
Code:
.method public getBatteryState()V
.locals 13
.prologue
.line 31
const v10, 0x7f0d012c
invoke-virtual {p0, v10}, Lcom/spacecaker/SpaceLayOut;->findViewById(I)Landroid/view/View;
move-result-object v10
check-cast v10, Landroid/widget/TextView;
iput-object v10, p0, Lcom/spacecaker/SpaceLayOut;->t:Landroid/widget/TextView;
.line 32
const v10, 0x7f0d012e
invoke-virtual {p0, v10}, Lcom/spacecaker/SpaceLayOut;->findViewById(I)Landroid/view/View;
move-result-object v10
check-cast v10, Landroid/widget/ImageView;
iput-object v10, p0, Lcom/spacecaker/SpaceLayOut;->iv:Landroid/widget/ImageView;
.line 33
new-instance v3, Landroid/content/IntentFilter;
const-string v10, "android.intent.action.BATTERY_CHANGED"
invoke-direct {v3, v10}, Landroid/content/IntentFilter;-><init>(Ljava/lang/String;)V
.line 34
.local v3, ifilter:Landroid/content/IntentFilter;
iget-object v10, p0, Lcom/spacecaker/SpaceLayOut;->mContext:Landroid/content/Context;
const/4 v11, 0x0
invoke-virtual {v10, v11, v3}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
move-result-object v1
.line 35
.local v1, batteryStatus:Landroid/content/Intent;
const-string v10, "level"
const/4 v11, -0x1
invoke-virtual {v1, v10, v11}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I
move-result v5
.line 36
.local v5, level:I
const-string v10, "scale"
const/4 v11, -0x1
invoke-virtual {v1, v10, v11}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I
move-result v7
.line 37
.local v7, scale:I
const-string v10, "status"
const/4 v11, -0x1
invoke-virtual {v1, v10, v11}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I
move-result v8
.line 38
.local v8, status:I
const/4 v10, 0x2
if-eq v8, v10, :cond_0
const/4 v10, 0x5
if-eq v8, v10, :cond_0
const/4 v4, 0x0
.line 39
.local v4, isCharging:Z
:goto_0
const-string v10, "plugged"
const/4 v11, -0x1
invoke-virtual {v1, v10, v11}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I
move-result v2
.line 40
.local v2, chargePlug:I
const/4 v10, 0x2
if-ne v2, v10, :cond_1
const/4 v9, 0x1
.line 41
.local v9, usbCharge:Z
:goto_1
int-to-float v10, v5
int-to-float v11, v7
div-float v6, v10, v11
.line 42
.local v6, net_battery:F
const/high16 v10, 0x42c8
mul-float/2addr v10, v6
invoke-static {v10}, Ljava/lang/Math;->round(F)I
move-result v0
.line 43
.local v0, batteryPct:I
if-eqz v4, :cond_3
.line 44
if-eqz v9, :cond_2
.line 45
iget-object v10, p0, Lcom/spacecaker/SpaceLayOut;->t:Landroid/widget/TextView;
new-instance v11, Ljava/lang/StringBuilder;
invoke-static {v0}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
move-result-object v12
invoke-direct {v11, v12}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
const-string v12, "%"
invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v11
const-string v12, " (USB)"
invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v11
invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v11
invoke-virtual {v10, v11}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
.line 52
:goto_2
:try_start_0
iget-object v10, p0, Lcom/spacecaker/SpaceLayOut;->res:Landroid/content/res/Resources;
iget-object v11, p0, Lcom/spacecaker/SpaceLayOut;->res:Landroid/content/res/Resources;
const v12, 0x7f0202ff
invoke-virtual {v11, v12}, Landroid/content/res/Resources;->getXml(I)Landroid/content/res/XmlResourceParser;
move-result-object v11
invoke-static {v10, v11}, Landroid/graphics/drawable/Drawable;->createFromXml(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;)Landroid/graphics/drawable/Drawable;
move-result-object v10
iput-object v10, p0, Lcom/spacecaker/SpaceLayOut;->draw:Landroid/graphics/drawable/Drawable;
:try_end_0
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
.line 55
:goto_3
iget-object v10, p0, Lcom/spacecaker/SpaceLayOut;->draw:Landroid/graphics/drawable/Drawable;
invoke-virtual {v10, v0}, Landroid/graphics/drawable/Drawable;->setLevel(I)Z
.line 56
iget-object v10, p0, Lcom/spacecaker/SpaceLayOut;->iv:Landroid/widget/ImageView;
iget-object v11, p0, Lcom/spacecaker/SpaceLayOut;->draw:Landroid/graphics/drawable/Drawable;
invoke-virtual {v10, v11}, Landroid/widget/ImageView;->setBackground(Landroid/graphics/drawable/Drawable;)V
.line 57
return-void
.line 38
.end local v0 #batteryPct:I
.end local v2 #chargePlug:I
.end local v4 #isCharging:Z
.end local v6 #net_battery:F
.end local v9 #usbCharge:Z
:cond_0
const/4 v4, 0x1
goto :goto_0
.line 40
.restart local v2 #chargePlug:I
.restart local v4 #isCharging:Z
:cond_1
const/4 v9, 0x0
goto :goto_1
.line 47
.restart local v0 #batteryPct:I
.restart local v6 #net_battery:F
.restart local v9 #usbCharge:Z
:cond_2
iget-object v10, p0, Lcom/spacecaker/SpaceLayOut;->t:Landroid/widget/TextView;
new-instance v11, Ljava/lang/StringBuilder;
invoke-static {v0}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
move-result-object v12
invoke-direct {v11, v12}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
const-string v12, "%"
invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v11
const-string v12, " (AC)"
invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v11
invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v11
invoke-virtual {v10, v11}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
goto :goto_2
.line 49
:cond_3
iget-object v10, p0, Lcom/spacecaker/SpaceLayOut;->t:Landroid/widget/TextView;
new-instance v11, Ljava/lang/StringBuilder;
invoke-static {v0}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
move-result-object v12
invoke-direct {v11, v12}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
const-string v12, "%"
invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v11
invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v11
invoke-virtual {v10, v11}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
goto :goto_2
.line 53
:catch_0
move-exception v10
goto :goto_3
.end method
.method public getWifiInfo()V
.locals 7
.prologue
.line 59
const v4, 0x7f0d012d
invoke-virtual {p0, v4}, Lcom/spacecaker/SpaceLayOut;->findViewById(I)Landroid/view/View;
move-result-object v4
check-cast v4, Landroid/widget/TextView;
iput-object v4, p0, Lcom/spacecaker/SpaceLayOut;->t:Landroid/widget/TextView;
.line 60
const v4, 0x7f0d012f
invoke-virtual {p0, v4}, Lcom/spacecaker/SpaceLayOut;->findViewById(I)Landroid/view/View;
move-result-object v4
check-cast v4, Landroid/widget/ImageView;
iput-object v4, p0, Lcom/spacecaker/SpaceLayOut;->iv:Landroid/widget/ImageView;
.line 61
iget-object v4, p0, Lcom/spacecaker/SpaceLayOut;->mContext:Landroid/content/Context;
const-string v5, "wifi"
invoke-virtual {v4, v5}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v3
check-cast v3, Landroid/net/wifi/WifiManager;
.line 62
.local v3, wm:Landroid/net/wifi/WifiManager;
invoke-virtual {v3}, Landroid/net/wifi/WifiManager;->getWifiState()I
move-result v2
.line 63
.local v2, wifiState:I
packed-switch v2, :pswitch_data_0
.line 86
iget-object v4, p0, Lcom/spacecaker/SpaceLayOut;->t:Landroid/widget/TextView;
const-string v5, "Error"
invoke-virtual {v4, v5}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
.line 89
:goto_0
return-void
.line 67
:pswitch_0
iget-object v4, p0, Lcom/spacecaker/SpaceLayOut;->t:Landroid/widget/TextView;
const-string v5, "Wi-Fi"
invoke-virtual {v4, v5}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
.line 69
:try_start_0
iget-object v4, p0, Lcom/spacecaker/SpaceLayOut;->res:Landroid/content/res/Resources;
iget-object v5, p0, Lcom/spacecaker/SpaceLayOut;->res:Landroid/content/res/Resources;
const v6, 0x7f020322
invoke-virtual {v5, v6}, Landroid/content/res/Resources;->getXml(I)Landroid/content/res/XmlResourceParser;
move-result-object v5
invoke-static {v4, v5}, Landroid/graphics/drawable/Drawable;->createFromXml(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;)Landroid/graphics/drawable/Drawable;
move-result-object v4
iput-object v4, p0, Lcom/spacecaker/SpaceLayOut;->draw:Landroid/graphics/drawable/Drawable;
:try_end_0
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_1
.line 72
:goto_1
iget-object v4, p0, Lcom/spacecaker/SpaceLayOut;->iv:Landroid/widget/ImageView;
iget-object v5, p0, Lcom/spacecaker/SpaceLayOut;->draw:Landroid/graphics/drawable/Drawable;
invoke-virtual {v4, v5}, Landroid/widget/ImageView;->setBackground(Landroid/graphics/drawable/Drawable;)V
goto :goto_0
.line 75
:pswitch_1
invoke-virtual {v3}, Landroid/net/wifi/WifiManager;->getConnectionInfo()Landroid/net/wifi/WifiInfo;
move-result-object v1
.line 76
.local v1, wifiInfo:Landroid/net/wifi/WifiInfo;
iget-object v4, p0, Lcom/spacecaker/SpaceLayOut;->t:Landroid/widget/TextView;
invoke-virtual {v1}, Landroid/net/wifi/WifiInfo;->getSSID()Ljava/lang/String;
move-result-object v5
invoke-virtual {v4, v5}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
.line 77
invoke-virtual {v1}, Landroid/net/wifi/WifiInfo;->getRssi()I
move-result v4
const/4 v5, 0x5
invoke-static {v4, v5}, Landroid/net/wifi/WifiManager;->calculateSignalLevel(II)I
move-result v0
.line 79
.local v0, signalLevel:I
:try_start_1
iget-object v4, p0, Lcom/spacecaker/SpaceLayOut;->res:Landroid/content/res/Resources;
iget-object v5, p0, Lcom/spacecaker/SpaceLayOut;->res:Landroid/content/res/Resources;
const v6, 0x7f020300
invoke-virtual {v5, v6}, Landroid/content/res/Resources;->getXml(I)Landroid/content/res/XmlResourceParser;
move-result-object v5
invoke-static {v4, v5}, Landroid/graphics/drawable/Drawable;->createFromXml(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;)Landroid/graphics/drawable/Drawable;
move-result-object v4
iput-object v4, p0, Lcom/spacecaker/SpaceLayOut;->draw:Landroid/graphics/drawable/Drawable;
:try_end_1
.catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_0
.line 82
:goto_2
iget-object v4, p0, Lcom/spacecaker/SpaceLayOut;->draw:Landroid/graphics/drawable/Drawable;
invoke-virtual {v4, v0}, Landroid/graphics/drawable/Drawable;->setLevel(I)Z
.line 83
iget-object v4, p0, Lcom/spacecaker/SpaceLayOut;->iv:Landroid/widget/ImageView;
iget-object v5, p0, Lcom/spacecaker/SpaceLayOut;->draw:Landroid/graphics/drawable/Drawable;
invoke-virtual {v4, v5}, Landroid/widget/ImageView;->setBackground(Landroid/graphics/drawable/Drawable;)V
goto :goto_0
.line 80
:catch_0
move-exception v4
goto :goto_2
.line 70
.end local v0 #signalLevel:I
.end local v1 #wifiInfo:Landroid/net/wifi/WifiInfo;
:catch_1
move-exception v4
goto :goto_1
.line 63
nop
:pswitch_data_0
.packed-switch 0x0
:pswitch_0
:pswitch_0
:pswitch_0
:pswitch_1
.end packed-switch
.end method
Click to expand...
Click to collapse
- Search for
Code:
const v15, 0x7f0d012c
change public id which you get from
Code:
<public type="id" name="harsh_batt"
in public.xml
- Search for
Code:
const v15, 0x7f0d012e
change public id which you get from
Code:
<public type="id" name="harsh_bat_img"
- Search for
Code:
const v15, 0x7f0202ff
change public id which you get from
Code:
<public type="drawable" name="harsh_stat_battery"
- Search for
Code:
const v8, 0x7f0d012d
change public id which you get from
Code:
<public type="id" name="harsh_wifi"
- Search for
Code:
const v8, 0x7f0d012f
change public id which you get from
Code:
<public type="id" name="harsh_wifi_img"
- Search for
Code:
const v8, 0x7f020322
change public id which you get from
Code:
<public type="drawable" name="wifi_tile"
- Search for
Code:
const v8, 0x7f020300
change public id which you get from
Code:
<public type="drawable" name="harsh_stat_wifi"
Click to expand...
Click to collapse
- Thats it.Now save your file and compile APK and push it to device.
Tips,Tricks & FAQs
Changelog:
13/12/13 --> Initial Release
27/12/13 --> Optimized code.Reduced lags when live tiles are implemented.Live tiles will update only when statusbar is pulled down.
Tips, Tricks & FAQs:
If battery indicator or any other image don't look in center, define paddings like android:layout_marginTop="30.0dip"
If you've added more than 3 rows, then you need to enclose it in <ScrollView> in order to make it scrollable.
Even though i've named them Live tiles, they're not actually live like original 4.2.2 statusbar. They'll update only when tile layout is drawn (i mean expanded).But this has one advantage that addition overhead to system is gone.
Associate android: onClick="foobar" attribute to FrameLayout instead of ImageView so that clicking anywhere on the tile can execute defined method.
Each <LinearLayout> shows one row which have 3 FrameLayout by default.If you'll add/remove FrameLayout then width of tiles will be set accordingly.
screenshot will be? I would like to see the final result
Status bar disappeared. What to do? Galaxy ace 2 android 4.1.2
ildar2099 said:
Status bar disappeared. What to do? Galaxy ace 2 android 4.1.2
Click to expand...
Click to collapse
First...read the OP. Especially the underlined line at the bottom
Nice guide btw
Sent from my GT-I9305 using Tapatalk
Code:
pkTools152\SystemUI\res; found: mk
aapt: warning: string 'month_shortest_july' has no default translation in C:\ApkT
ools152\SystemUI\res; found: mk
aapt: warning: string 'month_shortest_june' has no default translation in C:\ApkT
ools152\SystemUI\res; found: mk
aapt: warning: string 'month_shortest_march' has no default translation in C:\Apk
Tools152\SystemUI\res; found: mk
aapt: warning: string 'month_shortest_may' has no default translation in C:\ApkTo
ols152\SystemUI\res; found: mk
aapt: warning: string 'month_shortest_november' has no default translation in C:\
ApkTools152\SystemUI\res; found: mk
aapt: warning: string 'month_shortest_october' has no default translation in C:\A
pkTools152\SystemUI\res; found: mk
aapt: warning: string 'month_shortest_september' has no default translation in C:
\ApkTools152\SystemUI\res; found: mk
aapt: warning: string 'no_such_item' has no default translation in C:\ApkTools152
\SystemUI\res; found: bg cs da de el en_US es_ES es_US et fi fr ga hr hu is it kk
ko lt lv mk nb nl pl pt_PT ro ru sk sl sr sv tr uk
aapt: warning: string 'pm' has no default translation in C:\ApkTools152\SystemUI\
res; found: mk
aapt: warning: string 'quickpanel_data_roaming_disable_toast' has no default tran
slation in C:\ApkTools152\SystemUI\res; found: bg cs da de el en_US es_ES es_US e
t fi fr ga hr hu is it kk ko lt lv mk nb nl pl pt_PT ro ru sk sl sr sv tr uk
aapt: warning: string 'quickpanel_data_roaming_enable_toast' has no default trans
lation in C:\ApkTools152\SystemUI\res; found: bg cs da de el en_US es_ES es_US et
fi fr ga hr hu is it kk ko lt lv mk nb nl pl pt_PT ro ru sk sl sr sv tr uk
aapt: warning: string 'today' has no default translation in C:\ApkTools152\System
UI\res; found: mk
aapt: warning: string 'tomorrow' has no default translation in C:\ApkTools152\Sys
temUI\res; found: mk
aapt: warning: string 'twelve_hour_time_format' has no default translation in C:\
ApkTools152\SystemUI\res; found: mk
aapt: warning: string 'yesterday' has no default translation in C:\ApkTools152\Sy
stemUI\res; found: mk
I: Building apk file...
SystemUI - complete
All done!
My original SystemUI.apk
They're just apktool warnings. You need a logcat of the system ui fc not the compile log
Sent from my GT-I9305 using Tapatalk
Goldie said:
They're just apktool warnings. You need a logcat of the system ui fc not the compile log
Sent from my GT-I9305 using Tapatalk
Click to expand...
Click to collapse
where to find it?
ildar2099 said:
where to find it?
Click to expand...
Click to collapse
You should have a dumpstate_app_error.txt.gz in data/log. If not then you need to google how to take a logcat
Sent from my GT-I9305 using Tapatalk
Goldie said:
You should have a dumpstate_app_error.txt.gz in data/log. If not then you need to google how to take a logcat
Sent from my GT-I9305 using Tapatalk
Click to expand...
Click to collapse
can be more?
Sent from my GT-I8160 using xda app-developers app
Great tutorial, I would like to try this on Note but one question , is the zip file same for xhdpi phones?
nice tutorial thank you..
tommorow i will try it :good:
just awesome. Thank you for all Mr.Harsh
got it working, but there's 1 problem, when not charging, there's no icons in the statusbar, and i can only use the last used dropdown.
when it is charging, i can use both (left and right) and the statusbar looks normal. any idea what that could be? i'll upload the logcat later, unless you know what this problem is.
-edit- it seems that the statusbar and mod work like expected when in the lockscreen, and when there is a notification (when charging over usb there is a notification, so that's why it also works the way it should when charging, it also doesn't work when charging normally). because of this i can't upload a logcat, cause when using my pc (via usb) the statusbar works normally, and when using terminal emulator there is a notification, so then it also works normally.
---------- Post added at 11:47 PM ---------- Previous post was at 11:05 PM ----------
nevermind, i disabled the clock with some xml editing, and apparently that causes the disappearing of the icons and the functionality of the left/right pull.
so for anybody that for some reason removed the clock, it causes this bug (maybe it isn't a bug, i don't know yet) to happen.
ildar2099 said:
My original SystemUI.apk
Click to expand...
Click to collapse
Yep, as Goldie told they're just warnings, if statusbar has disappeared then you must have done something wrong.Post logcat here.
(Here is a tut about how to take logcat: http://forum.xda-developers.com/showthread.php?t=2303834 )
kmokhtar79 said:
Great tutorial, I would like to try this on Note but one question , is the zip file same for xhdpi phones?
Click to expand...
Click to collapse
You'll need to replace icons in drawable-hdpi folder else they'll look too small.But if you're gonna test it then try with those icons then you'll just need to replace those icons by better icons.
mjz2cool said:
got it working, but there's 1 problem, when not charging, there's no icons in the statusbar, and i can only use the last used dropdown.
when it is charging, i can use both (left and right) and the statusbar looks normal. any idea what that could be? i'll upload the logcat later, unless you know what this problem is.
-edit- it seems that the statusbar and mod work like expected when in the lockscreen, and when there is a notification (when charging over usb there is a notification, so that's why it also works the way it should when charging, it also doesn't work when charging normally). because of this i can't upload a logcat, cause when using my pc (via usb) the statusbar works normally, and when using terminal emulator there is a notification, so then it also works normally.
---------- Post added at 11:47 PM ---------- Previous post was at 11:05 PM ----------
nevermind, i disabled the clock with some xml editing, and apparently that causes the disappearing of the icons and the functionality of the left/right pull.
so for anybody that for some reason removed the clock, it causes this bug (maybe it isn't a bug, i don't know yet) to happen.
Click to expand...
Click to collapse
Have you modified statusbar before?
Anyways i'm glad that you got it working..
ildar2099 said:
can be more?
Sent from my GT-I8160 using xda app-developers app
Click to expand...
Click to collapse
http://forum.xda-developers.com/showthread.php?t=2303834
mr.harsh said:
4.2.2 Style Stausbar for Samsung 4.1.2 ROM
(This tutorial is originally made for SGSA but it should work with all samsung 4.1.2 ROMs)
Before we begin let me give credit to original author of this mod @SpaceCaker i'm just gonna tell you how to port it to Samsung JB 4.1.2 ROM.
(SpaceCaker's original Thread here)
Note: Throughout the tutorial we'll travel sequentially, i mean when i ask you to search for something and you find more than two matches, then choose the immediate one which comes after previous modification.
So let's begin
- Decompile SystemUI.apk
- Navigate to res/layout
That's all compile apk and push it to device.
(Torch and Sleep tiles won't work unless you install TeslaLED and Turn Off the Lights app from market)
You can refer to SpaceCaker's thread for more info and tutorial for how to add new tiles.
If you get any errors/FCs report here along with full log.
Click to expand...
Click to collapse
thanks b4 for your guide:good: but after i try this guide not work for me my systemUI FC i hope you help me.. (sorry for bad my English)
Edit: SOLVED my mistake incorrect one line to edit
is there a way to add actual toggles? i tried using the guides to add lidroid toggles, and then the guide to get them in a grid, but i can't seem to get the lidroid toggles to work.
abdoel_046 said:
thanks b4 for your guide:good: but after i try this guide not work for me my systemUI FC i hope you help me.. (sorry for bad my English)
Click to expand...
Click to collapse
No log = No help
mjz2cool said:
is there a way to add actual toggles? i tried using the guides to add lidroid toggles, and then the guide to get them in a grid, but i can't seem to get the lidroid toggles to work.
Click to expand...
Click to collapse
You need to override methods in such a way that they toggles the state of wifi/bluetooth etc instead of launching activity.I did it but problem was that tiles won't get updated after toggling state.SpaceCaker has made update() method private/ non-static (of course there was reason to do so) so we can't call is after changing state.To make it work in that i'll need to code whole things again but i don't have such time.May be in future i'll do that...
BTW, lidroid toggles are easy to port and arrange them in grid.
mr.harsh said:
No log = No help
You need to override methods in such a way that they toggles the state of wifi/bluetooth etc instead of launching activity.I did it but problem was that tiles won't get updated after toggling state.SpaceCaker has made update() method private/ non-static (of course there was reason to do so) so we can't call is after changing state.To make it work in that i'll need to code whole things again but i don't have such time.May be in future i'll do that...
BTW, lidroid toggles are easy to port and arrange them in grid.
Click to expand...
Click to collapse
already solved.. sorry mr.harsh i wrong edit one line it is make systemUI FC..
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
GUIDE Header Images Auto machine
Work and Tested - CM 12.1 & LP Based
1. Decompile settings.apk
At the file:
Settings\res\xml\Display_Settings.xmll
Add this line
<com.android.settings.cyanogenmod.SystemSettingSwitchPreference android:title="@string/status_bar_custom_header_title" android:key="status_bar_custom_header" android:summary="@string/status_bar_custom_header_summary" android:defaultValue="false" />
Click to expand...
Click to collapse
ADD THIS LINES.
Settings\res\values\strings.xml
<string name="status_bar_custom_header_title">Custom auto machine header image</string>
<string name="status_bar_custom_header_summary">Enable notification panel header image</string>
Click to expand...
Click to collapse
*Compile Settings.apk DONE*
2. Decompile SystemUI.apk
ystemUI\res\layout\status_bar_expanded_header.xml
Looking for:
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:systemui="http://schemas.android.com/apk/res-auto">
following inserted ::
<ImageView android:layout_gravity="center" android:id="@id/background_image" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:scaleType="centerCrop" android:adjustViewBounds="true" />
Click to expand...
Click to collapse
SystemUI\res\values\ids.xml
Add this line
<item type="id" name="background_image">false</item>
Click to expand...
Click to collapse
*compile and decompile again to assign the ID to a file*
GO TO SystemUI\smali\com\android\systemui\statusbar\phone\PhoneStatusbar.smali
PHP:
Looking for:
# instance fields
following inserted ::
.field private mStatusBarHeaderMachine:Lcom/android/systemui/ahmednhk/StatusBarHeaderMachine;
----------------------------------------------------------------
Looking for:
.method protected makeStatusBarView()V
After This Line:
invoke-direct/range {p0 .. p0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->startGlyphRasterizeHack()V
following inserted:
.line 1309
new-instance v3, Lcom/android/systemui/ahmednhk/StatusBarHeaderMachine;
move-object/from16 v0, p0
iget-object v4, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mContext:Landroid/content/Context;
invoke-direct {v3, v4}, Lcom/android/systemui/ahmednhk/StatusBarHeaderMachine;-><init>(Landroid/content/Context;)V
move-object/from16 v0, p0
iput-object v3, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarHeaderMachine:Lcom/android/systemui/ahmednhk/StatusBarHeaderMachine;
.line 1310
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarHeaderMachine:Lcom/android/systemui/ahmednhk/StatusBarHeaderMachine;
move-object/from16 v0, p0
iget-object v4, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mHeader:Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;
invoke-virtual {v3, v4}, Lcom/android/systemui/ahmednhk/StatusBarHeaderMachine;->addObserver(Lcom/android/systemui/ahmednhk/StatusBarHeaderMachine$IStatusBarHeaderMachineObserver;)V
.line 1311
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarHeaderMachine:Lcom/android/systemui/ahmednhk/StatusBarHeaderMachine;
invoke-virtual {v3}, Lcom/android/systemui/ahmednhk/StatusBarHeaderMachine;->updateEnablement()V
----------------------------------------------------------------
SystemUI\smali\com\android\systemui\statusbar\phone\StatusBarHeaderView.smali
Looking for:
.implements Lcom/android/systemui/statusbar/policy/WeatherController$Callback;
following inserted :
.implements Lcom/android/systemui/ahmednhk/StatusBarHeaderMachine$IStatusBarHeaderMachineObserver;
----------------------------------------------------------------
Looking for:
# instance fields
following inserted :
.field private mBackgroundImage:Landroid/widget/ImageView;
----------------------------------------------------------------
Looking for:
.field private mCollapsedHeight:I
following inserted :
.field private mCurrentBackground:Landroid/graphics/drawable/Drawable;
----------------------------------------------------------------
Looking for:
.field private mExpandedHeight:I
following inserted :
.field private mLastHeight:F
----------------------------------------------------------------
Looking for:
.method static synthetic access$900(Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;)Landroid/widget/Switch;
At the end of it -> inserted :
.method static synthetic access$100001(Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;Landroid/graphics/drawable/Drawable;Z)V
.locals 0
.param p0, "x0" # Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;
.param p1, "x1" # Landroid/graphics/drawable/Drawable;
.param p2, "x2" # Z
.prologue
.line 71
invoke-direct {p0, p1, p2}, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->doUpdateStatusBarCustomHeader(Landroid/graphics/drawable/Drawable;Z)V
return-void
.end method
.method static synthetic access$100002(Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;)Landroid/widget/ImageView;
.locals 1
.param p0, "x0" # Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;
.prologue
.line 71
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mBackgroundImage:Landroid/widget/ImageView;
return-object v0
.end method
.method static synthetic access$100003(Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/Drawable;
.locals 0
.param p0, "x0" # Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;
.param p1, "x1" # Landroid/graphics/drawable/Drawable;
.prologue
.line 71
iput-object p1, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mCurrentBackground:Landroid/graphics/drawable/Drawable;
return-object p1
.end method
.method private doUpdateStatusBarCustomHeader(Landroid/graphics/drawable/Drawable;Z)V
.locals 2
.param p1, "next" # Landroid/graphics/drawable/Drawable;
.param p2, "force" # Z
.prologue
.line 1033
if-eqz p1, :cond_1
.line 1034
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mCurrentBackground:Landroid/graphics/drawable/Drawable;
if-eq p1, v0, :cond_0
.line 1035
const-string v0, "StatusBarHeaderView"
const-string v1, "Updating status bar header background"
invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
.line 1036
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mBackgroundImage:Landroid/widget/ImageView;
const/4 v1, 0x0
invoke-virtual {v0, v1}, Landroid/widget/ImageView;->setVisibility(I)V
.line 1037
invoke-direct {p0, p1, p2}, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->setNotificationPanelHeaderBackground(Landroid/graphics/drawable/Drawable;Z)V
.line 1038
iput-object p1, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mCurrentBackground:Landroid/graphics/drawable/Drawable;
.line 1044
:cond_0
:goto_0
return-void
.line 1041
:cond_1
const/4 v0, 0x0
iput-object v0, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mCurrentBackground:Landroid/graphics/drawable/Drawable;
.line 1042
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mBackgroundImage:Landroid/widget/ImageView;
const/16 v1, 0x8
invoke-virtual {v0, v1}, Landroid/widget/ImageView;->setVisibility(I)V
goto :goto_0
.end method
.method private setNotificationPanelHeaderBackground(Landroid/graphics/drawable/Drawable;Z)V
.locals 5
.param p1, "dw" # Landroid/graphics/drawable/Drawable;
.param p2, "force" # Z
.prologue
const/4 v4, 0x1
.line 1047
iget-object v2, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mBackgroundImage:Landroid/widget/ImageView;
invoke-virtual {v2}, Landroid/widget/ImageView;->getDrawable()Landroid/graphics/drawable/Drawable;
move-result-object v2
if-eqz v2, :cond_0
if-nez p2, :cond_0
.line 1048
const/4 v2, 0x2
new-array v0, v2, [Landroid/graphics/drawable/Drawable;
.line 1049
.local v0, "arrayDrawable":[Landroid/graphics/drawable/Drawable;
const/4 v2, 0x0
iget-object v3, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mBackgroundImage:Landroid/widget/ImageView;
invoke-virtual {v3}, Landroid/widget/ImageView;->getDrawable()Landroid/graphics/drawable/Drawable;
move-result-object v3
aput-object v3, v0, v2
.line 1050
aput-object p1, v0, v4
.line 1052
new-instance v1, Landroid/graphics/drawable/TransitionDrawable;
invoke-direct {v1, v0}, Landroid/graphics/drawable/TransitionDrawable;-><init>([Landroid/graphics/drawable/Drawable;)V
.line 1053
.local v1, "transitionDrawable":Landroid/graphics/drawable/TransitionDrawable;
invoke-virtual {v1, v4}, Landroid/graphics/drawable/TransitionDrawable;->setCrossFadeEnabled(Z)V
.line 1054
iget-object v2, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mBackgroundImage:Landroid/widget/ImageView;
invoke-virtual {v2, v1}, Landroid/widget/ImageView;->setImageDrawable(Landroid/graphics/drawable/Drawable;)V
.line 1055
const/16 v2, 0x3e8
invoke-virtual {v1, v2}, Landroid/graphics/drawable/TransitionDrawable;->startTransition(I)V
.line 1059
.end local v0 # "arrayDrawable":[Landroid/graphics/drawable/Drawable;
.end local v1 # "transitionDrawable":Landroid/graphics/drawable/TransitionDrawable;
:goto_0
return-void
.line 1057
:cond_0
iget-object v2, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mBackgroundImage:Landroid/widget/ImageView;
invoke-virtual {v2, p1}, Landroid/widget/ImageView;->setImageDrawable(Landroid/graphics/drawable/Drawable;)V
goto :goto_0
.end method
----------------------------------------------------------------
Looking for:
# virtual method
following inserted :
.method public disableHeader()V
.locals 1
.prologue
.line 1072
new-instance v0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView$98;
invoke-direct {v0, p0}, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView$98;-><init>(Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;)V
invoke-virtual {p0, v0}, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->post(Ljava/lang/Runnable;)Z
.line 1078
return-void
.end method
.method public updateHeader(Landroid/graphics/drawable/Drawable;Z)V
.locals 1
.param p1, "headerImage" # Landroid/graphics/drawable/Drawable;
.param p2, "force" # Z
.prologue
.line 1063
new-instance v0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView$97;
invoke-direct {v0, p0, p1, p2}, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView$97;-><init>(Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;Landroid/graphics/drawable/Drawable;Z)V
invoke-virtual {p0, v0}, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->post(Ljava/lang/Runnable;)Z
.line 1068
return-void
.end method
----------------------------------------------------------------
Looking for:
.method protected onFinishInflate()V
After This Line:
iput-object v0, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mDateExpanded:Landroid/widget/TextView;
following inserted ::
.line 31
const v0, 0x7f0f017a
invoke-virtual {p0, v0}, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->findViewById(I)Landroid/view/View;
move-result-object v0
check-cast v0, Landroid/widget/ImageView;
iput-object v0, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mBackgroundImage:Landroid/widget/ImageView;
.line 168
Will Find At :
<0x7f0f017a - <public type="id" name="background_image">
----------------------------------------------------------------
Looking for:
.method public setExpansion(F)V
Changing it completely with:
.method public setExpansion(F)V
.locals 5
.param p1, "t" # F
.prologue
.line 584
iget-boolean v2, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mExpanded:Z
if-nez v2, :cond_0
.line 585
const/4 p1, 0x0
.line 587
:cond_0
iput p1, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mCurrentT:F
.line 588
iget v2, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mCollapsedHeight:I
int-to-float v2, v2
iget v3, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mExpandedHeight:I
iget v4, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mCollapsedHeight:I
sub-int/2addr v3, v4
int-to-float v3, v3
mul-float/2addr v3, p1
add-float v0, v2, v3
.line 589
.local v0, "height":F
iget v2, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mLastHeight:F
cmpl-float v2, v0, v2
if-eqz v2, :cond_3
.line 590
iget v2, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mCollapsedHeight:I
int-to-float v2, v2
cmpg-float v2, v0, v2
if-gez v2, :cond_1
.line 591
iget v2, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mCollapsedHeight:I
int-to-float v0, v2
.line 593
:cond_1
iget v2, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mExpandedHeight:I
int-to-float v2, v2
cmpl-float v2, v0, v2
if-lez v2, :cond_2
.line 594
iget v2, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mExpandedHeight:I
int-to-float v0, v2
.line 596
:cond_2
move v1, v0
.line 597
.local v1, "heightFinal":F
invoke-direct {p0, v1}, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->setClipping(F)V
.line 599
new-instance v2, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView$96;
invoke-direct {v2, p0, v1}, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView$96;-><init>(Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;F)V
invoke-virtual {p0, v2}, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->post(Ljava/lang/Runnable;)Z
.line 607
invoke-direct {p0, p1}, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->updateLayoutValues(F)V
.line 608
iput v1, p0, Lcom/android/systemui/statusbar/phone/StatusBarHeaderView;->mLastHeight:F
.line 610
.end local v1 # "heightFinal":F
:cond_3
return-void
.end method
----------------------------------------------------------------
*assign the ID's to file*
SystemUI\smali\com\android\systemui\ahmednhk\StatusBarHeaderProvider.smali
<public type="drawable" name="notifhead_christmas"
LINE 220
<public type="drawable" name="notifhead_newyearseve"
LINE 241
<public type="drawable" name="notifhead_night"
LINE 265
<public type="drawable" name="notifhead_sunrise"
LINE 280
<public type="drawable" name="notifhead_morning"
LINE 295
<public type="drawable" name="notifhead_noon"
LINE 310
<public type="drawable" name="notifhead_afternoon"
LINE 325
<public type="drawable" name="notifhead_sunset"
LINE 342>
*Compile SystemUI.apk DONE*
Files and Compare Press Me
I have tried this but my systemUI got fc. I decompile and recompile it without errors. Any help?