[MOD][Guide]How to change lockscreen clock position in real time
Before modding do a Nandroid Backup
With this mod you can change lockscreen weather widget position too if activated
Thanks to @Goldie for his special threadhttp://forum.xda-developers.com/galaxy-s2/development-derivatives/guide-understanding-creating-smali-mods-t2488033
To achieve you need:
SecSettings.apk
framework-res.apk
android.policy.jar
tool for decompile and compile like apktool 1.5.2;
tool for text edit like notepad++:
Start with SecSettings.apk:
Decompile SecSettings.apk ,go in res/xml ,open with text editor display_settings.xml and add the red lines
Code:
<CheckBoxPreference android:persistent="false" android:title="@string/display_saving" android:key="power_saving_mode" android:summary="@string/display_saving_mode_summary" />
<CheckBoxPreference android:persistent="false" android:title="@string/notification_pulse_title" android:key="notification_pulse" />
[COLOR="Red"]<PreferenceCategory android:title="@string/lockscreen_options">
<PreferenceScreen android:title="@string/lockscreen_clock_position">
<ListPreference android:entries="@array/lockscreen_clock_position_entries" android:title="@string/lockscreen_clock_position" android:key="clock_position" android:summary="@string/lockscreen_clock_position_summary" android:widgetLayout="@layout/round_more_icon" android:entryValues="@array/lockscreen_clock_position_values" />
</PreferenceScreen>
</PreferenceCategory>[/COLOR]
Go in res/value open with text editor arrays.xml and add at the end the red lines
Code:
[COLOR="Red"] <string-array name="lockscreen_clock_position_entries">
<item>At Top-Left</item>
<item>At Center-Left</item>
<item>At Bottom-Left</item>
<item>At Top-Center</item>
<item>At Center-Center</item>
<item>At Top-Right</item>
</string-array>
<string-array name="lockscreen_clock_position_values">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
</string-array>[/COLOR]
Go in res/value open with text editor strings.xml and add at the end this lines
Code:
<string name="lockscreen_options">Lockscreen Options</string>
<string name="lockscreen_clock_position">Clock Position</string>
<string name="lockscreen_clock_position_summary">Choose the position of the clock</string>
Go in smali\com\android\settings\DisplaySettings.smali file and add the following lines in RED
Code:
.field private final mIntentReceiver:Landroid/content/BroadcastReceiver;
.field private mKeyBacklightmode:Landroid/preference/CheckBoxPreference;
[COLOR="Red"]
.field private mLockClockPos:Landroid/preference/ListPreference;
[/COLOR]
field private mMultiWindowModeObserver:Landroid/database/ContentObserver;
.field private mMultiWindowPref:Landroid/preference/CheckBoxPreference;
In the same file find .method public onCreate and add the following lines in RED
Code:
iput-object v12, p0, Lcom/android/settings/DisplaySettings;->mFontSizePref:Landroid/preference/ListPreference;
.line 424
iget-object v12, p0, Lcom/android/settings/DisplaySettings;->mFontSizePref:Landroid/preference/ListPreference;
invoke-virtual {v12, p0}, Landroid/preference/ListPreference;->setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V
[COLOR="Red"]
const-string v12, "clock_position"
invoke-virtual {p0, v12}, Lcom/android/settings/DisplaySettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
move-result-object v12
check-cast v12, Landroid/preference/ListPreference;
iput-object v12, p0, Lcom/android/settings/DisplaySettings;->mLockClockPos:Landroid/preference/ListPreference;
const-string v12, "clock_position"
const/4 v13, 0x0
invoke-static {v8, v12, v13}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v12
iget-object v13, p0, Lcom/android/settings/DisplaySettings;->mLockClockPos:Landroid/preference/ListPreference;
invoke-static {v12}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
move-result-object v12
invoke-virtual {v13, v12}, Landroid/preference/ListPreference;->setValue(Ljava/lang/String;)V
iget-object v13, p0, Lcom/android/settings/DisplaySettings;->mLockClockPos:Landroid/preference/ListPreference;
invoke-virtual {v13, p0}, Landroid/preference/SwitchPreferenceScreen;->setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V [/COLOR]
.line 426
In the same file find .method public onPreferenceChange then find this code and add the red lines ,in blue line some explanation
Code:
const-string v2, "contextualpage_settings"
invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, [COLOR="Red"]:cond_clockpos[/COLOR] [COLOR="Blue"]change this from cond_2 to cond_clockpos[/COLOR]
.line 1089
check-cast p2, Ljava/lang/Boolean;
invoke-virtual {p2}, Ljava/lang/Boolean;->booleanValue()Z
move-result v0
if-eqz v0, :cond_e
in the same method find this code and add the red lines
Code:
.line 1100
const-string v1, "DisplaySettings"
const-string v3, "CONTEXTUALPAGE_SWITCH_CHANGED changed = false"
invoke-static {v1, v3}, Landroid/util/Log;->secD(Ljava/lang/String;Ljava/lang/String;)I
goto :goto_7
:cond_11
move-wide v0, v4
goto/16 :goto_3
[COLOR="Red"]
:cond_clockpos
iget-object v1, p0, Lcom/android/settings/DisplaySettings;->mLockClockPos:Landroid/preference/ListPreference;
if-ne p1, v1, :cond_2
check-cast p2, Ljava/lang/String;
invoke-static {p2}, Ljava/lang/Integer;->valueOf(Ljava/lang/String;)Ljava/lang/Integer;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/Integer;->intValue()I
move-result v0
invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v1
const-string v2, "clock_position"
invoke-static {v1, v2, v0}, Landroid/provider/Settings$System;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z
goto/16 :goto_4 [/COLOR]
.end method
Save all changes and compile SecSettings
framework-res.apk part
Decompile framework-res.apk go in res/layout and open keyguard_circlelock_main.xml file find and change the following line
from this
Code:
<FrameLayout android:id="@id/circle_lockscreen_clock" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" />
to this
Code:
<FrameLayout android:id="@id/circle_lockscreen_clock" android:layout_width="fill_parent" android:layout_height="[COLOR="Red"]match_parent[/COLOR]" android:layout_alignParentTop="true" />
save changes then go in res/layout-hdpi and open keyguard_circlelock_clockwidget.xml file and replace whole file with the following lines
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical" android:id="@id/clock_root" android:paddingTop="4.0dip" android:paddingBottom="6.0dip" android:layout_width="match_parent" android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<view android:gravity="center" android:id="@id/clock_emergency" android:layout_width="fill_parent" android:layout_height="17.0dip" class="com.android.internal.policy.impl.sec.ClockWidget$EmergencyCall">
<TextView android:textSize="12.0dip" android:textColor="#ffebebeb" android:ellipsize="none" android:gravity="center" android:id="@id/clock_emergency_text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:shadowColor="@color/black" android:shadowDx="1.0" android:shadowDy="1.0" android:shadowRadius="0.25" />
</view>
<view android:id="@id/clock_clock" android:layout_width="match_parent" android:layout_height="match_parent" class="com.android.internal.policy.impl.sec.ClockWidget$Clock">
<LinearLayout android:gravity="center" android:orientation="vertical" android:id="@id/clock_time_and_date" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="4.0dip">
<RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
<LinearLayout android:gravity="center" android:id="@id/clock_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true">
<ImageView android:id="@id/zzz_hour01" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_hour02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_colon01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_time_dot" />
<ImageView android:id="@id/zzz_minute01" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_minute02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/clock_time" android:layout_alignBottom="@id/clock_time">
<TextView android:textSize="23.0dip" android:textColor="#fff8f8f8" android:id="@id/zzz_ampm" android:paddingLeft="3.0dip" android:paddingBottom="5.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
</LinearLayout>
</RelativeLayout>
<TextView android:textSize="20.0dip" android:textStyle="bold" android:textColor="#fff6f7c9" android:gravity="bottom|center" android:id="@id/zzz_date_month" android:layout_width="wrap_content" android:layout_height="24.0dip" android:layout_marginTop="2.0dip" android:shadowColor="#aa000000" android:shadowDy="2.0" android:shadowRadius="1.0" />
<view android:gravity="center" android:id="@id/clock_charge" android:paddingTop="5.0dip" android:visibility="invisible" android:layout_width="wrap_content" android:layout_height="wrap_content" android:minHeight="24.0dip" class="com.android.internal.policy.impl.sec.ClockWidget$Charge">
<ImageView android:id="@id/clock_charge_icon" android:paddingRight="3.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_charging" />
<ImageView android:id="@id/clock_cmas_icon" android:paddingRight="3.0dip" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_cmas" />
<TextView android:textSize="17.0dip" android:textColor="#fff9f9f9" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/clock_charge_text" android:layout_width="wrap_content" android:layout_height="24.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="1.0" android:shadowDy="1.0" android:shadowRadius="1.0" />
</view>
<LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/dualClock_time_and_date" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="14.0dip">
<LinearLayout android:orientation="vertical" android:id="@id/dual_clock_local" android:layout_width="160.0dip" android:layout_height="wrap_content">
<TextView android:textSize="18.0dip" android:textColor="#ffdcdcdc" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/zzz_local_locale" android:layout_width="fill_parent" android:layout_height="22.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content">
<ImageView android:id="@id/zzz_local_hour01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="-4.0dip" />
<ImageView android:id="@id/zzz_local_hour02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_local_colon01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_dual_time_dot" />
<ImageView android:id="@id/zzz_local_minute01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="-4.0dip" />
<ImageView android:id="@id/zzz_local_minute02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<TextView android:textSize="17.0dip" android:textColor="#fff8f8f8" android:ellipsize="none" android:gravity="bottom" android:layout_gravity="bottom" android:id="@id/local_am_pm" android:layout_width="wrap_content" android:layout_height="29.0dip" android:layout_marginBottom="3.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
</LinearLayout>
<TextView android:textSize="20.0dip" android:textColor="#fff6f7c9" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/zzz_local_date_month" android:layout_width="fill_parent" android:layout_height="25.0dip" android:singleLine="true" android:shadowColor="#aa000000" android:shadowDy="2.0" android:shadowRadius="1.0" />
</LinearLayout>
<LinearLayout android:orientation="vertical" android:id="@id/dual_clock_home" android:layout_width="wrap_content" android:layout_height="wrap_content">
<LinearLayout android:gravity="bottom" android:layout_width="fill_parent" android:layout_height="wrap_content">
<ImageView android:paddingBottom="2.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_home" />
<TextView android:textSize="18.0dip" android:textColor="#ffdcdcdc" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/zzz_home_locale" android:layout_width="fill_parent" android:layout_height="22.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
</LinearLayout>
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content">
<ImageView android:id="@id/zzz_home_hour01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="-4.0dip" />
<ImageView android:id="@id/zzz_home_hour02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_home_colon01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_dual_time_dot" />
<ImageView android:id="@id/zzz_home_minute01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="-4.0dip" />
<ImageView android:id="@id/zzz_home_minute02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<TextView android:textSize="17.0dip" android:textColor="#fff8f8f8" android:ellipsize="none" android:gravity="bottom" android:layout_gravity="bottom" android:id="@id/home_am_pm" android:layout_width="wrap_content" android:layout_height="29.0dip" android:layout_marginBottom="3.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
</LinearLayout>
<TextView android:textSize="20.0dip" android:textColor="#fff6f7c9" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/zzz_home_date_month" android:layout_width="fill_parent" android:layout_height="25.0dip" android:singleLine="true" android:shadowColor="#aa000000" android:shadowDy="2.0" android:shadowRadius="1.0" />
</LinearLayout>
</LinearLayout>
<view android:orientation="vertical" android:id="@id/clock_weather" android:paddingTop="8.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content" class="com.android.internal.policy.impl.sec.ClockWidget$Weather">
<TextView android:textSize="16.0dip" android:textColor="#ffebebeb" android:ellipsize="none" android:gravity="center" android:id="@id/clock_weather_no_service" android:padding="15.0dip" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:shadowColor="@color/black" android:shadowDx="1.0" android:shadowDy="1.0" android:shadowRadius="1.0" />
<LinearLayout android:gravity="center" android:orientation="vertical" android:id="@id/clock_weather_data_box" android:layout_width="fill_parent" android:layout_height="wrap_content">
<LinearLayout android:gravity="top" android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView android:textSize="39.0dip" android:typeface="sans" android:textColor="#fff9f9f9" android:gravity="bottom" android:id="@id/clock_weather_temp" android:layout_width="wrap_content" android:layout_height="44.0dip" android:layout_marginTop="3.0dip" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
<ImageView android:id="@id/clock_weather_temp_unit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_celsius" />
<ImageView android:id="@id/clock_weather_icon" android:layout_width="83.0dip" android:layout_height="49.0dip" android:scaleType="fitXY" />
</LinearLayout>
<TextView android:textSize="23.0dip" android:textColor="#fff9f9f9" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/clock_weather_city" android:layout_width="wrap_content" android:layout_height="25.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" android:marqueeRepeatLimit="marquee_forever" />
<ImageView android:id="@id/clock_weather_logo_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_weather_logo" />
</LinearLayout>
</view>
</LinearLayout>
</view>
</LinearLayout>
Save all changes and compile framework-res
android.policy.jar part
Decompile android.policy.jar and go in com/android/internal/policy/impl/sec and open ClockWidget$Clock.smali file , find the following method .method protected onFinishInflate()V and add the red lines
Code:
.method protected onFinishInflate()V
.registers [COLOR="Red"]7[/COLOR]
.prologue
const/4 v1, 0x1
.line 994
invoke-super {p0}, Landroid/widget/FrameLayout;->onFinishInflate()V
.line 996
const v0, 0x10202ca
invoke-virtual {p0, v0}, Lcom/android/internal/policy/impl/sec/ClockWidget$Clock;->findViewById(I)Landroid/view/View;
move-result-object v0
check-cast v0, Landroid/widget/LinearLayout;
[COLOR="Red"]
iget-object v2, p0, Lcom/android/internal/policy/impl/sec/ClockWidget$Clock;->mContext:Landroid/content/Context;
invoke-virtual {v2}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v2
const-string v3, "clock_position"
const/4 v4, 0x0
invoke-static {v2, v3, v4}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v2
const v3, 0x1
if-eq v2, v3, :cond_0
const v3, 0x2
if-eq v2, v3, :cond_1
const v3, 0x3
if-eq v2, v3, :cond_2
const v3, 0x4
if-eq v2, v3, :cond_3
const v3, 0x5
if-eq v2, v3, :cond_4
const/16 v4, 0x70
goto:goto_set
:cond_0
const/16 v4, 0x10
goto:goto_set
:cond_1
const/16 v4, 0x50
goto:goto_set
:cond_2
const/16 v4, 0x01
goto:goto_set
:cond_3
const/16 v4, 0x11
goto:goto_set
:cond_4
const/16 v4, 0x05
:goto_set
invoke-virtual {v0, v4}, Landroid/widget/LinearLayout;->setGravity(I)V
[/COLOR]
iput-object v0, p0, Lcom/android/internal/policy/impl/sec/ClockWidget$Clock;->mSingleClock:Landroid/widget/LinearLayout;
.line 997
Save all changes and compile android.policy then put SecSettings.apk , framework-res.apk and android.policy.jar in your device
Hey Bud.
Thanks for the tutorial, good work!
Im trying to do the mod on 4.4.2 so it has changed alittle.
all the lockscreen files are now in keyguard.apk
so ive added the list pref to settings, all works fine.
added the smali code to 'SecKeyguardClock' and changed all references to this file.
compiled and looks fine.
the bit im having trouble with is the xml file.
the newer ones are completely different to the older ones so could you post just the changes you made to 'keyguard_circlelock_clockwidget.xml ' so I can implement them in mine?
I have no way of comparing what you changed.
Thanks Mate.
maskerwsk said:
Hey Bud.
Thanks for the tutorial, good work!
Im trying to do the mod on 4.4.2 so it has changed alittle.
all the lockscreen files are now in keyguard.apk
so ive added the list pref to settings, all works fine.
added the smali code to 'SecKeyguardClock' and changed all references to this file.
compiled and looks fine.
the bit im having trouble with is the xml file.
the newer ones are completely different to the older ones so could you post just the changes you made to 'keyguard_circlelock_clockwidget.xml ' so I can implement them in mine?
I have no way of comparing what you changed.
Thanks Mate.
Click to expand...
Click to collapse
Hi mate ok, this is the original xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical" android:id="@id/clock_root" android:paddingTop="4.0dip" android:paddingBottom="6.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<view android:gravity="center" android:id="@id/clock_emergency" android:layout_width="fill_parent" android:layout_height="17.0dip" class="com.android.internal.policy.impl.sec.ClockWidget$EmergencyCall">
<TextView android:textSize="12.0dip" android:textColor="#ffebebeb" android:ellipsize="none" android:gravity="center" android:id="@id/clock_emergency_text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:shadowColor="@color/black" android:shadowDx="1.0" android:shadowDy="1.0" android:shadowRadius="0.25" />
</view>
<view android:id="@id/clock_clock" android:layout_width="fill_parent" android:layout_height="wrap_content" class="com.android.internal.policy.impl.sec.ClockWidget$Clock">
<LinearLayout android:gravity="center" android:orientation="vertical" android:id="@id/clock_time_and_date" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="4.0dip">
<RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content">
<LinearLayout android:gravity="center" android:id="@id/clock_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true">
<ImageView android:id="@id/zzz_hour01" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_hour02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_colon01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_time_dot" />
<ImageView android:id="@id/zzz_minute01" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_minute02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/clock_time" android:layout_alignBottom="@id/clock_time">
<TextView android:textSize="23.0dip" android:textColor="#fff8f8f8" android:id="@id/zzz_ampm" android:paddingLeft="3.0dip" android:paddingBottom="5.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
</LinearLayout>
</RelativeLayout>
<TextView android:textSize="20.0dip" android:textStyle="bold" android:textColor="#ffffffff" android:gravity="bottom|center" android:id="@id/zzz_date_month" android:layout_width="fill_parent" android:layout_height="24.0dip" android:layout_marginTop="2.0dip" android:shadowColor="#aa000000" android:shadowDy="2.0" android:shadowRadius="1.0" />
</LinearLayout>
<LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/dualClock_time_and_date" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="14.0dip">
<LinearLayout android:orientation="vertical" android:id="@id/dual_clock_local" android:layout_width="160.0dip" android:layout_height="wrap_content">
<TextView android:textSize="18.0dip" android:textColor="#ffdcdcdc" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/zzz_local_locale" android:layout_width="fill_parent" android:layout_height="22.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content">
<ImageView android:id="@id/zzz_local_hour01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="-4.0dip" />
<ImageView android:id="@id/zzz_local_hour02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_local_colon01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_dual_time_dot" />
<ImageView android:id="@id/zzz_local_minute01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="-4.0dip" />
<ImageView android:id="@id/zzz_local_minute02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<TextView android:textSize="17.0dip" android:textColor="#fff8f8f8" android:ellipsize="none" android:gravity="bottom" android:layout_gravity="bottom" android:id="@id/local_am_pm" android:layout_width="wrap_content" android:layout_height="29.0dip" android:layout_marginBottom="3.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
</LinearLayout>
<TextView android:textSize="20.0dip" android:textColor="#ffffffff" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/zzz_local_date_month" android:layout_width="fill_parent" android:layout_height="25.0dip" android:singleLine="true" android:shadowColor="#aa000000" android:shadowDy="2.0" android:shadowRadius="1.0" />
</LinearLayout>
<LinearLayout android:orientation="vertical" android:id="@id/dual_clock_home" android:layout_width="wrap_content" android:layout_height="wrap_content">
<LinearLayout android:gravity="bottom" android:layout_width="fill_parent" android:layout_height="wrap_content">
<ImageView android:paddingBottom="2.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_home" />
<TextView android:textSize="18.0dip" android:textColor="#ffdcdcdc" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/zzz_home_locale" android:layout_width="fill_parent" android:layout_height="22.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
</LinearLayout>
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content">
<ImageView android:id="@id/zzz_home_hour01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="-4.0dip" />
<ImageView android:id="@id/zzz_home_hour02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/zzz_home_colon01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_dual_time_dot" />
<ImageView android:id="@id/zzz_home_minute01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="-4.0dip" />
<ImageView android:id="@id/zzz_home_minute02" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<TextView android:textSize="17.0dip" android:textColor="#fff8f8f8" android:ellipsize="none" android:gravity="bottom" android:layout_gravity="bottom" android:id="@id/home_am_pm" android:layout_width="wrap_content" android:layout_height="29.0dip" android:layout_marginBottom="3.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
</LinearLayout>
<TextView android:textSize="20.0dip" android:textColor="#ffffffff" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/zzz_home_date_month" android:layout_width="fill_parent" android:layout_height="25.0dip" android:singleLine="true" android:shadowColor="#aa000000" android:shadowDy="2.0" android:shadowRadius="1.0" />
</LinearLayout>
</LinearLayout>
</view>
<view android:orientation="vertical" android:id="@id/clock_weather" android:paddingTop="8.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content" class="com.android.internal.policy.impl.sec.ClockWidget$Weather">
<TextView android:textSize="16.0dip" android:textColor="#ffebebeb" android:ellipsize="none" android:gravity="center" android:id="@id/clock_weather_no_service" android:padding="15.0dip" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:shadowColor="@color/black" android:shadowDx="1.0" android:shadowDy="1.0" android:shadowRadius="1.0" />
<LinearLayout android:gravity="center" android:orientation="vertical" android:id="@id/clock_weather_data_box" android:layout_width="fill_parent" android:layout_height="wrap_content">
<LinearLayout android:gravity="top" android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView android:textSize="39.0dip" android:typeface="sans" android:textColor="#fff9f9f9" android:gravity="bottom" android:id="@id/clock_weather_temp" android:layout_width="wrap_content" android:layout_height="44.0dip" android:layout_marginTop="3.0dip" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" />
<ImageView android:id="@id/clock_weather_temp_unit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_celsius" />
<ImageView android:id="@id/clock_weather_icon" android:layout_width="83.0dip" android:layout_height="49.0dip" android:scaleType="fitXY" />
</LinearLayout>
<TextView android:textSize="23.0dip" android:textColor="#fff9f9f9" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/clock_weather_city" android:layout_width="wrap_content" android:layout_height="25.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="3.0" android:shadowDy="3.0" android:shadowRadius="1.0" android:marqueeRepeatLimit="marquee_forever" />
<ImageView android:id="@id/clock_weather_logo_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_weather_logo" />
</LinearLayout>
</view>
<view android:gravity="center" android:id="@id/clock_charge" android:paddingTop="5.0dip" android:visibility="invisible" android:layout_width="fill_parent" android:layout_height="wrap_content" android:minHeight="24.0dip" class="com.android.internal.policy.impl.sec.ClockWidget$Charge">
<ImageView android:id="@id/clock_charge_icon" android:paddingRight="3.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_charging" />
<ImageView android:id="@id/clock_cmas_icon" android:paddingRight="3.0dip" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/keyguard_lockscreen_ic_cmas" />
<TextView android:textSize="17.0dip" android:textColor="#fff9f9f9" android:ellipsize="marquee" android:gravity="bottom" android:id="@id/clock_charge_text" android:layout_width="wrap_content" android:layout_height="24.0dip" android:singleLine="true" android:shadowColor="#55000000" android:shadowDx="1.0" android:shadowDy="1.0" android:shadowRadius="1.0" />
</view>
</LinearLayout>
in the line with android:id="@id/clock_time_and_date" i changed the value of android:layout_height to fill_parent.
In the line with RelativeLayout i changed the value of android:layout_width to wrap_content then moved all the view with android:id="@id/clock_charge" inside the LinearLayout with android:id="@id/clock_time_and_date" and put it after the TextView with android:id="@id/zzz_date_month" then moved the rest of code inside the LinearLayout with android:id="@id/clock_time_and_date" too and put it after the view with android:id="@id/clock_charge"
hope this can help you
Related
Swipe-to-remove Notification for Froyo
Well I finally figure it all out. It looks simple, but it took me nearly two months to finish this. This should work in other Froyo phones as well.
Disclaimer: I take no responsibility whatsoever. This is based on stock XXJPS framework, but it should also work with others.
To developers and themers, you are free to use this in your ROM, but please post a link to this thread and give proper credits to me and hansip87.
Credits/Thanks:
Big thanks to hansip87 for the original guide and for helping me.
Big thanks to marcellusbe for porting CM6. Can't make this without those codes.
Thanks to Arjav23 and kyrillos13 for some help.
Step 1
Click to expand...
Click to collapse
a. Decompile "framework-res.apk"
b. Download "swipe-framework-res.zip" and extract those two files to "/res/anim/"
c. Open "/res/layout/status_bar_latest_event.xml"
Now change the "<LinearLayout" to "<com.android.server.status.LatestItemContainer" like this:
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="65.0sp"
xmlns:android="http://schemas.android.com/apk/res/android">
<com.android.server.status.LatestItemView android:id="@id/content" android:background="@drawable/status_bar_item_background" android:paddingRight="6.0sp" android:focusable="true" android:clickable="true" android:layout_width="fill_parent" android:layout_height="64.0sp" />
<View android:background="@drawable/divider_horizontal_bright" android:layout_width="fill_parent" android:layout_height="1.0sp" />
</LinearLayout>
to this:
Code:
<?xml version="1.0" encoding="utf-8"?>
<[B]com.android.server.status.LatestItemContainer [/B]android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="65.0sp"
xmlns:android="http://schemas.android.com/apk/res/android">
<com.android.server.status.LatestItemView android:id="@id/content" android:background="@drawable/status_bar_item_background" android:paddingRight="6.0sp" android:focusable="true" android:clickable="true" android:layout_width="fill_parent" android:layout_height="64.0sp" />
<View android:background="@drawable/divider_horizontal_bright" android:layout_width="fill_parent" android:layout_height="1.0sp" />
</[B]com.android.server.status.LatestItemContainer[/B]>
d. Now the IDs for "slide_out_left_basic.xml" and "slide_out_right_basic.xml", so basically, compile it and then decompile it again.
e. Open "/res/value/public.xml" in Notepad++ and you should get something like this:
Code:
<public type="anim" name="slide_out_left_basic" id="[B]0x010a0048[/B]" />
<public type="anim" name="slide_out_right_basic" id="[B]0x010a0049[/B]" />
You may have a different ID depending on the ROM you're using, so just keep a note of it.
Step 2
Click to expand...
Click to collapse
a. Decompile "services.jar"
b. Download "swipe-services.zip" and extract all three files to "/out/com/android/server/status/"
(If you already have the JB mods installed, then change "StatusBarService$41.smali" to "StatusBarService$42.smali".)
c. Open "LatestItemContainer$1.smali" and find this line:
Code:
.line 47
const v1,[B] 0x10a0049[/B]
(This code refers to the "slide_out_right_basic.xml" ID, so if you have a different one, just change it)
And this line:
Code:
.line 49
:cond_3c
const v1, [B]0x10a0048[/B]
(This one refers to the "slide_out_left_basic.xml" ID, so if you have a different one, just change it)
Save and close.
d. Open "/out/com/android/server/status/StatusBarService.smali"
Find this line:
Code:
invoke-virtual {v0, v1, v2, v3}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;Z)Landroid/view/View;
and below "move-result-object v17", remove these following line:
Code:
.line 1346
.local v17, row:Landroid/view/View;
then paste these lines:
Code:
[B] check-cast v17, Lcom/android/server/status/LatestItemContainer;
.line 1346
.local v17, row:Lcom/android/server/status/LatestItemContainer;
iget-boolean v4, v15, Lcom/android/server/status/NotificationData;->clearable:Z
if-eqz v4, :cond_ae
.line 1600
new-instance v4, Lcom/android/server/status/StatusBarService$41;
move-object v0, v4
move-object/from16 v1, p0
move-object v2, v15
invoke-direct {v0, v1, v2}, Lcom/android/server/status/StatusBarService$41;-><init>(Lcom/android/server/status/StatusBarService;Lcom/android/server/status/NotificationData;)V
move-object/from16 v0, v17
move-object v1, v4
invoke-virtual {v0, v1}, Lcom/android/server/status/LatestItemContainer;->setOnSwipeCallback(Ljava/lang/Runnable;)V
.line 1606
:cond_ae[/B]
const v4, 0x1020002
move-object/from16 v0, v17
move v1, v4
[B]invoke-virtual {v0, v1}, Lcom/android/server/status/LatestItemContainer;->findViewById(I)Landroid/view/View;[/B]
(remember, "StatusBarService$41")
Find this line:
Code:
invoke-virtual {v0, v1}, Landroid/view/View;->setDrawingCacheEnabled(Z)V
change to:
Code:
invoke-virtual {v0, v1}, Lcom/android/server/status/LatestItemContainer;->setDrawingCacheEnabled(Z)V
e. Open "/out/com/android/server/status/StatusBarService$NotificationCallbacks.smali" and add this code above "onNotificationClick"
Code:
.method public abstract onNotificationClear(Ljava/lang/String;Ljava/lang/String;I)V
.end method
f. Open "/out/com/android/server/NotificationManagerService$1.smali" and also add these codes above "onNotificationClick"
Code:
.method public onNotificationClear(Ljava/lang/String;Ljava/lang/String;I)V
.registers 10
.parameter "pkg"
.parameter "tag"
.parameter "id"
.prologue
.line 346
iget-object v0, p0, Lcom/android/server/NotificationManagerService$1;->this$0:Lcom/android/server/NotificationManagerService;
const/4 v4, 0x0
const/16 v5, 0x40
move-object v1, p1
move-object v2, p2
move v3, p3
#calls: Lcom/android/server/NotificationManagerService;->cancelNotification(Ljava/lang/String;Ljava/lang/String;III)V
invoke-static/range {v0 .. v5}, Lcom/android/server/NotificationManagerService;->access$500(Lcom/android/server/NotificationManagerService;Ljava/lang/String;Ljava/lang/String;III)V
.line 347
return-void
.end method
g. Save everything, compile, and you're finished
{
"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"
}
NOTE (if you have JB mod installed): Tricky part is the smali numbering. You can't only change the file number, you also need to change the codes inside StatusBarService.smali to refer to it. Remember, $41 to $42. DO NOT GET BOTH MIXED UP!
JellyBean Styled Notification Drawer
Disclaimer: I take no responsibility whatsoever. Please note that this tutorial is for "deodex-ed" frameworks only. If your current ROM is "odex-ed", then deodex it using this method or just grab a copy of a deodex-ed theme. And if you want this in a custom ROM you like, then I suggest you to ask the developer to apply these features themselves.
To developers and themers, you are free to use this in your ROM or Theme, but please give proper credits.
Credits/Thanks:
AChep & petrukgrinder for developing and creating a guide.
Jason-EX (me) for changing the code for Galaxy 3.
Requirement:
APK Multi-Tool for de-compiling and compiling APKs.
Smali/Baksmali for de-compiling and compiling JARs.
Notepad++ for editing XML and SMALI files.
Adobe Photoshop or GIMP for editing framework images (optional).
A copy of "twframework-res.apk" and "services.jar" from "/system/framework/".
And a backup copy of those two framework files.
How to de-compile and compile APK and JAR files
Click to expand...
Click to collapse
For APKs,
1. Download APK Multi-Tool from here. (Skip this part if you already have "APK Manager" or APKTool".)
2. Extract and run "Setup.exe". (Skip this part if you already have "APK Manager" or APKTool".)
3. Place the file needed for this mod in "place-apk-here-for-modding".
4. Decompile it (no.9), and start editing files needed.
5. After that, set compression level to "0" (no.21), then compile (no.11).
For JARs,
1. Download Smali/Baksmali from here.
2. Cut and paste them to a directory that is easy to get access (I recommend "C:/").
3. Place the required file to be edit to the same directory.
4. Now type in command prompt: "cd\" (enter) "cd /directory/".
5. To de-compile, type: "java -jar baksmali.jar -x for-modding.jar -o out".
6. To compile, type: "java -jar smali.jar -x out -o classes.dex".
7. Then replace the classes.dex with the original JAR file that you want to edit.
Adding Time and Date
Click to expand...
Click to collapse
1. De-compile "services.jar".
2. Download "JB-time-date.zip" from attachment, then extract both files to "/out/com/android/server/status/".
3. Compile "services.jar".
4. De-compile "twframework-res.apk" then open "twframework-res/res/layout/status_bar_expanded.xml".
Add this code above the first "<LinearLayout"
Code:
<RelativeLayout android:orientation="horizontal" android:background="@color/tw_color002" android:layout_width="fill_parent" android:layout_height="47.0dip">
<LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true">
<com.android.server.status.StatusBarJellyHeaderView android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
</RelativeLayout>
6. Save and compile "twframework-res.apk"
Adding Clear button
Click to expand...
Click to collapse
1. Download "JB-clear-btn.zip" from attachment below.
2. Decompile "twframework-res.apk"
3. Extract "JB-clear-btn.zip" and copy those two images to "/res/drawable-ldpi/"
4. Copy "btn_clear.xml" to "/res/drawable"
5. Open "/res/layout/status_bar_expanded.xml"
Find this code added from the Time and Date:
Code:
<RelativeLayout android:orientation="horizontal" android:background="@color/tw_color002" android:layout_width="fill_parent" android:layout_height="47.0dip">
<LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true">
<com.android.server.status.StatusBarJellyHeaderView android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
</RelativeLayout>
Then add this code:
Code:
<RelativeLayout android:orientation="horizontal" android:background="@color/tw_color002" android:layout_width="fill_parent" android:layout_height="47.0dip">
<LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true">
<com.android.server.status.StatusBarJellyHeaderView android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
[B]<LinearLayout android:orientation="horizontal" android:paddingRight="6.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true">
<Button android:textColor="@android:color/transparent" android:layout_gravity="center_vertical" android:id="@id/clear_all_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_clear_all_button" style="@style/Btn.Clear" />
</LinearLayout>[/B]
</RelativeLayout>
And remove this code:
Code:
<Button android:textSize="14.0sp" android:layout_gravity="center_vertical" android:id="@id/clear_all_button" android:layout_width="75.0dip" android:layout_height="wrap_content" android:layout_marginTop="5.0dip" android:layout_marginRight="6.0dip" android:text="@string/status_bar_clear_all_button" style="?android:attr/buttonStyleSmall" />
6. Open "/res/value/styles.xml"
Paste this code at the end of the file:
Code:
<style name="Btn.Clear" parent="@*android:style/Widget.Button">
<item name="android:textColor">#ffffffff</item>
<item name="android:gravity">center</item>
<item name="android:background">@drawable/btn_clear</item>
<item name="android:clickable">true</item>
</style>
7. Save everything and compile "twframework-res.apk"
Adding Settings shortcut button
Click to expand...
Click to collapse
1. Download "JB-settings-btn.zip" from attachment below.
2. Decompile "twframework-res.apk" and open "/res/layout/status_bar_expanded.xml"
Find the code added from Clear button
Code:
<RelativeLayout android:orientation="horizontal" android:background="@color/tw_color002" android:layout_width="fill_parent" android:layout_height="47.0dip">
<LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true">
<com.android.server.status.StatusBarJellyHeaderView android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:paddingRight="6.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true">
<Button android:textColor="@android:color/transparent" android:layout_gravity="center_vertical" android:id="@id/clear_all_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_clear_all_button" style="@style/Btn.Clear" />
</LinearLayout>
</RelativeLayout>
Then add these two lines:
Code:
<RelativeLayout android:orientation="horizontal" android:background="@color/tw_color002" android:layout_width="fill_parent" android:layout_height="47.0dip">
<LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true">
<com.android.server.status.StatusBarJellyHeaderView android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:paddingRight="6.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true">
<Button android:textColor="@*android:color/transparent" android:layout_gravity="center_vertical" android:id="@id/clear_all_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_clear_all_button" style="@style/Btn.Clear" />
[B]<View android:visibility="invisible" android:layout_width="1.0dip" android:layout_height="wrap_content" />
<ImageView android:layout_gravity="center_vertical" android:id="@id/settings_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_notify_quicksettings" android:contentDescription="@string/accessibility_settings_button" />[/B]
</LinearLayout>
</RelativeLayout>
3. Open "/res/value/ids.xml" and add this code at the end of the file:
Code:
<item type="id" name="settings_button">false</item>
4. Open "/res/value/strings.xml" and add this code at the end of the file:
Code:
<string name="accessibility_settings_button">System settings.</string>
4. Extract the two images from "JB-settings-btn.zip" and paste it in "/res/drawable-ldpi/", then extract "ic_notify_quicksettings.xml" and paste it in "/res/drawable/".
5. Now you'll have to compile "twframework-res.apk" and decompile it again
6. Open "/res/value/public.xml" and find this line:
Code:
<public type="id" name="settings_button" id="[B]0x02040061[/B]" />
(Keep a note of the ID value)
7. Decompile "services.jar" and open "/out/com/android/server/status/StatusBarServices.smali"
8. Find this line:
Code:
.field mScrollView:Landroid/widget/ScrollView;
Then paste these two lines below:
Code:
.field mSettingsBut:Landroid/view/View;
.field private mSettingsButListener:Landroid/view/View$OnClickListener;
9. Find this line:
Code:
iput-object v0, p0, Lcom/android/server/status/StatusBarService;->mStopTracing:Ljava/lang/Runnable;
Then paste these lines below:
Code:
.line 4000
new-instance v0, Lcom/android/server/status/StatusBarService$41;
invoke-direct {v0, p0}, Lcom/android/server/status/StatusBarService$41;-><init>(Lcom/android/server/status/StatusBarService;)V
iput-object v0, p0, Lcom/android/server/status/StatusBarService;->mSettingsButListener:Landroid/view/View$OnClickListener;
10. Find this line:
Code:
iput v7, p0, Lcom/android/server/status/StatusBarService;->mEdgeBorder:I
Then paste these lines below:
Code:
.line 611
const v7, 0x2040061
invoke-virtual {v1, v7}, Lcom/android/server/status/ExpandedView;->findViewById(I)Landroid/view/View;
move-result-object v7
iput-object v7, p0, Lcom/android/server/status/StatusBarService;->mSettingsBut:Landroid/view/View;
.line 612
iget-object v7, p0, Lcom/android/server/status/StatusBarService;->mSettingsBut:Landroid/view/View;
iget-object v8, p0, Lcom/android/server/status/StatusBarService;->mSettingsButListener:Landroid/view/View$OnClickListener;
invoke-virtual {v7, v8}, Landroid/view/View;->setOnClickListener(Landroid/view/View$OnClickListener;)V
(Change the ID if you got a different one)
Code:
.line 611
const v7, [B]0x2040061[/B]
11. Now extract "StatusBarServices$41" from "JB-settings-btn" and paste it in "/out/com/android/server/status/"
12. Compile both "twframework-res.apk" and "services.jar"
Hiding the Status Bar when expanded
Click to expand...
Click to collapse
1. Grab a "framework-res.apk" and de-compile it
2. Go to "/res/layout/status_bar.xml"
3. Find the "DateView" code at the bottom of the file:
Code:
<com.android.server.status.DateView
Remove the whole line and replace it with this code:
Code:
<com.android.server.status.DateView android:textSize="0.00999999dip" android:textStyle="normal" android:textColor="#ff000000" android:gravity="center" android:id="@id/date" android:background="@color/black" android:paddingLeft="6.0px" android:paddingRight="6.0px" android:layout_width="fill_parent" android:layout_height="fill_parent" android:singleLine="true" />
Adding Carrier Label
Click to expand...
Click to collapse
1. Decompile "services.jar"
2. Download "JB-carrier-label.zip" from attachment and extract those files to "/out/com/android/server/status/"
3. Save and compile "services.jar"
4. Decompile "twframework-res.apk" and open "/res/layout/status_bar_tracking.xml"
5. Find this line:
Code:
<com.android.server.status.CloseDragHandle android:orientation="vertical" android:id="@id/close" android:layout_width="fill_parent" android:layout_height="wrap_content">
Then paste this line below:
Code:
<com.android.server.status.CarrierLabel android:textSize="15.0dip" android:textColor="#ffffffff" android:gravity="center_horizontal" android:background="@drawable/status_bar_background" android:paddingBottom="4.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content" />
6. Then open "/res/layout/status_bar_expanded.xml" and find this code:
Code:
<LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content">
<LinearLayout android:layout_gravity="center_vertical" android:orientation="vertical" android:paddingBottom="1.0dip" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_marginLeft="5.0dip" android:layout_marginTop="1.0dip" android:layout_weight="1.0">
<TextView android:textAppearance="?android:textAppearanceMedium" android:textColor="@color/tw_color001" android:layout_gravity="center_vertical" android:id="@id/plmnLabel" android:paddingLeft="4.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<TextView android:textAppearance="?android:textAppearanceMedium" android:textColor="@color/tw_color001" android:layout_gravity="center_vertical" android:id="@id/spnLabel" android:paddingLeft="4.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
<Button android:textSize="14.0sp" android:layout_gravity="center_vertical" android:id="@id/clear_all_button" android:layout_width="75.0dip" android:layout_height="wrap_content" android:layout_marginTop="5.0dip" android:layout_marginRight="6.0dip" android:text="@string/status_bar_clear_all_button" style="?android:attr/buttonStyleSmall" />
</LinearLayout>
And change the height of the first "Linear Layout" to "0.0dip":
Code:
<LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="[B]0.0dip[/B]">
<LinearLayout android:layout_gravity="center_vertical" android:orientation="vertical" android:paddingBottom="1.0dip" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_marginLeft="5.0dip" android:layout_marginTop="1.0dip" android:layout_weight="1.0">
<TextView android:textAppearance="?android:textAppearanceMedium" android:textColor="@color/tw_color001" android:layout_gravity="center_vertical" android:id="@id/plmnLabel" android:paddingLeft="4.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<TextView android:textAppearance="?android:textAppearanceMedium" android:textColor="@color/tw_color001" android:layout_gravity="center_vertical" android:id="@id/spnLabel" android:paddingLeft="4.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
<Button android:textSize="14.0sp" android:layout_gravity="center_vertical" android:id="@id/clear_all_button" android:layout_width="75.0dip" android:layout_height="wrap_content" android:layout_marginTop="5.0dip" android:layout_marginRight="6.0dip" android:text="@string/status_bar_clear_all_button" style="?android:attr/buttonStyleSmall" />
</LinearLayout>
7. Save and compile "twframework-res.apk"
Making the Tracking Bar clickable
Click to expand...
Click to collapse
1. Decompile "twframework-res.apk" and open "/res/layout/status_bar_tracking.xml"
2. Replace the whole "<ImageView" code with:
Code:
<ImageView android:layout_gravity="bottom" android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/status_bar_tracker" android:scaleType="fitXY" style="@style/Closer.bar" />
3. Download "JB-pressed-tracker.zip" from attachment below, and extract "status_bar_tracker.xml" to "/res/drawable/"
4. Open "/res/value/styles.xml" and add these code at the end of the file:
Code:
<style name="Closer.bar" parent="@android:style/Widget.Button">
<item name="android:gravity">center</item>
<item name="android:background">@drawable/status_bar_close_on</item>
<item name="android:clickable">true</item>
</style>
5. Now create a image in "/res/drawable-ldpi/" and name it "status_bar_close_pressed.png"
Examples:
"status_bar_close_on.png"
"status_bar_close_pressed.png"
Adding that little space between the notifications
Click to expand...
Click to collapse
1. Decompile "framework-res.apk"
2. Open "/res/layout/status_bar_latest_event.xml"
3. You'll see this:
Code:
<?xml version="1.0" encoding="utf-8"?>
<com.android.server.status.LatestItemContainer android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="65.0sp"
xmlns:android="http://schemas.android.com/apk/res/android">
<com.android.server.status.LatestItemView android:id="@id/content" android:background="@drawable/status_bar_item_background" android:paddingRight="6.0sp" android:focusable="true" android:clickable="true" android:layout_width="fill_parent" android:layout_height="64.0sp" />
<View android:background="@drawable/something" android:layout_width="fill_parent" android:layout_height="1.0sp" />
</com.android.server.status.LatestItemContainer>
change it to this:
Code:
<?xml version="1.0" encoding="utf-8"?>
<com.android.server.status.LatestItemContainer android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="68.0sp"
xmlns:android="http://schemas.android.com/apk/res/android">
<View android:background="@null" android:layout_width="fill_parent" android:layout_height="4.0sp" />
<com.android.server.status.LatestItemView android:id="@id/content" android:background="@drawable/status_bar_item_background" android:paddingRight="6.0sp" android:focusable="true" android:clickable="true" android:layout_width="fill_parent" android:layout_height="64.0sp" />
</com.android.server.status.LatestItemContainer>
Optional Customization
Click to expand...
Click to collapse
Moving Time and Date layout below the Toggle Buttons
Click to expand...
Click to collapse
If you've finish all the guide from the first post, then you should end up with something like this in "/res/layout/status_bar_expanded.xml":
Code:
<RelativeLayout android:orientation="horizontal" android:background="@color/tw_color002" android:layout_width="fill_parent" android:layout_height="47.0dip">
<LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true">
<com.android.server.status.StatusBarJellyHeaderView android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:paddingRight="6.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true">
<Button android:textColor="@*android:color/transparent" android:layout_gravity="center_vertical" android:id="@id/clear_all_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_clear_all_button" style="@style/Btn.Clear" />
<View android:visibility="invisible" android:layout_width="1.0dip" android:layout_height="wrap_content" />
<ImageView android:layout_gravity="center_vertical" android:id="@id/settings_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_notify_quicksettings" android:contentDescription="@string/accessibility_settings_button" />
</LinearLayout>
</RelativeLayout>
<LinearLayout android:orientation="vertical" android:id="@id/quickpanel_container" android:layout_width="fill_parent" android:layout_height="wrap_content">
<LinearLayout android:orientation="horizontal" android:background="@drawable/status_bar_background" android:layout_width="fill_parent" android:layout_height="50.0dip" android:layout_weight="1.0">
<TextView android:textSize="0.0dip" android:textColor="@color/tw_color002" android:gravity="center" android:id="@id/quickpanel_wifi_btn" android:background="@null" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawableTop="@drawable/quick_panel_icon_wifi_off" android:layout_weight="1.0" />
<TextView android:textSize="0.0dip" android:textColor="@color/tw_color002" android:gravity="center" android:id="@id/quickpanel_data_btn" android:background="@null" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawableTop="@drawable/quick_panel_icon_data_off" android:layout_weight="1.0" />
<TextView android:textSize="0.0dip" android:textColor="@color/tw_color002" android:gravity="center" android:id="@id/quickpanel_bt_btn" android:background="@null" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawableTop="@drawable/quick_panel_icon_bluetooth_off" android:layout_weight="1.0" />
<TextView android:textSize="0.0dip" android:textColor="@color/tw_color002" android:gravity="center" android:id="@id/quickpanel_gps_btn" android:background="@null" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawableTop="@drawable/quick_panel_icon_gps_off" android:layout_weight="1.0" />
<TextView android:textSize="0.0dip" android:textColor="@color/tw_color002" android:gravity="center" android:id="@id/quickpanel_sound_btn" android:background="@null" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawableTop="@drawable/quick_panel_icon_silent_off" android:layout_weight="1.0" android:soundEffectsEnabled="false" />
<TextView android:textSize="0.0dip" android:textColor="@color/tw_color002" android:gravity="center" android:id="@id/quickpanel_orientation_btn" android:background="@null" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawableTop="@drawable/quick_panel_icon_orientation_off" android:layout_weight="1.0" />
</LinearLayout>
</LinearLayout>
Now, to move it below the Toggle Buttons, just move the whole "Relative Layout" below the "Linear Layout".
Code:
<LinearLayout android:orientation="vertical" android:id="@id/quickpanel_container" android:layout_width="fill_parent" android:layout_height="wrap_content">
<LinearLayout android:orientation="horizontal" android:background="@drawable/status_bar_background" android:layout_width="fill_parent" android:layout_height="50.0dip" android:layout_weight="1.0">
<TextView android:textSize="0.0dip" android:textColor="@color/tw_color002" android:gravity="center" android:id="@id/quickpanel_wifi_btn" android:background="@null" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawableTop="@drawable/quick_panel_icon_wifi_off" android:layout_weight="1.0" />
<TextView android:textSize="0.0dip" android:textColor="@color/tw_color002" android:gravity="center" android:id="@id/quickpanel_data_btn" android:background="@null" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawableTop="@drawable/quick_panel_icon_data_off" android:layout_weight="1.0" />
<TextView android:textSize="0.0dip" android:textColor="@color/tw_color002" android:gravity="center" android:id="@id/quickpanel_bt_btn" android:background="@null" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawableTop="@drawable/quick_panel_icon_bluetooth_off" android:layout_weight="1.0" />
<TextView android:textSize="0.0dip" android:textColor="@color/tw_color002" android:gravity="center" android:id="@id/quickpanel_gps_btn" android:background="@null" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawableTop="@drawable/quick_panel_icon_gps_off" android:layout_weight="1.0" />
<TextView android:textSize="0.0dip" android:textColor="@color/tw_color002" android:gravity="center" android:id="@id/quickpanel_sound_btn" android:background="@null" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawableTop="@drawable/quick_panel_icon_silent_off" android:layout_weight="1.0" android:soundEffectsEnabled="false" />
<TextView android:textSize="0.0dip" android:textColor="@color/tw_color002" android:gravity="center" android:id="@id/quickpanel_orientation_btn" android:background="@null" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawableTop="@drawable/quick_panel_icon_orientation_off" android:layout_weight="1.0" />
</LinearLayout>
</LinearLayout>
[B] <RelativeLayout android:orientation="horizontal" android:background="@color/tw_color002" android:layout_width="fill_parent" android:layout_height="47.0dip">
<LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true">
<com.android.server.status.StatusBarJellyHeaderView android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:paddingRight="6.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true">
<Button android:textColor="@*android:color/transparent" android:layout_gravity="center_vertical" android:id="@id/clear_all_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_clear_all_button" style="@style/Btn.Clear" />
<View android:visibility="invisible" android:layout_width="1.0dip" android:layout_height="wrap_content" />
<ImageView android:layout_gravity="center_vertical" android:id="@id/settings_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_notify_quicksettings" android:contentDescription="@string/accessibility_settings_button" />
</LinearLayout>
</RelativeLayout>[/B]
Moving the Settings Shortcut Button to the right
Click to expand...
Click to collapse
If you follow the Settings Shortbut Button guide from the first post, you'll end up with this in "/res/layout/status_bar_expanded.xml":
Code:
<RelativeLayout android:orientation="horizontal" android:background="@color/tw_color002" android:layout_width="fill_parent" android:layout_height="47.0dip">
<LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true">
<com.android.server.status.StatusBarJellyHeaderView android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:paddingRight="6.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true">
<Button android:textColor="@*android:color/transparent" android:layout_gravity="center_vertical" android:id="@id/clear_all_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_clear_all_button" style="@style/Btn.Clear" />
<View android:visibility="invisible" android:layout_width="1.0dip" android:layout_height="wrap_content" />
<ImageView android:layout_gravity="center_vertical" android:id="@id/settings_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_notify_quicksettings" android:contentDescription="@string/accessibility_settings_button" />
</LinearLayout>
</RelativeLayout>
To move it to the left (like in JB 4.1.x), just change it like the following:
Code:
<RelativeLayout android:orientation="horizontal" android:background="@color/tw_color002" android:layout_width="fill_parent" android:layout_height="47.0dip">
<LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true">
<com.android.server.status.StatusBarJellyHeaderView android:layout_width="wrap_content" android:layout_height="wrap_content" />
[B]<ImageView android:layout_gravity="center_vertical" android:id="@id/settings_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_notify_quicksettings" android:contentDescription="@string/accessibility_settings_button" /> [/B]
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:paddingRight="6.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true">
<Button android:textColor="@*android:color/transparent" android:layout_gravity="center_vertical" android:id="@id/clear_all_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_clear_all_button" style="@style/Btn.Clear" />
</LinearLayout>
</RelativeLayout>
Note: If you're a developer or a themer, you can change it however you like. And if you find more optional tweaks, please feel free to post it here.
could you pls also post a short tut on how to decompile services.jar and twframework-res.apk
Arjav23 said:
could you pls also post a short tut on how to decompile services.jar and twframework-res.apk
Click to expand...
Click to collapse
Done!
Great work jason
Gonna implement this in pkh.
Everything ready
shwetanklal said:
Great work jason
Gonna implement this in pkh.
Click to expand...
Click to collapse
That would be fantastic
you read my mind!
good one jason puru.... nice guide
You Sir - are keeping this community alive! SUPER THANKS!
Update. Some short guides for optional customization
noob here. i am not able to decompile jar. its showing some error.
srgudhka said:
noob here. i am not able to decompile jar. its showing some error.
Click to expand...
Click to collapse
Put your Smali/Baksmali de-compiler and compiler with "services.jar", then in command prompt, type:
cd\
cd /directory/
java -jar baksmali.jar -x services.jar -o out
You shouldn't get any problem.
i did just that... gonna try everything again.
again. it saying unexpected top level exception. zip file services.jar does not contain dex file.
srgudhka said:
i did just that... gonna try everything again.
again. it saying unexpected top level exception. zip file services.jar does not contain dex file.
Click to expand...
Click to collapse
Every services.jar has a classes.dex in it.
EDIT: You have to install Java JDK
Jason-EX said:
Every services.jar has a classes.dex in it.
EDIT: You have to install Java JDK
Click to expand...
Click to collapse
i already had that installed. am getting still same errors.
srgudhka said:
i already had that installed. am getting still same errors.
Click to expand...
Click to collapse
Alright, check this one: http://www.youtube.com/watch?v=9h8kzHTp6fA
there is not classes.dex inside services.jar.
srgudhka said:
there is not classes.dex inside services.jar.
Click to expand...
Click to collapse
which rom are you using? and from where did you get the service.jar?
Hi All!!
I'm going crazy to edit my mms.apk!
I want to change the size of EditText without assign static value of height, but how can I do this??
Graphically, this is what I want: (see attachment; note: the red area is as it is now my mms.apk; the green area is the results of what I want)
Part of the code to be changed I think that's (compose_message_activity.xml in res / layout):
Code:
<RelativeLayout android:layout_gravity="bottom" android:id="@id/bottom_panel" android:background="#ff737b82" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1.0">
<LinearLayout android:gravity="right" android:orientation="vertical" android:id="@id/sendbuttons" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="6.299988dip" android:layout_alignParentRight="true" android:layout_alignParentBottom="true">
<TextView android:textSize="15.0sp" android:textColor="#ffc7c7c7" android:gravity="right" android:id="@id/message_size" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="2.0dip" />
<Button android:textSize="15.0sp" android:textColor="@drawable/selector_send_btn_text_color" android:id="@id/send_button" android:background="@drawable/selector_send_button" android:nextFocusLeft="@id/embedded_text_editor" android:layout_width="55.0dip" android:layout_height="48.0dip" android:layout_marginBottom="3.0dip" android:text="@string/send" />
<ImageButton android:layout_gravity="center_vertical" android:id="@id/attach_button" android:background="@drawable/selector_attachment_button" android:visibility="gone" android:layout_width="1.0dip" android:layout_height="1.0dip" android:layout_marginBottom="1.2999878dip" />
</LinearLayout>
<EditText android:layout_marginBottom="3.0dip" android:textSize="17.0sp" android:textColor="#ffffffff" android:textColorHint="#ff898989" android:gravity="top" android:id="@id/embedded_text_editor" android:background="@drawable/textfield_msg" android:nextFocusRight="@id/send_button" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginLeft="3.0dip" android:layout_marginTop="5.0dip" android:hint="@string/type_to_compose_text_enter_to_send" android:capitalize="sentences" android:autoText="true" android:layout_toLeftOf="@id/sendbuttons" android:layout_alignParentLeft="true" android:inputType="textCapSentences|textAutoCorrect|textMultiLine" android:imeOptions="actionSend|flagNoEnterAction" />
</RelativeLayout>
Help please
(I'm on Android 2.3.6 Gingerbread)
i make like S4 toggle, but i have problem that layout, 1 Line is problem, can't move in front, unless if i write code in front of @id/scroll, it's move infront but, i can't use toggle... so this is my code, and how to change it to move infront for 1lines... ?? :crying::crying:
i show pictures as well...~~
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:id="@id/notification_panel" android:background="@drawable/notification_panel_bg" androidaddingTop="@dimen/notification_panel_padding_top" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginLeft="@dimen/notification_panel_margin_left"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
<FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginBottom="@dimen/tw_close_handle_underlap">
<include android:layout_width="fill_parent" android:layout_height="@dimen/tw_notification_panel_header_height" layout="@layout/tw_status_bar_expanded_header" />
<TextView android:gravity="center" android:id="@id/emergency_calls_only" androidaddingBottom="4.0dip" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" />
<View android:background="#ff091a24" android:layout_width="fill_parent" android:layout_height="1.0dip" android:layout_marginTop="@dimen/tw_notification_panel_header_height" />
<LinearLayout androidrientation="vertical" android:id="@id/quicksetting_tile_header" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginTop="@dimen/tw_notification_panel_header_line_height">
<LinearLayout androidrientation="horizontal" android:id="@id/quicksetting_tile" android:layout_width="wrap_content" android:layout_height="wrap_content">
<com.android.systemui.statusbar.policy.quicksetting.QuickSettingTilePanel androidrientation="horizontal" android:id="@id/quicksetting_tile_container" android:layout_width="wrap_content" android:layout_height="wrap_content" android:divider="@drawable/tw_black_bg" android:showDividers="middle" />
</LinearLayout>
<LinearLayout androidrientation="horizontal" android:id="@id/quicksetting_tile2" android:layout_width="wrap_content" android:layout_height="wrap_content">
<com.android.systemui.statusbar.policy.quicksetting.QuickSettingTilePanel1 androidrientation="horizontal" android:id="@id/quicksetting_tile_container2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:divider="@drawable/tw_black_bg" android:showDividers="middle" />
</LinearLayout>
<LinearLayout androidrientation="horizontal" android:id="@id/quicksetting_tile3" android:layout_width="wrap_content" android:layout_height="wrap_content">
<com.android.systemui.statusbar.policy.quicksetting.QuickSettingTilePanel2 androidrientation="horizontal" android:id="@id/quicksetting_tile_container3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:divider="@drawable/tw_black_bg" android:showDividers="middle" />
</LinearLayout>
</LinearLayout>
<ScrollView android:id="@id/scroll" android:background="@drawable/notification_panel_bg" android:fadingEdge="none" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginTop="-100.0dip" androidverScrollMode="ifContentScrolls">
<LinearLayout androidrientation="vertical" android:id="@id/scrollCart" android:layout_width="fill_parent" android:layout_height="@dimen/quick_setting_button_height">
<HorizontalScrollView android:id="@id/quicksetting_scroller" android:scrollbars="none" android:layout_width="wrap_content" android:layout_height="wrap_content">
<com.android.systemui.statusbar.policy.quicksetting.QuickSettingPanel androidrientation="horizontal" android:id="@id/quicksetting_container" android:layout_width="wrap_content" android:layout_height="wrap_content" android:divider="@drawable/tw_black_bg" android:showDividers="middle" />
</HorizontalScrollView>
<LinearLayout androidrientation="vertical" android:id="@id/brightness_controller" android:background="#ff000000" android:layout_width="fill_parent" android:layout_height="56.0dip">
<LinearLayout androidrientation="horizontal" android:layout_width="fill_parent" android:layout_height="55.0dip">
<ImageView android:id="@id/brightness_icon" android:clickable="true" android:layout_width="25.0dip" android:layout_height="fill_parent" android:layout_marginLeft="13.0dip" android:src="@drawable/ic_sysbar_brightness" android:contentDescription="@string/accessibility_brightness_icon" />
<FrameLayout android:id="@id/brightness_group" android:layout_width="fill_parent" android:layout_height="fill_parent">
<com.android.systemui.statusbar.policy.ToggleSlider android:id="@id/brightness" android:layout_width="fill_parent" android:layout_height="fill_parent" systemui:text="@string/status_bar_settings_auto_brightness_label" />
<com.android.systemui.statusbar.policy.ToggleSlider android:id="@id/auto_brightness" android:layout_width="fill_parent" android:layout_height="fill_parent" systemui:text="@string/status_bar_settings_auto_brightness_label" />
</FrameLayout>
</LinearLayout>
</LinearLayout>
<View android:background="#ff091a24" android:layout_width="fill_parent" android:layout_height="1.0dip" />
<LinearLayout androidrientation="vertical" android:id="@id/noNotificationsTitle" android:focusable="true" android:layout_width="fill_parent" android:layout_height="wrap_content">
<TextView android:textSize="@dimen/status_bar_expanded_notification_category_text_size" android:textStyle="bold" android:textColor="@color/notification_category_color" android:gravity="left|center" android:id="@id/noNotificationsText" androidaddingLeft="11.0dip" android:layout_width="fill_parent" android:layout_height="@dimen/status_bar_expanded_notification_category_height" android:text="@string/status_bar_no_notifications_title" />
</LinearLayout>
<LinearLayout androidrientation="vertical" android:id="@id/onGoingCart" android:background="#ff293945" android:focusable="true" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="@dimen/status_bar_expanded_notification_category_height">
<TextView android:textSize="@dimen/status_bar_expanded_notification_category_text_size" android:textStyle="bold" android:textColor="@color/notification_category_color" android:gravity="left|center" android:id="@id/onGoingNotificationText" androidaddingLeft="11.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:text="@string/status_bar_ongoing_events_title" />
</LinearLayout>
<com.android.systemui.statusbar.policy.NotificationRowLayout android:id="@id/onGoingItems" android:layout_width="fill_parent" android:layout_height="wrap_content" systemui:rowHeight="@dimen/tw_notification_row_min_height" />
<LinearLayout androidrientation="vertical" android:id="@id/notificationCart" android:background="#ff293945" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="@dimen/status_bar_expanded_notification_category_height">
<RelativeLayout androidrientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content">
<TextView android:textSize="@dimen/status_bar_expanded_notification_category_text_size" android:textStyle="bold" android:textColor="@color/notification_category_color" android:gravity="left|center" android:id="@id/latestNotificationText" androidaddingLeft="11.0dip" android:layout_width="180.0dip" android:layout_height="fill_parent" android:text="@string/status_bar_latest_events_title" android:layout_alignParentLeft="true" />
<TextView android:textSize="@dimen/status_bar_expanded_notification_clear_button_text_size" android:textColor="@color/tw_status_bar_clear_btn_text" android:gravity="center" android:id="@id/clear_all_button" android:background="@drawable/tw_btn_default_small" androidadding="0.100000024dip" android:focusable="true" android:clickable="true" android:layout_width="@dimen/status_bar_expanded_clear_button_width" android:layout_height="fill_parent" android:layout_marginRight="4.0dip" android:text="@string/status_bar_clear_all_button" android:layout_alignParentRight="true" android:contentDescription="@string/accessibility_clear_all" />
</RelativeLayout>
</LinearLayout>
<com.android.systemui.statusbar.policy.NotificationRowLayout android:id="@id/notificationItems" android:layout_width="fill_parent" android:layout_height="wrap_content" systemui:rowHeight="@dimen/tw_notification_row_min_height" />
<com.android.systemui.statusbar.policy.NotificationRowLayout android:id="@id/latestItems" android:layout_width="fill_parent" android:layout_height="wrap_content" systemui:rowHeight="@dimen/tw_notification_row_min_height" />
</LinearLayout>
</ScrollView>
</FrameLayout>
<com.android.systemui.statusbar.phone.CloseDragHandle android:layout_gravity="bottom" androidrientation="vertical" android:id="@id/close" android:layout_width="fill_parent" android:layout_height="@dimen/tw_close_handle_height">
<RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent">
<ImageView android:layout_gravity="bottom" android:layout_width="fill_parent" android:layout_height="@dimen/tw_close_handle_height" android:src="@drawable/tw_status_bar_close" android:scaleType="fitXY" />
<TextView android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Network" android:gravity="center" android:layout_gravity="bottom" android:id="@id/carrier_label" android:layout_width="fill_parent" android:layout_height="@dimen/tw_close_handle_height" android:layout_marginBottom="10.0dip" />
</RelativeLayout>
</com.android.systemui.statusbar.phone.CloseDragHandle>
</FrameLayout>
This is a porting for s advance of the known mod "23 Statusbar toggles to Samsung Jelly Bean Roms" by Wanam.
His thread: http://forum.xda-developers.com/showthread.php?p=35093377#post35093377
Here is how it looks like :
{
"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"
}
Tested on XXLQG and UBLPH
Problems: flashlight not working (we have a widget for that)
Reboot doesn't work
What you need:
Deodexed firmware;
Custom recovery
How to:
Download
Flash from recovery
Download!?
See attachments
Credits:
Wanam for his awesome work;
Unknownforce for advices I found in Wanam's thread
dema121 for his tool http://forum.xda-developers.com/showthread.php?t=1876685 (had to change update-binary but your tool is awesome )
XDA community, of course
Ok, let's start the guide!
Decompile your SystemUI.apk
"red color" means that line(s) has been added, search the line before the one in red to find where you have to add or change something
Make sure your "tw_status_bar_expanded.xml" looks like this:
Code:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:id="@id/notification_panel" android:background="@drawable/notification_panel_bg" android:paddingTop="@dimen/notification_panel_padding_top" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginLeft="@dimen/notification_panel_margin_left"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
<FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginBottom="@dimen/tw_close_handle_underlap">
<include android:layout_width="fill_parent" android:layout_height="@dimen/tw_notification_panel_header_height" layout="@layout/tw_status_bar_expanded_header" />
<TextView android:gravity="center" android:id="@id/emergency_calls_only" android:paddingBottom="4.0dip" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" />
<View android:background="#ff091a24" android:layout_width="fill_parent" android:layout_height="1.0dip" android:layout_marginTop="@dimen/tw_notification_panel_header_height" />
<ScrollView android:id="@id/scroll" android:fadingEdge="none" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginTop="@dimen/tw_notification_panel_header_line_height" android:overScrollMode="ifContentScrolls">
<LinearLayout android:orientation="vertical" android:id="@id/scrollCart" android:layout_width="fill_parent" android:layout_height="wrap_content">
<HorizontalScrollView android:id="@id/quicksetting_scroller" [color=red]android:visibility="gone"[/color] android:scrollbars="none" android:layout_width="wrap_content" android:layout_height="@dimen/quick_setting_button_height">
<com.android.systemui.statusbar.policy.quicksetting.QuickSettingPanel android:orientation="horizontal" android:id="@id/quicksetting_container" android:layout_width="wrap_content" android:layout_height="wrap_content" android:divider="@drawable/tw_black_bg" android:showDividers="middle" />
</HorizontalScrollView>
[color=red]<com.wanam.systemui.quickpanel.PowerWidget android:id="@id/exp_power_stat" android:layout_width="wrap_content" android:layout_height="@dimen/quick_setting_button_height" android:layout_marginTop="@dimen/notification_divider_height" />[/color]
<LinearLayout android:orientation="vertical" android:id="@id/brightness_controller" android:background="#ff000000" android:layout_width="fill_parent" android:layout_height="56.0dip">
<LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="55.0dip">
<ImageView android:id="@id/brightness_icon" android:clickable="true" android:layout_width="25.0dip" android:layout_height="fill_parent" android:layout_marginLeft="13.0dip" android:src="@drawable/ic_sysbar_brightness" android:contentDescription="@string/accessibility_brightness_icon" />
<FrameLayout android:id="@id/brightness_group" android:layout_width="fill_parent" android:layout_height="fill_parent">
<com.android.systemui.statusbar.policy.ToggleSlider android:id="@id/brightness" android:layout_width="fill_parent" android:layout_height="fill_parent" systemui:text="@string/status_bar_settings_auto_brightness_label" />
<com.android.systemui.statusbar.policy.ToggleSlider android:id="@id/auto_brightness" android:layout_width="fill_parent" android:layout_height="fill_parent" systemui:text="@string/status_bar_settings_auto_brightness_label" />
</FrameLayout>
</LinearLayout>
<View android:background="#ff091a24" android:layout_width="fill_parent" android:layout_height="1.0dip" />
</LinearLayout>
<LinearLayout android:orientation="vertical" android:id="@id/noNotificationsTitle" android:focusable="true" android:layout_width="fill_parent" android:layout_height="wrap_content">
<TextView android:textSize="@dimen/status_bar_expanded_notification_category_text_size" android:textColor="@color/notification_category_color" android:gravity="left|center" android:id="@id/noNotificationsText" android:paddingLeft="11.0dip" android:layout_width="fill_parent" android:layout_height="@dimen/status_bar_expanded_notification_category_height" android:text="@string/status_bar_no_notifications_title" />
</LinearLayout>
<LinearLayout android:orientation="vertical" android:id="@id/onGoingCart" android:background="#ff293945" android:focusable="true" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="@dimen/status_bar_expanded_notification_category_height">
<TextView android:textSize="@dimen/status_bar_expanded_notification_category_text_size" android:textColor="@color/notification_category_color" android:gravity="left|center" android:id="@id/onGoingNotificationText" android:paddingLeft="11.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="@string/status_bar_ongoing_events_title" />
</LinearLayout>
<com.android.systemui.statusbar.policy.NotificationRowLayout android:id="@id/onGoingItems" android:layout_width="fill_parent" android:layout_height="wrap_content" systemui:rowHeight="@dimen/tw_notification_row_min_height" />
<LinearLayout android:orientation="vertical" android:id="@id/notificationCart" android:background="#ff293945" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="@dimen/status_bar_expanded_notification_category_height">
<RelativeLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content">
<TextView android:textSize="@dimen/status_bar_expanded_notification_category_text_size" android:textColor="@color/notification_category_color" android:gravity="left|center" android:id="@id/latestNotificationText" android:paddingLeft="11.0dip" android:layout_width="180.0dip" android:layout_height="fill_parent" android:text="@string/status_bar_latest_events_title" android:layout_alignParentLeft="true" />
<TextView android:textSize="@dimen/status_bar_expanded_notification_clear_button_text_size" android:textColor="@color/tw_status_bar_clear_btn_text" android:gravity="center" android:id="@id/clear_all_button" android:background="@drawable/tw_btn_default_small" android:padding="0.100000024dip" android:focusable="true" android:clickable="true" android:layout_width="@dimen/status_bar_expanded_clear_button_width" android:layout_height="fill_parent" android:layout_marginRight="4.0dip" android:text="@string/status_bar_clear_all_button" android:layout_alignParentRight="true" android:contentDescription="@string/accessibility_clear_all" />
</RelativeLayout>
</LinearLayout>
<com.android.systemui.statusbar.policy.NotificationRowLayout android:id="@id/notificationItems" android:layout_width="fill_parent" android:layout_height="wrap_content" systemui:rowHeight="@dimen/tw_notification_row_min_height" />
<com.android.systemui.statusbar.policy.NotificationRowLayout android:id="@id/latestItems" android:layout_width="fill_parent" android:layout_height="wrap_content" systemui:rowHeight="@dimen/tw_notification_row_min_height" />
</LinearLayout>
</ScrollView>
</FrameLayout>
<com.android.systemui.statusbar.phone.CloseDragHandle android:layout_gravity="bottom" android:orientation="vertical" android:id="@id/close" android:layout_width="fill_parent" android:layout_height="@dimen/tw_close_handle_height">
<RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent">
<ImageView android:layout_gravity="bottom" android:layout_width="fill_parent" android:layout_height="@dimen/tw_close_handle_height" android:src="@drawable/tw_status_bar_close" android:scaleType="fitXY" />
<TextView android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Network" android:ellipsize="marquee" android:gravity="center" android:layout_gravity="bottom" android:id="@id/carrier_label" android:layout_width="fill_parent" android:layout_height="@dimen/tw_close_handle_height" android:layout_marginBottom="10.0dip" android:singleLine="true" />
</RelativeLayout>
</com.android.systemui.statusbar.phone.CloseDragHandle>
</FrameLayout>
Edit "dimens.xml"
Code:
<dimen name="quick_setting_button_height">[color=red]95.0dip[/color]</dimen>
Edit "SystemUI.apk\res\values\ids.xml" and add this Id:
Code:
<item type="id" name="exp_power_stat">false</item>
Edit "SystemUI.apk\smali\com\android\systemui\statusbar \phone\PhoneStatusBar.smali":
1-
Code:
.field mPostCollapseCleanup:Ljava/lang/Runnable;
[COLOR="Red"].field mPowerWidget:Lcom/wanam/systemui/quickpanel/PowerWidget;[/COLOR]
.field mQueueLock:Ljava/lang/Object;
2-
Code:
invoke-virtual {v1, v0, p3, v2}, Landroid/widget/LinearLayout;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V
.line 1120
[COLOR="red"]iget-object v1, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mPowerWidget:Lcom/wanam/systemui/quickpanel/PowerWidget;
invoke-virtual {v1}, Lcom/wanam/systemui/quickpanel/PowerWidget;->updateWidget()V[/COLOR]
return-void
3-
Code:
invoke-virtual {v9, v10}, Landroid/widget/ScrollView;->setVerticalScrollBarEnabled(Z)V
[COLOR="red"]move-object/from16 v0, p0
iget-object v9, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarWindow:Lcom/android/systemui/statusbar/phone/StatusBarWindowView;
const v10, [COLOR="Black"]0x7f0d010e[/COLOR]
invoke-virtual {v9, v10}, Lcom/android/systemui/statusbar/phone/StatusBarWindowView;->findViewById(I)Landroid/view/View;
move-result-object v9
check-cast v9, Lcom/wanam/systemui/quickpanel/PowerWidget;
move-object/from16 v0, p0
iput-object v9, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mPowerWidget:Lcom/wanam/systemui/quickpanel/PowerWidget;[/COLOR]
.line 698
new-instance v9, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$MyTicker;
4-
Code:
invoke-virtual {v1, v9, v2}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
[COLOR="Red"]move-object/from16 v0, p0
iget-object v9, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mPowerWidget:Lcom/wanam/systemui/quickpanel/PowerWidget;
invoke-virtual {v9}, Lcom/wanam/systemui/quickpanel/PowerWidget;->setupWidget()V[/COLOR]
.line 826
sget-boolean v9, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->useTouchWizGUI:Z
Extract attached "wanam.zip" and copy both folders "com" & "wanam" to your "SystemUI.apk\smali\".
That's all, recompile your SystemUI.
After building, make sure your Id "exp_power_stat" got the public id "0x7f0d010e", if you got a different Id, use your new public Id in the "makeStatusBarView" method.
Download attached "system.zip" , you need to copy Toggle buttons resources "lidroid-res.apk" to "system/framework", and "LidroidSettings.apk" to "/system/app" (with permissions 644).
So i only have to download the zip. And install it through twrp or cwm?
Sent from my GT-I9070 using xda app-developers app
Works on lp8! Thanks a lot! The only thing i noticed is that i'm unable to press settings button in notification panel but it's not important for me!
Thanks
Phoneboot said:
So i only have to download the zip. And install it through twrp or cwm?
Sent from my GT-I9070 using xda app-developers app
Click to expand...
Click to collapse
Yep
m i n a r said:
Works on lp9! Thanks a lot! The only thing i noticed is that i'm unable to press settings button in notification panel but it's not important for me!
Click to expand...
Click to collapse
Mmm..I hadn't noticed..I'll look into that
Sent from my N73 using Tapa
deopeall distance
m i n a r said:
The only thing i noticed is that i'm unable to press settings button in notification panel :
Click to expand...
Click to collapse
Idem in my case :silly:
Someone already tryed it on xlqe?
Hmm but then im missing my harsh jelly v2.1 battery icon.
Sent from my GT-I9070 using xda app-developers app
Does the reboot work? Just wonderin...
sent from my phone cause i can
bobfrantic said:
Does the reboot work? Just wonderin...
sent from my phone cause i can
Click to expand...
Click to collapse
Reboot doesn't work
is possible to use dormant mode! Just long press on the toggle and its settings will appear!
Nice work,, Working on LQ4 but setting icon not work and when on flash light nothing happen and systemui "unfortunately stopped" then re launched again after few second. do I unstalled.
m i n a r said:
Reboot doesn't work
is possible to use dormant mode! Just long press on the toggle and its settings will appear!
Click to expand...
Click to collapse
Now all that is need to be done: multiwindow
Verstuurd van mijn GT-I9070 met Tapatalk
Settings button now works (searched for the problem all the morning then discovered it was a stupid error )
Phoneboot said:
Someone already tryed it on xlqe?
Hmm but then im missing my harsh jelly v2.1 battery icon.
Sent from my GT-I9070 using xda app-developers app
Click to expand...
Click to collapse
Follow guide on post #2 and add this to that rom :good:
Jeroenvk94 said:
Now all that is need to be done: multiwindow
Verstuurd van mijn GT-I9070 met Tapatalk
Click to expand...
Click to collapse
come in man, we know you can do it
Jeroenvk94 said:
Now all that is need to be done: multiwindow
Verstuurd van mijn GT-I9070 met Tapatalk
Click to expand...
Click to collapse
I hope someone will do it :fingers-crossed: is the only thing that was tried and tried but never done i can be a tester or help, but i'm still a noob in mod. Anyway thank you for all your work!
Toni5830 said:
Settings button now works (searched for the problem all the morning then discovered it was a stupid error )
Click to expand...
Click to collapse
What we have to do?
Inviato dal mio S Advance HarshJelly + CoCore 7.6
maldex said:
What we have to do?
Inviato dal mio S Advance HarshJelly + CoCore 7.6
Click to expand...
Click to collapse
Download and flash
Sent from my N73 using Tapa
If you want can you do a transparent statusbar version? I'm trying to do it by myself but i don't have enough time this month
Toni5830 said:
Download and flash
Sent from my N73 using Tapa
Click to expand...
Click to collapse
Right , but setting button on notification pannel dosn' t work.
I ask for that.
Inviato dal mio S Advance HarshJelly + CoCore 7.6
maldex said:
Right , but setting button on notification pannel dosn' t work.
I ask for that.
Inviato dal mio S Advance HarshJelly + CoCore 7.6
Click to expand...
Click to collapse
The version I uploaded this morning?!? I hope I didn't upload the wrong file :banghead:
Sent from my N73 using Tapa
Ok, I downloaded it again and now it's ok .thanx .
Inviato dal mio S Advance HarshJelly + CoCore 7.6
{
"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"
}
I figured this mod was long overdue, given that we're without Xposed on Nougat. Those who used to have the Galaxy S2/4 know how fond I am of this feature! This is a straightforward mod to add 2 buttons to the longpress power menu, specifically to reboot directly to recovery and bootloader. I'm not including a flashable zip as it won't run with stock kernel (modifies /system) and this is really intended for ROM devs to cook.
I've attached the B19 files to this post.
I will go through all the changes necessary to do the mod yourself for future bases. It will be assumed you have a basic environment (apktool/smali/baksmali) set up and some apk/jar modification experience. This is based on A2017U B19.
1. Add the buttons to the longpress menu: /system/framework/framework-zte-res.apk
- Decompile the apk and replace res/layout/global_dialog.xml with:
Code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:orientation="vertical" android:background="#b3000000" android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView android:textSize="12.0sp" android:textColor="#8affffff" android:gravity="center" android:id="@id/longpress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="24.0dip" android:text="@string/global_action_rboot_message" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" />
<RelativeLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="132.0dip" android:layout_marginStart="56.0dip" android:layout_alignParentStart="true">
<LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/airplanemode" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageButton android:id="@id/airplane" android:background="@drawable/circle1" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:tint="#ffffffff" android:alpha="0.9" android:paddingStart="19.0dip" android:paddingEnd="19.0dip" />
<TextView android:textSize="12.0sp" android:textColor="@color/global_action_text" android:gravity="center" android:id="@id/text_airplane" android:paddingTop="10.0dip" android:layout_width="110.0dip" android:layout_height="wrap_content" android:maxLines="2" />
</LinearLayout>
</RelativeLayout>
<RelativeLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="132.0dip" android:layout_marginEnd="56.0dip" android:layout_alignParentEnd="true">
<LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/silent_mode" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageButton android:id="@id/silent" android:background="@drawable/circle1" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:tint="#ffffffff" android:alpha="0.9" android:paddingStart="19.0dip" android:paddingEnd="19.0dip" />
<TextView android:textSize="12.0sp" android:textColor="@color/global_action_text" android:gravity="center" android:id="@id/text_silent" android:paddingTop="10.0dip" android:layout_width="110.0dip" android:layout_height="wrap_content" android:maxLines="2" />
</LinearLayout>
</RelativeLayout>
<RelativeLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="268.0dip" android:layout_marginStart="56.0dip" android:layout_alignParentStart="true">
<LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/reset_action" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageButton android:id="@id/reset" android:background="@drawable/circle1" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_lock_reboot" android:tint="#ffffffff" android:contentDescription="@string/global_action_reset" android:alpha="0.9" android:paddingStart="19.0dip" android:paddingEnd="19.0dip" />
<TextView android:textSize="12.0sp" android:textColor="@color/global_action_text" android:gravity="center" android:id="@id/text_reset" android:paddingTop="10.0dip" android:layout_width="110.0dip" android:layout_height="wrap_content" android:text="@string/global_action_reset" android:maxLines="2" />
</LinearLayout>
</RelativeLayout>
<RelativeLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="268.0dip" android:layout_marginEnd="56.0dip" android:layout_alignParentEnd="true">
<LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/power_action" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageButton android:id="@id/power" android:background="@drawable/circle1" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_lock_power" android:tint="#ffffffff" android:contentDescription="@string/global_action_poweroff" android:alpha="0.9" android:paddingStart="19.0dip" android:paddingEnd="19.0dip" />
<TextView android:textSize="12.0sp" android:textColor="@color/global_action_text" android:gravity="center" android:id="@id/text_power" android:paddingTop="10.0dip" android:layout_width="110.0dip" android:layout_height="wrap_content" android:text="@string/global_action_poweroff" android:maxLines="2" />
</LinearLayout>
</RelativeLayout>
<RelativeLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="404.0dip" android:layout_marginStart="56.0dip" android:layout_alignParentStart="true">
<LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/recovery_action" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageButton android:id="@id/recovery" android:background="@drawable/circle1" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_lock_power" android:tint="#ffffffff" android:contentDescription="@string/global_action_recovery" android:alpha="0.9" android:paddingStart="19.0dip" android:paddingEnd="19.0dip" />
<TextView android:textSize="12.0sp" android:textColor="@color/global_action_text" android:gravity="center" android:id="@id/text_recovery" android:paddingTop="10.0dip" android:layout_width="110.0dip" android:layout_height="wrap_content" android:text="@string/global_action_recovery" android:maxLines="2" />
</LinearLayout>
</RelativeLayout>
<RelativeLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="404.0dip" android:layout_marginEnd="56.0dip" android:layout_alignParentEnd="true">
<LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/bootloader_action" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageButton android:id="@id/bootloader" android:background="@drawable/circle1" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_lock_power" android:tint="#ffffffff" android:contentDescription="@string/global_action_bootloader" android:alpha="0.9" android:paddingStart="19.0dip" android:paddingEnd="19.0dip" />
<TextView android:textSize="12.0sp" android:textColor="@color/global_action_text" android:gravity="center" android:id="@id/text_bootloader" android:paddingTop="10.0dip" android:layout_width="110.0dip" android:layout_height="wrap_content" android:text="@string/global_action_bootloader" android:maxLines="2" />
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
- For the landscape version, replace res/layout-land/global_dialog.xml with:
Code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:orientation="vertical" android:background="#b3000000" android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView android:textSize="12.0sp" android:textColor="#8affffff" android:gravity="center" android:id="@id/longpress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="24.0dip" android:text="@string/global_action_rboot_message" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" />
<LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="86.0dip" android:layout_centerHorizontal="true">
<LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/airplanemode" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="14.0dip">
<ImageButton android:id="@id/airplane" android:background="@drawable/circle1" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:tint="#ffffffff" android:alpha="0.9" android:paddingStart="19.0dip" android:paddingEnd="19.0dip" />
<TextView android:textSize="12.0sp" android:textColor="@color/global_action_text" android:gravity="center" android:id="@id/text_airplane" android:paddingTop="10.0dip" android:layout_width="110.0dip" android:layout_height="wrap_content" android:maxLines="2" />
</LinearLayout>
<LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/silent_mode" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="14.0dip">
<ImageButton android:id="@id/silent" android:background="@drawable/circle1" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:tint="#ffffffff" android:alpha="0.9" android:paddingStart="19.0dip" android:paddingEnd="19.0dip" />
<TextView android:textSize="12.0sp" android:textColor="@color/global_action_text" android:gravity="center" android:id="@id/text_silent" android:paddingTop="10.0dip" android:layout_width="110.0dip" android:layout_height="wrap_content" android:maxLines="2" />
</LinearLayout>
<LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/power_action" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="14.0dip">
<ImageButton android:id="@id/power" android:background="@drawable/circle1" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_lock_power" android:tint="#ffffffff" android:contentDescription="@string/global_action_poweroff" android:alpha="0.9" android:paddingStart="19.0dip" android:paddingEnd="19.0dip" />
<TextView android:textSize="12.0sp" android:textColor="@color/global_action_text" android:gravity="center" android:id="@id/text_power" android:paddingTop="10.0dip" android:layout_width="110.0dip" android:layout_height="wrap_content" android:text="@string/global_action_poweroff" android:maxLines="2" />
</LinearLayout>
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="224.0dip" android:layout_centerHorizontal="true">
<LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/reset_action" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="14.0dip">
<ImageButton android:id="@id/reset" android:background="@drawable/circle1" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_lock_reboot" android:tint="#ffffffff" android:contentDescription="@string/global_action_reset" android:alpha="0.9" android:paddingStart="19.0dip" android:paddingEnd="19.0dip" />
<TextView android:textSize="12.0sp" android:textColor="@color/global_action_text" android:gravity="center" android:id="@id/text_reset" android:paddingTop="10.0dip" android:layout_width="110.0dip" android:layout_height="wrap_content" android:text="@string/global_action_reset" android:maxLines="2" />
</LinearLayout>
<LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/recovery_action" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="14.0dip">
<ImageButton android:id="@id/recovery" android:background="@drawable/circle1" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_lock_power" android:tint="#ffffffff" android:contentDescription="@string/global_action_recovery" android:alpha="0.9" android:paddingStart="19.0dip" android:paddingEnd="19.0dip" />
<TextView android:textSize="12.0sp" android:textColor="@color/global_action_text" android:gravity="center" android:id="@id/text_recovery" android:paddingTop="10.0dip" android:layout_width="110.0dip" android:layout_height="wrap_content" android:text="@string/global_action_recovery" android:maxLines="2" />
</LinearLayout>
<LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/bootloader_action" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="14.0dip">
<ImageButton android:id="@id/bootloader" android:background="@drawable/circle1" android:clickable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_lock_power" android:tint="#ffffffff" android:contentDescription="@string/global_action_bootloader" android:alpha="0.9" android:paddingStart="19.0dip" android:paddingEnd="19.0dip" />
<TextView android:textSize="12.0sp" android:textColor="@color/global_action_text" android:gravity="center" android:id="@id/text_bootloader" android:paddingTop="10.0dip" android:layout_width="110.0dip" android:layout_height="wrap_content" android:text="@string/global_action_bootloader" android:maxLines="2" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
It should be mentioned I simply reused the power button graphic for the additional buttons. You can customize the buttons by generating vector xml and replacing ic_lock_recovery/bootloader.xml.
(If you do generate nice icons, please post them!)
2. Add the appropriate IDs/strings/xml to framework-zte-res.apk
- add to res/values/ids.xml
Code:
<item type="id" name="recovery_action">false</item>
<item type="id" name="bootloader_action">false</item>
<item type="id" name="recovery" />
<item type="id" name="bootloader" />
<item type="id" name="text_recovery" />
<item type="id" name="text_bootloader" />
- add to res/values/strings.xml
Code:
<string name="global_action_recovery">Recovery</string>
<string name="global_action_bootloader">Bootloader</string>
- in res/drawable, copy ic_lock_power.xml to ic_lock_recovery.xml, ic_lock_bootloader.xml (comment at end of #1 applies here)
3. Build framework-zte-res.apk using apktool, which is nice enough to assign all the new IDs needed. Now decompile the new apk and open res/values/public.xml to obtain two IDs
used for step 4 smali changes:
Code:
<public type="id" name="recovery" id="[COLOR="Red"]0x06060067[/COLOR]" />
<public type="id" name="bootloader" id="[COLOR="red"]0x06060068[/COLOR]" />
You must save those two IDs somewhere for the next step. If you don't, you risk bootlooping or worse!
4. Our target for the actual code changes is GlobalActions.smali in services.odex. Search for '.method private createDialogMF40' and find the following code:
Code:
new-instance v6, Lcom/android/server/policy/GlobalActions$7;
invoke-direct {v6, p0}, Lcom/android/server/policy/GlobalActions$7;-><init>(Lcom/android/server/policy/GlobalActions;\V
invoke-virtual {v3, v6}, Landroid/view/View;->setOnClickListener(Landroid/view/View$OnClickListener;)V
Just after that last line will be our insertion point for the following code:
Code:
iget-object v6, p0, Lcom/android/server/policy/GlobalActions;->contentView:Landroid/view/View;
const v9, [COLOR="red"]0x6060067[/COLOR]
invoke-virtual {v6, v9}, Landroid/view/View;->findViewById(I)Landroid/view/View;
move-result-object v3
.line 270
.local v3, "recoveryAction":Landroid/view/View;
new-instance v6, Lcom/android/server/policy/GlobalActions$19;
invoke-direct {v6, p0}, Lcom/android/server/policy/GlobalActions$19;-><init>(Lcom/android/server/policy/GlobalActions;)V
invoke-virtual {v3, v6}, Landroid/view/View;->setOnClickListener(Landroid/view/View$OnClickListener;)V
iget-object v6, p0, Lcom/android/server/policy/GlobalActions;->contentView:Landroid/view/View;
const v9, [COLOR="red"]0x6060068[/COLOR]
invoke-virtual {v6, v9}, Landroid/view/View;->findViewById(I)Landroid/view/View;
move-result-object v3
.line 270
.local v3, "bootloaderAction":Landroid/view/View;
new-instance v6, Lcom/android/server/policy/GlobalActions$20;
invoke-direct {v6, p0}, Lcom/android/server/policy/GlobalActions$20;-><init>(Lcom/android/server/policy/GlobalActions;)V
invoke-virtual {v3, v6}, Landroid/view/View;->setOnClickListener(Landroid/view/View$OnClickListener;)V
5. Now we have associated our new buttons with GlobalActions$19 & 20 above. To create these two files, used GlobalActions$7.smali (which is the reboot code) as a template. Be sure to change any $7 to $19 / $20 in the appropriate files. Our last modifications are simple one-liners to direct the reboot behavior.
Find 'const/4 v3, 0x0' around line 69 and change to:
GlobalActions$19.smali:
Code:
const-string/jumbo v3, "recovery"
GlobalActions$20.smali:
Code:
const-string/jumbo v3, "bootloader"
Compile your changes and update services.jar. You are now ready to flash the new framework-zte-res.apk and services.jar to /system/framework. Reboot and cross your fingers!
Version History:
1.0(3/26/17): Initial release
1.1 (3/29/17): Moved portrait layout up 80 pixels to center vertically
You wouldn't be happen to already have a zip readily available to share With that knowledge would you be willing to look at that edits needed to get 3minit battery mod working? I tried it but the standard edits do not work, someone had got it working but pulled down how he did it . Anyways great thread thanks for the info!
neo4uo said:
You wouldn't be happen to already have a zip readily available to share With that knowledge would you be willing to look at that edits needed to get 3minit battery mod working? I tried it but the standard edits do not work, someone had got it working but pulled down how he did it . Anyways great thread thanks for the info!
Click to expand...
Click to collapse
I just updated the OP with the modified apk+jar. That should help
I'm not familiar with the 3minit mod.
neo4uo said:
You wouldn't be happen to already have a zip readily available to share With that knowledge would you be willing to look at that edits needed to get 3minit battery mod working? I tried it but the standard edits do not work, someone had got it working but pulled down how he did it . Anyways great thread thanks for the info!
Click to expand...
Click to collapse
I had 3mint workink on our BadBoyz rom but i havn't updated it for 7.1.1 yet...coming soon
---------- Post added at 07:57 PM ---------- Previous post was at 07:55 PM ----------
jeboo said:
I figured this mod was long overdue, given that we're without Xposed on Nougat. Those who used to have the Galaxy S2/4 know how fond I am of this feature! This is a straightforward mod to add 2 buttons to the longpress power menu, specifically to reboot directly to recovery and bootloader. I'm not including a flashable zip as it won't run with stock kernel (modifies /system) and this is really intended for ROM devs to cook.
Click to expand...
Click to collapse
Nice work Sir !! May we use this ?
benny3 said:
I had 3mint workink on our BadBoyz rom but i havn't updated it for 7.1.1 yet...coming soon
---------- Post added at 07:57 PM ---------- Previous post was at 07:55 PM ----------
Nice work Sir !! May we use this ?
Click to expand...
Click to collapse
Sure :good:
jeboo said:
It should be mentioned I simply reused the power button graphic for the additional buttons. You can customize the buttons by generating vector xml and replacing ic_lock_recovery/bootloader.xml.
(If you do generate nice icons, please post them!)
Click to expand...
Click to collapse
Here's what I came up with for icons if you or anyone wants to use them.
EDIT: I don't know how to do the vector thing you mentioned or why the power off is vectored but also included as a .PNG in res\drawable-xhdpi-v4 but I made some .PNGs based off ic_lock_power_off.png to be used as icons. If it's possible to use these somehow, cool. If not, let me know and I can remove them.
-Duir- said:
Here's what I came up with for icons if you or anyone wants to use them.
EDIT: I don't know how to do the vector thing you mentioned or why the power off is vectored but also included as a .PNG in res\drawable-xhdpi-v4 but I made some .PNGs based off ic_lock_power_off.png to be used as icons. If it's possible to use these somehow, cool. If not, let me know and I can remove them.
Click to expand...
Click to collapse
That'd be dope as hell dude. Gonna see about using these for mine if you're ok with that.
-Duir- said:
Here's what I came up with for icons if you or anyone wants to use them.
EDIT: I don't know how to do the vector thing you mentioned or why the power off is vectored but also included as a .PNG in res\drawable-xhdpi-v4 but I made some .PNGs based off ic_lock_power_off.png to be used as icons. If it's possible to use these somehow, cool. If not, let me know and I can remove them.
Click to expand...
Click to collapse
Awesome man! I actually tried using a 96x96 PNG from framework-res.apk, but it distorted (too large and ovoid).
tylerlawhon said:
That'd be dope as hell dude. Gonna see about using these for mine if you're ok with that.
Click to expand...
Click to collapse
Go for it. I'd use them myself if I knew how. :silly:
Updated OP to fix vertical alignment in portrait mode. :good:
Here is a flashable for peeps to flash in recovery. I can mirror if needed.
neo4uo said:
You wouldn't be happen to already have a zip readily available to share With that knowledge would you be willing to look at that edits needed to get 3minit battery mod working? I tried it but the standard edits do not work, someone had got it working but pulled down how he did it . Anyways great thread thanks for the info!
Click to expand...
Click to collapse
EDIT
benny3 said:
Here is 3Mint for 7.1.1..Enjoy......http://www.mediafire.com/file/2xr733xwzhfbxy6/BadBoyZ_7.1.1_3Mint_Battery.zip
Click to expand...
Click to collapse
You should start a thread if not already thx bunches!
benny3 said:
Here is 3Mint for 7.1.1..Enjoy......http://www.mediafire.com/file/2xr733xwzhfbxy6/BadBoyZ_7.1.1_3Mint_Battery.zip
Click to expand...
Click to collapse
I tried flashing the file and it jacked my phone up. I do not know what was wrong with it. I have redownloaded it and tried reflashing with no luck. I am looking for a stock version(B19) to try to get my phone back working. I figured that I can replace the systemui_ui apk to get back going anyways just figured that I would let you know that that file was not working!
neo4uo said:
I tried flashing the file and it jacked my phone up. I do not know what was wrong with it. I have redownloaded it and tried reflashing with no luck. I am looking for a stock version(B19) to try to get my phone back working. I figured that I can replace the systemui_ui apk to get back going anyways just figured that I would let you know that that file was not working!
Click to expand...
Click to collapse
Same here. I can't enter my decryption password when flashing the 3minit battery mod
Is there a screen shot of what the apm look like?
gpz1100 said:
Is there a screen shot of what the apm look like?
Click to expand...
Click to collapse
Here ya go
neo4uo said:
I tried flashing the file and it jacked my phone up. I do not know what was wrong with it. I have redownloaded it and tried reflashing with no luck. I am looking for a stock version(B19) to try to get my phone back working. I figured that I can replace the systemui_ui apk to get back going anyways just figured that I would let you know that that file was not working!
Click to expand...
Click to collapse
It flashed and worked just fine for me. Strange. This is for a deodex rom, what rom are you on ?
benny3 said:
It flashed and worked just fine for me. Strange. This is for a deodex rom, what rom are you on ?
Click to expand...
Click to collapse
I'm in stock B19. Might be due to the rom being odexed. I didn't think of that
jimbo77 said:
I'm in stock B19. Might be due to the rom being odexed. I didn't think of that
Click to expand...
Click to collapse
It really shouldn't matter. You can have some files deodexed and some not. If this was the case then 3minit wouldn't work on any stock rooted ROMs. I am thinking a bad download. I might try downloading and flashing again. Maybe we can get a Md5 so we can check the download.