Quantcast
Channel: xda-developers - Verizon Galaxy S III Android Development
Viewing all articles
Browse latest Browse all 352

[MOD][HOW-TO] Status Bar Clock Mods

$
0
0
THESE ZIP FILES ARE MEANT FOR A STOCK DEODEXED LG1 or LG7 ROM.

Make a Nandroid before flashing or Modding.

If you are running a custom ROM and you flash this zip it will most likey write over some of your current MODs/Themes. If you are running a custom ROM and want to try this MOD you have two options.

1. Flash it so you can see what it looks like on your ROM and if it borks anything Nandroid back.
2. Use the supplied guide to modify your own files

DEVS, If you want to incorporate this into your ROMs feel free, just shoot me some thanks and some credit.

I would like to thank the following for helping with these MODs:

Jeboo & Shoman94 - They pretty much wrote the toggle portion of the code for the GS2, I just ported over to work with the GS3
RMarkWald - Helped me straighten out some of the identifiers
Clark44 - General thanks


Okay,thats all for that. Lets get to the good stuff.....

This MOD will do the following based on how you want it to look.

-Center the clock in the Status Bar.
-Roll the clock out of the way if you get a notification.
-Make the AM/PM text size a step smaller.
-Add toggle On/Off functionality in Settings/Time and Date.
-Allow you to either toggle on/off am/pm or am/pm & Time all together.

SEE SCREEN SHOTs

The zip I am including will enable all of the above. If you want to mix-n-match the MODs, just use the guide below to add what you want.

This guide assumes you are familiar with de/recompiling. If you are not, there are a bunch of how-to's floating around.

The following APK's will be modified:
SystemUI.apk
SecSettings.apk

We will start with SecSettings.apk


 

THIS PART OF THE GUIDE WILL ADD THE TOGGLES TO REMOVE AM/PM AND OR TIME. THIER FUNCTIONALITY CAN BE FOUND IN SETTING/DATE AND TIME



Navigate to:
res/values/public.xml

find the following identifiers:
 
Code:

0x7f0d05f8
0x7f0d05f9
0x7f0d05fa
0x7f0d05fb



Change the entire lines to match the ones below in red
 
Code:

    <public type="string" name="tts_default_settings_section" id="0x7f0d05f7" />
    <public type="string" name="disable_ampm" id="0x7f0d05f8" />
    <public type="string" name="disable_ampm_text" id="0x7f0d05f9" />
    <public type="string" name="disable_time" id="0x7f0d05fa" />
    <public type="string" name="disable_time_text" id="0x7f0d05fb" />
    <public type="string" name="tts_default_pitch_title" id="0x7f0d05fc" />



Navigate to:
res/values/strings.xml

Add the following lines below in red.
 
Code:

    <string name="tts_default_settings_section">Default settings</string>
    <string name="disable_ampm">Hide AM/PM</string>
    <string name="disable_ampm_text">Remove AM/PM from time in status bar</string>
    <string name="disable_time">Hide Time</string>
    <string name="disable_time_text">Remove time from status bar</string>
    <string name="tts_default_pitch_title">Pitch</string>



Navigate to:
res/xml/date_time_prefs.xml

Add the following below in red
 
Code:

<ListPreference android:title="@string/date_time_date_format" android:key="date_format" android:summary="mm/dd/yyyy" android:widgetLayout="@layout/round_more_icon" />
    <CheckBoxPreference android:title="@string/disable_time" android:key="hide_time" android:summary="@string/disable_time_text" />
    <CheckBoxPreference android:title="@string/disable_ampm" android:key="hide_ampm" android:summary="@string/disable_ampm_text" />

</PreferenceScreen>



Pause - At this point I suggest you compile SecSettings.apk and push to /system/app to verify the new toggles are in place. I like to stop every few steps to verify that the APK will at least compile so I know if I have made any mistakes.

Continuing on with SecSettings.apk....

Navigate to:
smali/com/android/settings/DateTimeSettings.smali

Add the following below in red
 
Code:

.field private mDummyDate:Ljava/util/Calendar;

.field private mHideAmPm:Landroid/preference/Preference;

.field private mHideTime:Landroid/preference/Preference;

.field private mIntentReceiver:Landroid/content/BroadcastReceiver;



Find the following code
 
Code:

iget-object v7, p0, Lcom/android/settings/DateTimeSettings;->mTimePref:Landroid/preference/Preference;


Starting with the very next line, delete everything up to and including the first ".end Method" you come to and paste the following code in its place
 
Code:


if-nez v0, :cond_6

    move v4, v5

    :goto_0
    invoke-virtual {v7, v4}, Landroid/preference/Preference;->setEnabled(Z)V

    .line 193
    iget-object v7, p0, Lcom/android/settings/DateTimeSettings;->mDatePref:Landroid/preference/Preference;

    if-nez v0, :cond_7

    move v4, v5

    :goto_1
    invoke-virtual {v7, v4}, Landroid/preference/Preference;->setEnabled(Z)V

    .line 194
    iget-object v4, p0, Lcom/android/settings/DateTimeSettings;->mTimeZone:Landroid/preference/Preference;

    if-nez v1, :cond_8

    :goto_2
    invoke-virtual {v4, v5}, Landroid/preference/Preference;->setEnabled(Z)V

    .line 197
    invoke-direct {p0}, Lcom/android/settings/DateTimeSettings;->applyEDMDateTimeChangePolicy()V

    const-string v4, "hide_time"

    invoke-virtual {p0, v4}, Lcom/android/settings/DateTimeSettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;

    move-result-object v4

    check-cast v4, Landroid/preference/Preference;

    iput-object v4, p0, Lcom/android/settings/DateTimeSettings;->mHideTime:Landroid/preference/Preference;

    const-string v4, "hide_ampm"

    invoke-virtual {p0, v4}, Lcom/android/settings/DateTimeSettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;

    move-result-object v4

    check-cast v4, Landroid/preference/Preference;

    iput-object v4, p0, Lcom/android/settings/DateTimeSettings;->mHideAmPm:Landroid/preference/Preference;

    iget-object v0, p0, Lcom/android/settings/DateTimeSettings;->mHideTime:Landroid/preference/Preference;

    check-cast v0, Landroid/preference/CheckBoxPreference;

    invoke-virtual {v0}, Landroid/preference/CheckBoxPreference;->isChecked()Z

    move-result v0

    if-eqz v0, :cond_4

    const/4 v0, 0x0

    iget-object v4, p0, Lcom/android/settings/DateTimeSettings;->mHideAmPm:Landroid/preference/Preference;

    invoke-virtual {v4, v0}, Landroid/preference/Preference;->setEnabled(Z)V

    iget-object v4, p0, Lcom/android/settings/DateTimeSettings;->mTime24Pref:Landroid/preference/Preference;

    invoke-virtual {v4, v0}, Landroid/preference/Preference;->setEnabled(Z)V

    :cond_4
    iget-object v0, p0, Lcom/android/settings/DateTimeSettings;->mTime24Pref:Landroid/preference/Preference;

    check-cast v0, Landroid/preference/CheckBoxPreference;

    invoke-virtual {v0}, Landroid/preference/CheckBoxPreference;->isChecked()Z

    move-result v0

    if-eqz v0, :cond_5

    const/4 v0, 0x0

    iget-object v4, p0, Lcom/android/settings/DateTimeSettings;->mHideAmPm:Landroid/preference/Preference;

    invoke-virtual {v4, v0}, Landroid/preference/Preference;->setEnabled(Z)V

    :cond_5

    return-void

    :cond_6
    move v4, v6

    .line 192
    goto :goto_0

    :cond_7
    move v4, v6

    .line 193
    goto :goto_1

    :cond_8
    move v5, v6

    .line 194
    goto :goto_2
.end method



Find the following code
 
Code:

.method public onPreferenceTreeClick(Landroid/preference/PreferenceScreen;Landroid/preference/Preference;)Z


Starting with the very next line, delete everything up to and including the first ".end Method" you come to and paste the following code in its place
 
Code:

.locals 6
    .parameter "preferenceScreen"
    .parameter "preference"

    .prologue
    const/4 v1, 0x1

    .line 486
    iget-object v0, p0, Lcom/android/settings/DateTimeSettings;->mDatePref:Landroid/preference/Preference;

    if-ne p2, v0, :cond_1

    .line 487
    const/4 v0, 0x0

    invoke-virtual {p0, v0}, Lcom/android/settings/DateTimeSettings;->showDialog(I)V

    .line 497
    :cond_0
    :goto_0
    invoke-super {p0, p1, p2}, Lcom/android/settings/SettingsPreferenceFragment;->onPreferenceTreeClick(Landroid/preference/PreferenceScreen;Landroid/preference/Preference;)Z

    move-result v0

    return v0

    .line 488
    :cond_1
    iget-object v0, p0, Lcom/android/settings/DateTimeSettings;->mTimePref:Landroid/preference/Preference;

    if-ne p2, v0, :cond_2

    .line 490
    invoke-virtual {p0, v1}, Lcom/android/settings/DateTimeSettings;->removeDialog(I)V

    .line 491
    invoke-virtual {p0, v1}, Lcom/android/settings/DateTimeSettings;->showDialog(I)V

    goto :goto_0

    .line 492
    :cond_2
    iget-object v0, p0, Lcom/android/settings/DateTimeSettings;->mTime24Pref:Landroid/preference/Preference;

    if-ne p2, v0, :cond_4


    .line 493
    iget-object v0, p0, Lcom/android/settings/DateTimeSettings;->mTime24Pref:Landroid/preference/Preference;

    check-cast v0, Landroid/preference/CheckBoxPreference;

    invoke-virtual {v0}, Landroid/preference/CheckBoxPreference;->isChecked()Z

    move-result v0

    invoke-direct {p0, v0}, Lcom/android/settings/DateTimeSettings;->set24Hour(Z)V

    iget-object v1, p0, Lcom/android/settings/DateTimeSettings;->mHideAmPm:Landroid/preference/Preference;

    if-nez v0, :cond_3

    const/4 v0, 0x1

    goto :goto_1

    :cond_3
    const/4 v0, 0x0

    :goto_1
    invoke-virtual {v1, v0}, Landroid/preference/Preference;->setEnabled(Z)V

    .line 494
    :goto_2
    invoke-virtual {p0}, Lcom/android/settings/DateTimeSettings;->getActivity()Landroid/app/Activity;

    move-result-object v0

    invoke-virtual {p0, v0}, Lcom/android/settings/DateTimeSettings;->updateTimeAndDateDisplay(Landroid/content/Context;)V

    .line 495
    invoke-direct {p0}, Lcom/android/settings/DateTimeSettings;->timeUpdated()V

    goto :goto_0

    :cond_4
    const-string v3, "hide_ampm"

    iget-object v0, p0, Lcom/android/settings/DateTimeSettings;->mHideAmPm:Landroid/preference/Preference;

    if-ne p2, v0, :cond_5

    iget-object v0, p0, Lcom/android/settings/DateTimeSettings;->mHideAmPm:Landroid/preference/Preference;

    check-cast v0, Landroid/preference/CheckBoxPreference;

    invoke-virtual {v0}, Landroid/preference/CheckBoxPreference;->isChecked()Z

    move-result v2

    invoke-virtual {p0}, Lcom/android/settings/DateTimeSettings;->getContentResolver()Landroid/content/ContentResolver;

    move-result-object v3

    const-string v4, "hide_ampm"

    invoke-static {v3, v4, v2}, Landroid/provider/Settings$System;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z

    goto :goto_2

    :cond_5
    const-string v3, "hide_time"

    iget-object v0, p0, Lcom/android/settings/DateTimeSettings;->mHideTime:Landroid/preference/Preference;

    if-ne p2, v0, :cond_0

    iget-object v0, p0, Lcom/android/settings/DateTimeSettings;->mHideTime:Landroid/preference/Preference;

    check-cast v0, Landroid/preference/CheckBoxPreference;

    invoke-virtual {v0}, Landroid/preference/CheckBoxPreference;->isChecked()Z

    move-result v2

    invoke-virtual {p0}, Lcom/android/settings/DateTimeSettings;->getContentResolver()Landroid/content/ContentResolver;

    move-result-object v3

    const-string v4, "hide_time"

    invoke-static {v3, v4, v2}, Landroid/provider/Settings$System;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z

    if-nez v2, :cond_6

    const/4 v2, 0x1

    goto :goto_3

    :cond_6
    const/4 v2, 0x0

    :goto_3
    iget-object v1, p0, Lcom/android/settings/DateTimeSettings;->mHideAmPm:Landroid/preference/Preference;

    invoke-virtual {v1, v2}, Landroid/preference/Preference;->setEnabled(Z)V

    iget-object v1, p0, Lcom/android/settings/DateTimeSettings;->mTime24Pref:Landroid/preference/Preference;

    invoke-virtual {v1, v2}, Landroid/preference/Preference;->setEnabled(Z)V

    goto :goto_2
.end method



Thats it for SecSettins.apk. Recompile and push to /system/app and make sure the toggles are there. They wont function yet but they should be clickable at this point.

Decompile SystemUI

Navigate to smali/com/android/systemui/statusbar/policy/clock.smali

In the next step you will basically be C&P'ing the entire method. If you would like to use your editor to compare code and make only the changes you need thats fine, but for the sake of this guide and time, I am just having you copy and paste the entire method. I suggest you copy half the code and paste, then copy the other half and paste. Its too much to copy at one time..

Find the code
 
Code:

.method private final getSmallTime()Ljava/lang/CharSequence;


Starting with the very next line, delete everything up to and including the first ".end Method" you come to and paste (half at a time as described above) the following code in its place
 
Code:

.locals 22


    invoke-virtual/range {p0 .. p0}, Lcom/android/systemui/statusbar/policy/Clock;->getContext()Landroid/content/Context;

    move-result-object v8

    invoke-virtual {v8}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;

    move-result-object v2

    const-string v7, "hide_time"

    const/4 v0, 0x0

    invoke-static {v2, v7, v0}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

    move-result v7

    const/4 v0, 0x0

    if-eqz v7, :cond_0

    const/16 v0, 0x8

    :cond_0
    const v1, 0x7f0f0027

    move-object/from16 v2, p0

    invoke-virtual {v2, v1}, Landroid/view/View;->findViewById(I)Landroid/view/View;

    move-result-object v1

    invoke-virtual {v1, v0}, Landroid/view/View;->setVisibility(I)V

    invoke-static {v8}, Landroid/text/format/DateFormat;->is24HourFormat(Landroid/content/Context;)Z

    move-result v6

    if-eqz v6, :cond_5

    const v16, 0x104007e

    :goto_0
    const v2, 0xef00

    const v3, 0xef01

    move/from16 v0, v16

    invoke-virtual {v8, v0}, Landroid/content/Context;->getString(I)Ljava/lang/String;

    move-result-object v9

    if-nez v6, :cond_1

    invoke-virtual {v8}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;

    move-result-object v2

    const-string v3, "hide_ampm"

    const/4 v0, 0x0

    invoke-static {v2, v3, v0}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

    move-result v7

    const-string v0, "ampm"

    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, "getint returned="

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-static {v0, v1}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I

    move v2, v7

    if-eqz v2, :cond_1

    const-string v9, "h:mm"

    :cond_1
    move-object/from16 v0, p0

    iget-object v0, v0, Lcom/android/systemui/statusbar/policy/Clock;->mClockFormatString:Ljava/lang/String;

    move-object/from16 v20, v0

    move-object/from16 v0, v20

    invoke-virtual {v9, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v20

    if-eqz v20, :cond_2

    if-nez v6, :cond_a

    move-object/from16 v0, p0

    iget-boolean v0, v0, Lcom/android/systemui/statusbar/policy/Clock;->mLocaleChanged:Z

    move/from16 v20, v0

    if-eqz v20, :cond_a

    :cond_2
    const/16 v20, 0x0

    move/from16 v0, v20

    move-object/from16 v1, p0

    iput-boolean v0, v1, Lcom/android/systemui/statusbar/policy/Clock;->mLocaleChanged:Z

    sget v20, Lcom/android/systemui/statusbar/policy/Clock;->AM_PM_STYLE:I

    if-eqz v20, :cond_9

    const/4 v4, -0x1

    const/4 v15, 0x0

    const/4 v11, 0x0

    :goto_1
    invoke-virtual {v9}, Ljava/lang/String;->length()I

    move-result v20

    move/from16 v0, v20

    if-ge v11, v0, :cond_4

    invoke-virtual {v9, v11}, Ljava/lang/String;->charAt(I)C

    move-result v7

    const/16 v20, 0x27

    move/from16 v0, v20

    if-ne v7, v0, :cond_3

    if-nez v15, :cond_6

    const/4 v15, 0x1

    :cond_3
    :goto_2
    if-nez v15, :cond_7

    const/16 v20, 0x61

    move/from16 v0, v20

    if-ne v7, v0, :cond_7

    move v4, v11

    :cond_4
    if-ltz v4, :cond_9

    move v5, v4

    :goto_3
    if-lez v4, :cond_8

    add-int/lit8 v20, v4, -0x1

    move/from16 v0, v20

    invoke-virtual {v9, v0}, Ljava/lang/String;->charAt(I)C

    move-result v20

    invoke-static/range {v20 .. v20}, Ljava/lang/Character;->isWhitespace(C)Z

    move-result v20

    if-eqz v20, :cond_8

    add-int/lit8 v4, v4, -0x1

    goto :goto_3

    :cond_5
    const v16, 0x104007d

    goto/16 :goto_0

    :cond_6
    const/4 v15, 0x0

    goto :goto_2

    :cond_7
    add-int/lit8 v11, v11, 0x1

    goto :goto_1

    :cond_8
    new-instance v20, Ljava/lang/StringBuilder;

    invoke-direct/range {v20 .. v20}, Ljava/lang/StringBuilder;-><init>()V

    const/16 v21, 0x0

    move/from16 v0, v21

    invoke-virtual {v9, v0, v4}, Ljava/lang/String;->substring(II)Ljava/lang/String;

    move-result-object v21

    invoke-virtual/range {v20 .. v21}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v20

    const v21, 0xef00

    invoke-virtual/range {v20 .. v21}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;

    move-result-object v20

    invoke-virtual {v9, v4, v5}, Ljava/lang/String;->substring(II)Ljava/lang/String;

    move-result-object v21

    invoke-virtual/range {v20 .. v21}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v20

    const-string v21, "a"

    invoke-virtual/range {v20 .. v21}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v20

    const v21, 0xef01

    invoke-virtual/range {v20 .. v21}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;

    move-result-object v20

    add-int/lit8 v21, v5, 0x1

    move/from16 v0, v21

    invoke-virtual {v9, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String;

    move-result-object v21

    invoke-virtual/range {v20 .. v21}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v20

    invoke-virtual/range {v20 .. v20}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v9

    :cond_9
    new-instance v18, Ljava/text/SimpleDateFormat;

    move-object/from16 v0, v18

    invoke-direct {v0, v9}, Ljava/text/SimpleDateFormat;-><init>(Ljava/lang/String;)V

    move-object/from16 v0, v18

    move-object/from16 v1, p0

    iput-object v0, v1, Lcom/android/systemui/statusbar/policy/Clock;->mClockFormat:Ljava/text/SimpleDateFormat;

    move-object/from16 v0, p0

    iput-object v9, v0, Lcom/android/systemui/statusbar/policy/Clock;->mClockFormatString:Ljava/lang/String;

    :goto_4
    move-object/from16 v0, p0

    iget-object v0, v0, Lcom/android/systemui/statusbar/policy/Clock;->mCalendar:Ljava/util/Calendar;

    move-object/from16 v20, v0

    invoke-virtual/range {v20 .. v20}, Ljava/util/Calendar;->getTime()Ljava/util/Date;

    move-result-object v20

    move-object/from16 v0, v18

    move-object/from16 v1, v20

    invoke-virtual {v0, v1}, Ljava/text/SimpleDateFormat;->format(Ljava/util/Date;)Ljava/lang/String;

    move-result-object v17

    sget v20, Lcom/android/systemui/statusbar/policy/Clock;->AM_PM_STYLE:I

    if-eqz v20, :cond_e

    const v20, 0xef00

    move-object/from16 v0, v17

    move/from16 v1, v20

    invoke-virtual {v0, v1}, Ljava/lang/String;->indexOf(I)I

    move-result v12

    const v20, 0xef01

    move-object/from16 v0, v17

    move/from16 v1, v20

    invoke-virtual {v0, v1}, Ljava/lang/String;->indexOf(I)I

    move-result v13

    if-ltz v12, :cond_e

    if-le v13, v12, :cond_e

    new-instance v10, Landroid/text/SpannableStringBuilder;

    move-object/from16 v0, v17

    invoke-direct {v10, v0}, Landroid/text/SpannableStringBuilder;-><init>(Ljava/lang/CharSequence;)V

    sget v20, Lcom/android/systemui/statusbar/policy/Clock;->AM_PM_STYLE:I

    const/16 v21, 0x2

    move/from16 v0, v20

    move/from16 v1, v21

    if-ne v0, v1, :cond_b

    add-int/lit8 v20, v13, 0x1

    move/from16 v0, v20

    invoke-virtual {v10, v12, v0}, Landroid/text/SpannableStringBuilder;->delete(II)Landroid/text/SpannableStringBuilder;

    :goto_5
    return-object v10

    :cond_a
    move-object/from16 v0, p0

    iget-object v0, v0, Lcom/android/systemui/statusbar/policy/Clock;->mClockFormat:Ljava/text/SimpleDateFormat;

    move-object/from16 v18, v0

    goto :goto_4

    :cond_b
    sget v20, Lcom/android/systemui/statusbar/policy/Clock;->AM_PM_STYLE:I

    const/16 v21, 0x1

    move/from16 v0, v20

    move/from16 v1, v21

    if-ne v0, v1, :cond_d

    const v14, 0x3f333333

    sget-boolean v20, Lcom/android/systemui/statusbar/StatusBar;->useTouchWizGUI:Z

    if-eqz v20, :cond_c

    sget-boolean v20, Lcom/android/systemui/statusbar/StatusBar;->canStatusBarHide:Z

    if-nez v20, :cond_c

    const/high16 v14, 0x3f00

    :cond_c
    new-instance v19, Landroid/text/style/RelativeSizeSpan;

    move-object/from16 v0, v19

    invoke-direct {v0, v14}, Landroid/text/style/RelativeSizeSpan;-><init>(F)V

    const/16 v20, 0x22

    move-object/from16 v0, v19

    move/from16 v1, v20

    invoke-virtual {v10, v0, v12, v13, v1}, Landroid/text/SpannableStringBuilder;->setSpan(Ljava/lang/Object;III)V

    :cond_d
    add-int/lit8 v20, v13, 0x1

    move/from16 v0, v20

    invoke-virtual {v10, v13, v0}, Landroid/text/SpannableStringBuilder;->delete(II)Landroid/text/SpannableStringBuilder;

    add-int/lit8 v20, v12, 0x1

    move/from16 v0, v20

    invoke-virtual {v10, v12, v0}, Landroid/text/SpannableStringBuilder;->delete(II)Landroid/text/SpannableStringBuilder;

    goto :goto_5

    :cond_e
    move-object/from16 v10, v17

    goto :goto_5
.end method



Thats it for clock.smali

Navigate to smali/com/android/systemui/statusbar/phone/PhoneStatusBar.smali

Find the code
 
Code:

.method public showClock(Z)V


Starting with the very next line, delete everything up to and including the first ".end Method" you come to and paste the following code in its place
 
Code:

.locals 3

    iget-object v1, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    const v2, 0x7f0f0027

    invoke-virtual {v1, v2}, Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;->findViewById(I)Landroid/view/View;

    move-result-object v0

    if-eqz v0, :cond_1

    if-eqz p1, :cond_2

    const/4 v1, 0x0

    iget-object v2, p0, Lcom/android/systemui/SystemUI;->mContext:Landroid/content/Context;

    invoke-virtual {v2}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;

    move-result-object v2

    const-string p0, "hide_time"

    invoke-static {v2, p0, v1}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

    move-result v2

    if-eqz v2, :cond_0

    const/16 v1, 0x8

    :cond_0
    :goto_0
    invoke-virtual {v0, v1}, Landroid/view/View;->setVisibility(I)V

    :cond_1

    return-void

    :cond_2

    const/16 v1, 0x8

    goto :goto_0
.end method



Thats it for the toggles, if you want you can recompile and push APK's to /system/app or you can continue adding some more functions below.


THIS PART OF THE CODE WILL CENTER THE CLOCK IN THE STATUS BAR

Still in SystemUI.apk

Navigate to res/layout/tw_status_bar.xml

Find the following code and DELETE it
 
Code:

<com.android.systemui.statusbar.policy.Clock android:textSize="@dimen/status_bar_clock_text_size" android:textColor="#ff959595" android:gravity="left|center" android:id="@id/clock" android:paddingLeft="3.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:includeFontPadding="false" />


FInd the following code
 
Code:

xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">


Add this right below it
 
Code:

<LinearLayout android:gravity="center" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent">
        <com.android.systemui.statusbar.policy.Clock android:textSize="@dimen/status_bar_clock_text_size" android:textColor="#ff959595" android:gravity="center" android:id="@id/clock" android:paddingTop="3.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:includeFontPadding="false" android:layout_weight="1.0" />
    </LinearLayout>



Find the following code
 
Code:

<LinearLayout android:orientation="horizontal" android:id="@id/ticker" android:paddingLeft="6.0dip" android:animationCache="false" android:layout_width="fill_parent" android:layout_height="fill_parent">


Change it to this
 
Code:

<LinearLayout android:orientation="horizontal" android:id="@id/ticker" android:background="@drawable/status_bar_bg_tile" android:paddingLeft="6.0dip" android:animationCache="false" android:layout_width="fill_parent" android:layout_height="fill_parent">



THIS PART WILL MAKE THE AM/PM A SIZE SMALLER

Navigate to smali/com/android/systemui/statusbar/policy/clock.smali

Find the following code and remove whats in red and add whats in green
 
Code:

# direct methods
.method static constructor <clinit>()V
    .locals 1

    .prologue
    .line 78
  const/4 v0, 0x0
    const/4 v0, 0x1

    sput v0, Lcom/android/systemui/statusbar/policy/Clock;->AM_PM_STYLE:I

    return-void
.end method



Thats it!!

Recompile
Chmod 644
Push to /system/app or create a zip and flash away.


IF YOU LIKE THIS MOD HIT THE THANKS BUTTON


Viewing all articles
Browse latest Browse all 352

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>