[Guide] Add "Clock" option in Settings

Search This thread

05Gurpreet

Member
Jan 29, 2014
42
93
Delhi
In this guide , I will tell "How to add Clock" option in Settings. :)
Will work only on 4.4

REQUIREMENTS :
1. Brain
2. Apktool (2.0.0)
3. Notepad ++
4. Knowledge on How to Decompile/Recompile the apk


Lets start ,

NOTE : Those are not having the "colorpicker" folder in Settings/smali/net/margaritov/preference and having any other colorpicker in different location then open the "status_bar_clock_style" and edit this line by changing the path of colorpicker in this line.
PHP:
<net.margaritov.preference.colorpicker.ColorPickerPreference android:title="@string/battery_bar_color" android:key="battery_bar_color" android:defaultValue="\#ffffff" alphaSlider="true" />
Those who are not having any color picker , first add that using guide whose link is given below.


Settings.apk Modding

1. First Decompile your Settings.apk and merge the files (given below).

2. Now add this line in display_settings.xml or any other xml present in Settings.apk/res/xml.
PHP:
<PreferenceScreen android:title="@string/statusbar_clock" android:key="statusbar_clock" android:summary="@string/statusbar_clock_summary" android:fragment="com.android.settings.gurpreet.statusbarclock.StatusBarClockStyle" />

3. Now open strings.xml and add these lines above </resources>.
PHP:
<string name="statusbar_clock">Clock and Date</string>
    <string name="statusbar_clock_summary">Change the clock and date style</string>
    <string name="clock_title_enable">Alignment</string>
    <string name="clock_enabled">Enabled</string>
    <string name="clock_disabled">Disabled</string>
    <string name="clock_color_title">Color</string>
    <string name="status_bar_clock_style_reset">Reset color</string>
    <string name="status_bar_show_clock_title">Show clock and date</string>
    <string name="status_bar_am_pm_title">AM/PM</string>
    <string name="status_bar_am_pm_info">24-hour clock is enabled</string>
    <string name="enable_clock_weekday">Day of the week</string>
    <string name="enable_clock_weekday_summary">Abbreviated day of the week before the time</string>
    <string name="right_clock">Right clock</string>
    <string name="center_clock">Center clock</string>
    <string name="left_clock">Left clock</string>
    <string name="dont_show">"Don't show"</string>
    <string name="clock_date_display">Date</string>
    <string name="clock_date_display_summary">Display custom date before the clock</string>
    <string name="clock_date_style">Date style</string>
    <string name="clock_date_format">Date format</string>
    <string name="clock_date_string_edittext_title">Must be in DateFormat eg. MM/dd/yy</string>
    <string name="clock_date_string_edittext_summary">Enter string</string>
    <string name="am_pm_clock_normal">Normal font size</string>
    <string name="am_pm_clock_small">Small font size</string>
    <string name="am_pm_clock_none">"Don't show"</string>
    <string name="clock_date_display_none">"Don't show"</string>
    <string name="clock_date_display_small">Small font size</string>
    <string name="clock_date_display_normal">Normal font size</string>
    <string name="clock_date_style_normal">Normal</string>
    <string name="clock_date_style_lowercase">Lowercase</string>
    <string name="clock_date_style_uppercase">Uppercase</string>
    <string name="clock_date_format_custom">Custom java format</string>
    <string name="status_bar_clock_style_reset_message">Reset clock color?</string>
    <string name="clock_font_style_title">Font styles</string>
    <string name="clock_font_bold">Bold</string>
    <string name="clock_font_condensed">Condensed</string>
    <string name="clock_font_light">Light</string>
    <string name="clock_font_light_italic">Light italic</string>
    <string name="clock_font_normal">Normal</string>
    <string name="color_default">Default</string>
    <string name="clock_use_second">Enable Seconds</string>
    <string name="clock_use_second_summary">Shows the seconds next to the clock</string>

4. Now open array.xml and add these lines above </resources>.
PHP:
<string-array name="clock_style_entries">
        <item>@string/right_clock</item>
        <item>@string/center_clock</item>
		<item>@string/left_clock</item>
    </string-array>
    <string-array name="clock_style_values">
        <item>0</item>
        <item>1</item>
		<item>2</item>
    </string-array>
    <string-array name="entries_status_bar_am_pm">
        <item>@string/am_pm_clock_none</item>
        <item>@string/am_pm_clock_small</item>
        <item>@string/am_pm_clock_normal</item>
    </string-array>
    <string-array name="values_status_bar_am_pm">
        <item>0</item>
        <item>1</item>
        <item>2</item>
    </string-array>
    <string-array name="clock_date_display_entries">
        <item>@string/clock_date_display_none</item>
        <item>@string/clock_date_display_small</item>
        <item>@string/clock_date_display_normal</item>
    </string-array>
    <string-array name="clock_date_display_values">
        <item>0</item>
        <item>1</item>
        <item>2</item>
    </string-array>
    <string-array name="clock_date_style_entries">
        <item>@string/clock_date_style_normal</item>
        <item>@string/clock_date_style_lowercase</item>
        <item>@string/clock_date_style_uppercase</item>
    </string-array>
    <string-array name="clock_date_style_values">
        <item>0</item>
        <item>1</item>
        <item>2</item>
    </string-array>
    <string-array name="clock_date_format_entries_values">
        <item>dd/MM/yy</item>
        <item>MM/dd/yy</item>
        <item>yyyy-MM-dd</item>
        <item>yyyy-dd-MM</item>
        <item>dd-MM-yyyy</item>
        <item>MM-dd-yyyy</item>
        <item>MMM dd</item>
        <item>MMM dd, yyyy</item>
        <item>MMMM dd, yyyy</item>
        <item>EEE</item>
        <item>EEE dd</item>
        <item>EEE dd/MM</item>
        <item>EEE MM/dd</item>
        <item>EEE dd MMM</item>
        <item>EEE MMM dd</item>
        <item>EEE MMMM dd</item>
        <item>EEEE dd/MM</item>
        <item>EEEE MM/dd</item>
        <item>@string/clock_date_format_custom</item>
    </string-array>
	<string-array name="clock_font_style_entries">
        <item>@string/clock_font_bold</item>
        <item>@string/clock_font_condensed</item>
        <item>@string/clock_font_light</item>
        <item>@string/clock_font_light_italic</item>
        <item>@string/clock_font_normal</item>
    </string-array>
    <string-array name="clock_font_style_values">
        <item>0</item>
        <item>1</item>
        <item>2</item>
        <item>3</item>
        <item>4</item>
    </string-array>

5. Now Recompile your Settings.apk , Sign it and again Decompile it.

6. Now open StatusBarClockStyle.smali and replace the ids with the ids present in public.xml of your Settings.apk

0x7f050077
PHP:
<public type="xml" name="status_bar_clock_style"

0x7f0200cd
PHP:
<public type="drawable" name="ic_settings_clock"

0x7f0800a4
PHP:
<public type="string" name="color_default"

0x7f0800cd
PHP:
<public type="string" name="status_bar_am_pm_info"

0x7f0a0078
PHP:
<public type="array" name="clock_date_format_entries_values"

0x7f08007c
PHP:
<public type="string" name="reset"
Do this with other same id.

0x7f0800e3
PHP:
<public type="string" name="status_bar_clock_style_reset_message"

0x7f08007b
PHP:
<public type="string" name="ok"

0x7f08066e
PHP:
<public type="string" name="cancel"

0x7f0200c4
PHP:
    <public type="drawable" name="ic_settings_backup"

0x7f0800d7
PHP:
<public type="string" name="clock_date_string_edittext_title"

0x7f0800d8
PHP:
<public type="string" name="clock_date_string_edittext_summary"

0x7f080bcb
PHP:
<public type="string" name="menu_save"

0x7f080bcc
PHP:
<public type="string" name="menu_cancel"



SystemUI.apk Modding

1. First Decompile your SystemUI.apk and merge the files inside it (given below).

2. Now go to SystemUI.apk\res\layout\gemini_status_bar.xml and open it.

Add these lines in the xml. Compare with the "gemini_status_bar.xml" given in the guide.

PHP:
<com.android.systemui.statusbar.policy.ClockLeft android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:gravity="left|center" android:id="@id/left_clock" android:paddingLeft="6.0dip" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />

PHP:
<com.android.systemui.statusbar.policy.ClockCenter android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:gravity="center" android:id="@id/center_clock" android:paddingLeft="6.0dip" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />

PHP:
<LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/center_clock_layout" android:layout_width="fill_parent" android:layout_height="fill_parent">
        <com.android.systemui.statusbar.policy.ClockCenter android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:gravity="center" android:id="@id/center_clock" android:paddingLeft="6.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />
    </LinearLayout>

NOTE: To solve the issue of overlapping of other things with clock in statusbar , follow this.

• Find this line ,
PHP:
<LinearLayout android:orientation="horizontal" android:id="@id/notification_icon_area" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0">

• Replace with this line ,
PHP:
<LinearLayout android:gravity="left" android:orientation="horizontal" android:id="@id/notification_icon_area" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0">

• Now again find this line ,
PHP:
<LinearLayout android:orientation="horizontal" android:id="@id/system_icon_area" android:layout_width="wrap_content" android:layout_height="fill_parent">

• Replace with this line ,
PHP:
 <LinearLayout android:gravity="right" android:orientation="horizontal" android:id="@id/system_icon_area" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0">

3. Now go to SystemUI.apk\res\values\ids.xml and open it. Now add these above </resources>.
PHP:
<item type="id" name="left_clock">false</item>
    <item type="id" name="clock_stock">false</item>
    <item type="id" name="center_clock_layout">false</item>
    <item type="id" name="center_clock">false</item>

4. Now go to SystemUI.apk\res\values\colors.xml and open it. Now add this above </resources>.
PHP:
<color name="status_bar_clock_color">#ffffffff</color>

5. Now Recompile your SystemUI.apk , Sign it and then again Decompile it.

6. Now go to SystemUI.apk\smali\com\android\systemui\statusbar\phone\PhoneStatusBar.smali

• Add this line ,
HTML:
.field mCenterClockLayout:Landroid/widget/LinearLayout;

Like this ,
HTML:
.field private mCarrierLabelVisible:Z

.field mCenterClockLayout:Landroid/widget/LinearLayout;

.field private final mCheckBarModes:Ljava/lang/Runnable;

• Now again , Add this line
HTML:
.field private mShowClock:Z

Like this ,
HTML:
.field private mShowCarrierInPanel:Z

.field private mShowClock:Z

.field private mShowSearchHoldoff:I

7. Now find this method ,
HTML:
.method protected makeStatusBarView()Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

• Now find these lines in this method ,
HTML:
iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    const v2, 0x7f070052

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

    move-result-object v1

    check-cast v1, Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarContents:Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

• Now copy these lines and paste it below the lines that you have copied , like this
HTML:
iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    const v2, 0x7f070052

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

    move-result-object v1

    check-cast v1, Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarContents:Landroid/widget/LinearLayout;

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

    const v2, 0x7f070052

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

    move-result-object v1

    check-cast v1, Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarContents:Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

• Now replace the second last line of pasted lines with this ,
HTML:
iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mCenterClockLayout:Landroid/widget/LinearLayout;

• The final will look like this ,
HTML:
iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    const v2, 0x7f070052

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

    move-result-object v1

    check-cast v1, Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarContents:Landroid/widget/LinearLayout;

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

    const v2, 0x7f0?????

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

    move-result-object v1

    check-cast v1, Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mCenterClockLayout:Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

8. Now replace this id in "PhoneStatusBar.smali" with the id present in public.xml of your SystemUI.apk

0x7f0?????
PHP:
<public type="id" name="center_clock_layout"

9. Now find this method ,
HTML:
.method public showClock(Z)V

• Now delete whole lines between these ,

HTML:
.method public showClock(Z)V
-
-
-
.end method

• Now copy these lines between these ,
HTML:
.locals 10
    
    .prologue
    const/4 v9, -0x2

    const/4 v1, 0x1

    const/4 v2, 0x0

    const/16 v4, 0x8

    .line 3874
    iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    if-nez v0, :cond_1

    .line 3894
    :cond_0
    :goto_0
    return-void

    .line 3875
    :cond_1
    iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mContext:Landroid/content/Context;

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

    move-result-object v3

    .line 3876
    iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    const v5, 0x7f07005d

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

    move-result-object v5

    .line 3877
    iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    const v6, 0x7f0700db

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

    move-result-object v6

    .line 3878
    iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    const v7, 0x7f0700d8

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

    move-result-object v7

    .line 3879
    const-string v0, "status_bar_clock"

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

    move-result v0

    if-ne v0, v1, :cond_5

    move v0, v1

    .line 3882
    :goto_1
    const-string v8, "statusbar_clock_style"

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

    move-result v8

    .line 3885
    if-nez v8, :cond_2

    if-eqz v5, :cond_2

    .line 3886
    if-eqz p1, :cond_7

    if-eqz v0, :cond_6

    move v3, v2

    :goto_2
    invoke-virtual {v5, v3}, Landroid/view/View;->setVisibility(I)V

    .line 3888
    :cond_2
    if-ne v8, v1, :cond_3

    if-eqz v6, :cond_3

    .line 3889
    if-eqz p1, :cond_9

    if-eqz v0, :cond_8

    move v1, v2

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

    .line 3891
    :cond_3
    const/4 v1, 0x2

    if-ne v8, v1, :cond_0

    if-eqz v7, :cond_0

    .line 3892
    if-eqz p1, :cond_4

    if-eqz v0, :cond_4

    move v4, v2

    :cond_4
    invoke-virtual {v7, v4}, Landroid/view/View;->setVisibility(I)V

    goto :goto_0

    :cond_5
    move v0, v2

    .line 3879
    goto :goto_1

    :cond_6
    move v3, v4

    .line 3886
    goto :goto_2

    :cond_7
    move v3, v4

    goto :goto_2

    :cond_8
    move v1, v4

    .line 3889
    goto :goto_3

    :cond_9
    move v1, v4

    goto :goto_3

10. Now replace these ids in the above method with the ids present in public.xml of your SystemUI.apk

0x7f07005d
PHP:
<public type="id" name="clock"

0x7f0700db
PHP:
<public type="id" name="center_clock"

0x7f0700d8
PHP:
<public type="id" name="left_clock"

11. Now go to SystemUI.apk\smali\com\android\systemui\statusbar\policy\Clock.smali and open it. Now replace the id with the id present in public.xml of your SystemUI.apk

0x7f080009
PHP:
<public type="color" name="status_bar_clock_color"

12. Done , now Recompile your SystemUI.apk and Sign it.

Important Information :

• In step no. 7 , if in these lines
HTML:
iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    const v2, 0x7f070052

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

    move-result-object v1

    check-cast v1, Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarContents:Landroid/widget/LinearLayout;

	.line 523                          <--------- Like This ----------->
    move-object/from16 v0, p0

• The line above line "move-object/from16 v0, p0" is having line like this (may be any no.) , then after the copying and replacing (as mentioned in step 7) , it will look like this.
HTML:
iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    const v2, 0x7f070052

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

    move-result-object v1

    check-cast v1, Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarContents:Landroid/widget/LinearLayout;

	.line 523                          <--------- 1 ----------->
    move-object/from16 v0, p0
	
	iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    const v2, 0x7f0?????  (<public type="id" name="center_clock_layout") 

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

    move-result-object v1

    check-cast v1, Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mCenterClockLayout:Landroid/widget/LinearLayout;

	.line 523                          <--------- 2 ----------->
    move-object/from16 v0, p0

• Then in 2nd case , change the line number by adding 1. In this case add 1 to 523 and it will become 524. (If line 524 is already there in smali , then add 2 means 523+2 and so on). the final will look like this ,
HTML:
iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    const v2, 0x7f070052

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

    move-result-object v1

    check-cast v1, Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarContents:Landroid/widget/LinearLayout;

	.line 523                          <--------- 1 ----------->
    move-object/from16 v0, p0
	
	iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    const v2, 0x7f0?????  (<public type="id" name="center_clock_layout") 

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

    move-result-object v1

    check-cast v1, Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mCenterClockLayout:Landroid/widget/LinearLayout;

	.line 524                         <--------- 2 (Changed here)----------->
    move-object/from16 v0, p0

• Now follow the above remaining steps given in guide.



Special Thanks To :
1. DU_Flo ROM (Extracted from this ROM)
2. Vanya Melnechenko
3. MAAaD
4. XDA
5. Raj Shekhar (For testing the guide & screenshots)
 

Attachments

  • Settings.apk.rar
    21.3 KB · Views: 532
  • SystemUI.apk.rar
    16 KB · Views: 490

05Gurpreet

Member
Jan 29, 2014
42
93
Delhi
Screenshots

r8fgo4qi.jpg

sfnr8p57.jpg

exlx6vsz.jpg

k62jdim5.jpg

pxp6433p.jpg

c2hot4mj.jpg

85cd7a5v.jpg

yot9ndta.jpg

yot9ndta.jpg
 
Last edited:

neonixxx

Senior Member
May 17, 2010
313
133
Nice! I don't need this personally since it's a defacto feature in every custom rom these days, but it's cool to see a well done guide for adding this into roms that don't have it!
 
  • Like
Reactions: 05Gurpreet

Huncriter

Senior Member
Aug 24, 2011
111
13
i get settings FC when i tried to open clock and date style option

Code:
I/dalvikvm( 1950): Could not find method com.android.settings.gurpreet.statusbarclock.StatusBarClockStyle$1.<init>, referenced from method com.android.settings.gurpreet.statusbarclock.StatusBarClockStyle.onPreferenceChange

W/dalvikvm( 1950): VFY: unable to resolve direct method 11406: Lcom/android/settings/gurpreet/statusbarclock/StatusBarClockStyle$1;.<init> (Lcom/android/settings/gurpreet/statusbarclock/StatusBarClockStyle;Landroid/widget/EditText;)V

D/dalvikvm( 1950): VFY: replacing opcode 0x70 at 0x01a2

D/AndroidRuntime( 1950): Shutting down VM

W/dalvikvm( 1950): threadid=1: thread exiting with uncaught exception (group=0x415abc20)

E/AndroidRuntime( 1950): FATAL EXCEPTION: main

E/AndroidRuntime( 1950): Process: com.android.settings, PID: 1950

E/AndroidRuntime( 1950): android.content.res.Resources$NotFoundException: File Hacer copia de seguridad de configuración from drawable resource ID #0x7f080ae7

E/AndroidRuntime( 1950): 	at android.content.res.Resources.loadDrawable(Resources.java:2255)

E/AndroidRuntime( 1950): 	at android.content.res.Resources.getDrawable(Resources.java:733)

E/AndroidRuntime( 1950): 	at android.content.res.Resources.getDrawable(Resources.java:711)

E/AndroidRuntime( 1950): 	at com.android.internal.view.menu.MenuItemImpl.getIcon(MenuItemImpl.java:388)

E/AndroidRuntime( 1950): 	at com.android.internal.view.menu.ActionMenuItemView.initialize(ActionMenuItemView.java:105)

E/AndroidRuntime( 1950): 	at com.android.internal.view.menu.ActionMenuPresenter.bindItemView(ActionMenuPresenter.java:179)

E/AndroidRuntime( 1950): 	at com.android.internal.view.menu.BaseMenuPresenter.getItemView(BaseMenuPresenter.java:178)

E/AndroidRuntime( 1950): 	at com.android.internal.view.menu.ActionMenuPresenter.getItemView(ActionMenuPresenter.java:165)

E/AndroidRuntime( 1950): 	at com.android.internal.view.menu.ActionMenuPresenter.flagActionItems(ActionMenuPresenter.java:463)

E/AndroidRuntime( 1950): 	at com.android.internal.view.menu.MenuBuilder.flagActionItems(MenuBuilder.java:1062)

E/AndroidRuntime( 1950): 	at com.android.internal.view.menu.BaseMenuPresenter.updateMenuView(BaseMenuPresenter.java:87)

E/AndroidRuntime( 1950): 	at com.android.internal.view.menu.ActionMenuPresenter.updateMenuView(ActionMenuPresenter.java:218)

E/AndroidRuntime( 1950): 	at com.android.internal.view.menu.MenuBuilder.dispatchPresenterUpdate(MenuBuilder.java:244)

E/AndroidRuntime( 1950): 	at com.android.internal.view.menu.MenuBuilder.onItemsChanged(MenuBuilder.java:956)

E/AndroidRuntime( 1950): 	at com.android.internal.view.menu.MenuBuilder.startDispatchingItemsChanged(MenuBuilder.java:979)

E/AndroidRuntime( 1950): 	at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:532)

E/AndroidRuntime( 1950): 	at com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:853)

E/AndroidRuntime( 1950): 	at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:273)

E/AndroidRuntime( 1950): 	at android.os.Handler.handleCallback(Handler.java:733)

E/AndroidRuntime( 1950): 	at android.os.Handler.dispatchMessage(Handler.java:95)

E/AndroidRuntime( 1950): 	at android.os.Looper.loop(Looper.java:136)

E/AndroidRuntime( 1950): 	at android.app.ActivityThread.main(ActivityThread.java:5179)

E/AndroidRuntime( 1950): 	at java.lang.reflect.Method.invokeNative(Native Method)

E/AndroidRuntime( 1950): 	at java.lang.reflect.Method.invoke(Method.java:515)

E/AndroidRuntime( 1950): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732)

E/AndroidRuntime( 1950): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)

E/AndroidRuntime( 1950): 	at dalvik.system.NativeStart.main(Native Method)

E/AndroidRuntime( 1950): Caused by: java.io.FileNotFoundException: Hacer copia de seguridad de configuración

E/AndroidRuntime( 1950): 	at android.content.res.AssetManager.openNonAssetNative(Native Method)

E/AndroidRuntime( 1950): 	at android.content.res.AssetManager.openNonAsset(AssetManager.java:427)

E/AndroidRuntime( 1950): 	at android.content.res.Resources.loadDrawable(Resources.java:2246)

E/AndroidRuntime( 1950): 	... 26 more

W/ActivityManager(  728):   Force finishing activity com.android.settings/.SubSettings

W/ActivityManager(  728):   Force finishing activity com.android.settings/.SubSettings

W/ActivityManager(  728): Activity pause timeout for ActivityRecord{41db0dd8 u0 com.android.settings/.SubSettings t3 f}

I/AudioHardwareMSM72XX(  371): disabling post proc features with mask 0x0000
 

itsraj011

Senior Member
Feb 14, 2015
159
394

In this guide , I will tell "How to add Clock" option in Settings. :)
Will work only on 4.4

REQUIREMENTS :
1. Brain
2. Apktool (2.0.0)
3. Notepad ++
4. Knowledge on How to Decompile/Recompile the apk


Lets start ,

NOTE : Those are not having the "colorpicker" folder in Settings/smali/net/margaritov/preference and having any other colorpicker in different location then open the "status_bar_clock_style" and edit this line by changing the path of colorpicker in this line.
PHP:
<net.margaritov.preference.colorpicker.ColorPickerPreference android:title="@string/battery_bar_color" android:key="battery_bar_color" android:defaultValue="\#ffffff" alphaSlider="true" />
Those who are not having any color picker , first add that using guide whose link is given below.


Settings.apk Modding

1. First Decompile your Settings.apk and merge the files (given below).

2. Now add this line in display_settings.xml or any other xml present in Settings.apk/res/xml.
PHP:
<PreferenceScreen android:title="@string/statusbar_clock" android:key="statusbar_clock" android:summary="@string/statusbar_clock_summary" android:fragment="com.android.settings.gurpreet.statusbarclock.StatusBarClockStyle" />

3. Now open strings.xml and add these lines above </resources>.
PHP:
<string name="statusbar_clock">Clock and Date</string>
    <string name="statusbar_clock_summary">Change the clock and date style</string>
    <string name="clock_title_enable">Alignment</string>
    <string name="clock_enabled">Enabled</string>
    <string name="clock_disabled">Disabled</string>
    <string name="clock_color_title">Color</string>
    <string name="status_bar_clock_style_reset">Reset color</string>
    <string name="status_bar_show_clock_title">Show clock and date</string>
    <string name="status_bar_am_pm_title">AM/PM</string>
    <string name="status_bar_am_pm_info">24-hour clock is enabled</string>
    <string name="enable_clock_weekday">Day of the week</string>
    <string name="enable_clock_weekday_summary">Abbreviated day of the week before the time</string>
    <string name="right_clock">Right clock</string>
    <string name="center_clock">Center clock</string>
    <string name="left_clock">Left clock</string>
    <string name="dont_show">"Don't show"</string>
    <string name="clock_date_display">Date</string>
    <string name="clock_date_display_summary">Display custom date before the clock</string>
    <string name="clock_date_style">Date style</string>
    <string name="clock_date_format">Date format</string>
    <string name="clock_date_string_edittext_title">Must be in DateFormat eg. MM/dd/yy</string>
    <string name="clock_date_string_edittext_summary">Enter string</string>
    <string name="am_pm_clock_normal">Normal font size</string>
    <string name="am_pm_clock_small">Small font size</string>
    <string name="am_pm_clock_none">"Don't show"</string>
    <string name="clock_date_display_none">"Don't show"</string>
    <string name="clock_date_display_small">Small font size</string>
    <string name="clock_date_display_normal">Normal font size</string>
    <string name="clock_date_style_normal">Normal</string>
    <string name="clock_date_style_lowercase">Lowercase</string>
    <string name="clock_date_style_uppercase">Uppercase</string>
    <string name="clock_date_format_custom">Custom java format</string>
    <string name="status_bar_clock_style_reset_message">Reset clock color?</string>
    <string name="clock_font_style_title">Font styles</string>
    <string name="clock_font_bold">Bold</string>
    <string name="clock_font_condensed">Condensed</string>
    <string name="clock_font_light">Light</string>
    <string name="clock_font_light_italic">Light italic</string>
    <string name="clock_font_normal">Normal</string>
    <string name="color_default">Default</string>
    <string name="clock_use_second">Enable Seconds</string>
    <string name="clock_use_second_summary">Shows the seconds next to the clock</string>

4. Now open array.xml and add these lines above </resources>.
PHP:
<string-array name="clock_style_entries">
        <item>@string/right_clock</item>
        <item>@string/center_clock</item>
		<item>@string/left_clock</item>
    </string-array>
    <string-array name="clock_style_values">
        <item>0</item>
        <item>1</item>
		<item>2</item>
    </string-array>
    <string-array name="entries_status_bar_am_pm">
        <item>@string/am_pm_clock_none</item>
        <item>@string/am_pm_clock_small</item>
        <item>@string/am_pm_clock_normal</item>
    </string-array>
    <string-array name="values_status_bar_am_pm">
        <item>0</item>
        <item>1</item>
        <item>2</item>
    </string-array>
    <string-array name="clock_date_display_entries">
        <item>@string/clock_date_display_none</item>
        <item>@string/clock_date_display_small</item>
        <item>@string/clock_date_display_normal</item>
    </string-array>
    <string-array name="clock_date_display_values">
        <item>0</item>
        <item>1</item>
        <item>2</item>
    </string-array>
    <string-array name="clock_date_style_entries">
        <item>@string/clock_date_style_normal</item>
        <item>@string/clock_date_style_lowercase</item>
        <item>@string/clock_date_style_uppercase</item>
    </string-array>
    <string-array name="clock_date_style_values">
        <item>0</item>
        <item>1</item>
        <item>2</item>
    </string-array>
    <string-array name="clock_date_format_entries_values">
        <item>dd/MM/yy</item>
        <item>MM/dd/yy</item>
        <item>yyyy-MM-dd</item>
        <item>yyyy-dd-MM</item>
        <item>dd-MM-yyyy</item>
        <item>MM-dd-yyyy</item>
        <item>MMM dd</item>
        <item>MMM dd, yyyy</item>
        <item>MMMM dd, yyyy</item>
        <item>EEE</item>
        <item>EEE dd</item>
        <item>EEE dd/MM</item>
        <item>EEE MM/dd</item>
        <item>EEE dd MMM</item>
        <item>EEE MMM dd</item>
        <item>EEE MMMM dd</item>
        <item>EEEE dd/MM</item>
        <item>EEEE MM/dd</item>
        <item>@string/clock_date_format_custom</item>
    </string-array>
	<string-array name="clock_font_style_entries">
        <item>@string/clock_font_bold</item>
        <item>@string/clock_font_condensed</item>
        <item>@string/clock_font_light</item>
        <item>@string/clock_font_light_italic</item>
        <item>@string/clock_font_normal</item>
    </string-array>
    <string-array name="clock_font_style_values">
        <item>0</item>
        <item>1</item>
        <item>2</item>
        <item>3</item>
        <item>4</item>
    </string-array>

5. Now Recompile your Settings.apk , Sign it and again Decompile it.

6. Now open StatusBarClockStyle.smali and replace the ids with the ids present in public.xml of your Settings.apk

0x7f050077
PHP:
<public type="xml" name="status_bar_clock_style"

0x7f0200cd
PHP:
<public type="drawable" name="ic_settings_clock"

0x7f0800a4
PHP:
<public type="string" name="color_default"

0x7f0800cd
PHP:
<public type="string" name="status_bar_am_pm_info"

0x7f0a0078
PHP:
<public type="array" name="clock_date_format_entries_values"

0x7f08007c
PHP:
<public type="string" name="reset"
Do this with other same id.

0x7f0800e3
PHP:
<public type="string" name="status_bar_clock_style_reset_message"

0x7f08007b
PHP:
<public type="string" name="ok"

0x7f08066e
PHP:
<public type="string" name="cancel"

0x7f0200c4
PHP:
    <public type="drawable" name="ic_settings_backup"

0x7f0800d7
PHP:
<public type="string" name="clock_date_string_edittext_title"

0x7f0800d8
PHP:
<public type="string" name="clock_date_string_edittext_summary"

0x7f080bcb
PHP:
<public type="string" name="menu_save"

0x7f080bcc
PHP:
<public type="string" name="menu_cancel"



SystemUI.apk Modding

1. First Decompile your SystemUI.apk and merge the files inside it (given below).

2. Now go to SystemUI.apk\res\layout\gemini_status_bar.xml and open it.

Add these lines in the xml. Compare with the "gemini_status_bar.xml" given in the guide.

PHP:
<com.android.systemui.statusbar.policy.ClockLeft android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:gravity="left|center" android:id="@id/left_clock" android:paddingLeft="6.0dip" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />

PHP:
<com.android.systemui.statusbar.policy.ClockCenter android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:gravity="center" android:id="@id/center_clock" android:paddingLeft="6.0dip" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />

PHP:
<LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/center_clock_layout" android:layout_width="fill_parent" android:layout_height="fill_parent">
        <com.android.systemui.statusbar.policy.ClockCenter android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:gravity="center" android:id="@id/center_clock" android:paddingLeft="6.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />
    </LinearLayout>

NOTE: To solve the issue of overlapping of other things with clock in statusbar , follow this.

• Find this line ,
PHP:
<LinearLayout android:orientation="horizontal" android:id="@id/notification_icon_area" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0">

• Replace with this line ,
PHP:
<LinearLayout android:gravity="left" android:orientation="horizontal" android:id="@id/notification_icon_area" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0">

• Now again find this line ,
PHP:
<LinearLayout android:orientation="horizontal" android:id="@id/system_icon_area" android:layout_width="wrap_content" android:layout_height="fill_parent">

• Replace with this line ,
PHP:
 <LinearLayout android:gravity="right" android:orientation="horizontal" android:id="@id/system_icon_area" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0">

3. Now go to SystemUI.apk\res\values\ids.xml and open it. Now add these above </resources>.
PHP:
<item type="id" name="left_clock">false</item>
    <item type="id" name="clock_stock">false</item>
    <item type="id" name="center_clock_layout">false</item>
    <item type="id" name="center_clock">false</item>

4. Now go to SystemUI.apk\res\values\colors.xml and open it. Now add this above </resources>.
PHP:
<color name="status_bar_clock_color">#ffffffff</color>

5. Now Recompile your SystemUI.apk , Sign it and then again Decompile it.

6. Now go to SystemUI.apk\smali\com\android\systemui\statusbar\phone\PhoneStatusBar.smali

• Add this line ,
HTML:
.field mCenterClockLayout:Landroid/widget/LinearLayout;

Like this ,
HTML:
.field private mCarrierLabelVisible:Z

.field mCenterClockLayout:Landroid/widget/LinearLayout;

.field private final mCheckBarModes:Ljava/lang/Runnable;

• Now again , Add this line
HTML:
.field private mShowClock:Z

Like this ,
HTML:
.field private mShowCarrierInPanel:Z

.field private mShowClock:Z

.field private mShowSearchHoldoff:I

7. Now find this method ,
HTML:
.method protected makeStatusBarView()Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

• Now find these lines in this method ,
HTML:
iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    const v2, 0x7f070052

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

    move-result-object v1

    check-cast v1, Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarContents:Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

• Now copy these lines and paste it below the lines that you have copied , like this
HTML:
iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    const v2, 0x7f070052

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

    move-result-object v1

    check-cast v1, Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarContents:Landroid/widget/LinearLayout;

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

    const v2, 0x7f070052

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

    move-result-object v1

    check-cast v1, Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarContents:Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

• Now replace the second last line of pasted lines with this ,
HTML:
iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mCenterClockLayout:Landroid/widget/LinearLayout;

• The final will look like this ,
HTML:
iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    const v2, 0x7f070052

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

    move-result-object v1

    check-cast v1, Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarContents:Landroid/widget/LinearLayout;

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

    const v2, 0x7f0?????

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

    move-result-object v1

    check-cast v1, Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mCenterClockLayout:Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

8. Now replace this id in "PhoneStatusBar.smali" with the id present in public.xml of your SystemUI.apk

0x7f0?????
PHP:
<public type="id" name="center_clock_layout"

9. Now find this method ,
HTML:
.method public showClock(Z)V

• Now delete whole lines between these ,

HTML:
.method public showClock(Z)V
-
-
-
.end method

• Now copy these lines between these ,
HTML:
.locals 10
    
    .prologue
    const/4 v9, -0x2

    const/4 v1, 0x1

    const/4 v2, 0x0

    const/16 v4, 0x8

    .line 3874
    iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    if-nez v0, :cond_1

    .line 3894
    :cond_0
    :goto_0
    return-void

    .line 3875
    :cond_1
    iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mContext:Landroid/content/Context;

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

    move-result-object v3

    .line 3876
    iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    const v5, 0x7f07005d

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

    move-result-object v5

    .line 3877
    iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    const v6, 0x7f0700db

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

    move-result-object v6

    .line 3878
    iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    const v7, 0x7f0700d8

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

    move-result-object v7

    .line 3879
    const-string v0, "status_bar_clock"

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

    move-result v0

    if-ne v0, v1, :cond_5

    move v0, v1

    .line 3882
    :goto_1
    const-string v8, "statusbar_clock_style"

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

    move-result v8

    .line 3885
    if-nez v8, :cond_2

    if-eqz v5, :cond_2

    .line 3886
    if-eqz p1, :cond_7

    if-eqz v0, :cond_6

    move v3, v2

    :goto_2
    invoke-virtual {v5, v3}, Landroid/view/View;->setVisibility(I)V

    .line 3888
    :cond_2
    if-ne v8, v1, :cond_3

    if-eqz v6, :cond_3

    .line 3889
    if-eqz p1, :cond_9

    if-eqz v0, :cond_8

    move v1, v2

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

    .line 3891
    :cond_3
    const/4 v1, 0x2

    if-ne v8, v1, :cond_0

    if-eqz v7, :cond_0

    .line 3892
    if-eqz p1, :cond_4

    if-eqz v0, :cond_4

    move v4, v2

    :cond_4
    invoke-virtual {v7, v4}, Landroid/view/View;->setVisibility(I)V

    goto :goto_0

    :cond_5
    move v0, v2

    .line 3879
    goto :goto_1

    :cond_6
    move v3, v4

    .line 3886
    goto :goto_2

    :cond_7
    move v3, v4

    goto :goto_2

    :cond_8
    move v1, v4

    .line 3889
    goto :goto_3

    :cond_9
    move v1, v4

    goto :goto_3

10. Now replace these ids in the above method with the ids present in public.xml of your SystemUI.apk

0x7f07005d
PHP:
<public type="id" name="clock"

0x7f0700db
PHP:
<public type="id" name="center_clock"

0x7f0700d8
PHP:
<public type="id" name="left_clock"

11. Now go to SystemUI.apk\smali\com\android\systemui\statusbar\policy\Clock.smali and open it. Now replace the id with the id present in public.xml of your SystemUI.apk

0x7f080009
PHP:
<public type="color" name="status_bar_clock_color"

12. Done , now Recompile your SystemUI.apk and Sign it.

Important Information :

• In step no. 7 , if in these lines
HTML:
iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    const v2, 0x7f070052

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

    move-result-object v1

    check-cast v1, Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarContents:Landroid/widget/LinearLayout;

	.line 523                          <--------- Like This ----------->
    move-object/from16 v0, p0

• The line above line "move-object/from16 v0, p0" is having line like this (may be any no.) , then after the copying and replacing (as mentioned in step 7) , it will look like this.
HTML:
iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    const v2, 0x7f070052

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

    move-result-object v1

    check-cast v1, Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarContents:Landroid/widget/LinearLayout;

	.line 523                          <--------- 1 ----------->
    move-object/from16 v0, p0
	
	iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    const v2, 0x7f0?????  (<public type="id" name="center_clock_layout") 

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

    move-result-object v1

    check-cast v1, Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mCenterClockLayout:Landroid/widget/LinearLayout;

	.line 523                          <--------- 2 ----------->
    move-object/from16 v0, p0

• Then in 2nd case , change the line number by adding 1. In this case add 1 to 523 and it will become 524. (If line 524 is already there in smali , then add 2 means 523+2 and so on). the final will look like this ,
HTML:
iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    const v2, 0x7f070052

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

    move-result-object v1

    check-cast v1, Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarContents:Landroid/widget/LinearLayout;

	.line 523                          <--------- 1 ----------->
    move-object/from16 v0, p0
	
	iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    const v2, 0x7f0?????  (<public type="id" name="center_clock_layout") 

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

    move-result-object v1

    check-cast v1, Landroid/widget/LinearLayout;

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mCenterClockLayout:Landroid/widget/LinearLayout;

	.line 524                         <--------- 2 (Changed here)----------->
    move-object/from16 v0, p0

• Now follow the above remaining steps given in guide.



Special Thanks To :
1. DU_Flo ROM (Extracted from this ROM)
2. Vanya Melnechenko
3. MAAaD
4. XDA
5. Raj Shekhar (For testing the guide & screenshots)

One more amazing work @05Gurpreet bro.. :D
 

renzo090513

Senior Member
Feb 1, 2015
261
162
This will work in lollipop? Plase anyone have the smali files for lollipop?

Enviado desde mi LG-D802 mediante Tapatalk
 

Top Liked Posts

  • There are no posts matching your filters.
  • 9
    In this guide , I will tell "How to add Clock" option in Settings. :)
    Will work only on 4.4

    REQUIREMENTS :
    1. Brain
    2. Apktool (2.0.0)
    3. Notepad ++
    4. Knowledge on How to Decompile/Recompile the apk


    Lets start ,

    NOTE : Those are not having the "colorpicker" folder in Settings/smali/net/margaritov/preference and having any other colorpicker in different location then open the "status_bar_clock_style" and edit this line by changing the path of colorpicker in this line.
    PHP:
    <net.margaritov.preference.colorpicker.ColorPickerPreference android:title="@string/battery_bar_color" android:key="battery_bar_color" android:defaultValue="\#ffffff" alphaSlider="true" />
    Those who are not having any color picker , first add that using guide whose link is given below.


    Settings.apk Modding

    1. First Decompile your Settings.apk and merge the files (given below).

    2. Now add this line in display_settings.xml or any other xml present in Settings.apk/res/xml.
    PHP:
    <PreferenceScreen android:title="@string/statusbar_clock" android:key="statusbar_clock" android:summary="@string/statusbar_clock_summary" android:fragment="com.android.settings.gurpreet.statusbarclock.StatusBarClockStyle" />

    3. Now open strings.xml and add these lines above </resources>.
    PHP:
    <string name="statusbar_clock">Clock and Date</string>
        <string name="statusbar_clock_summary">Change the clock and date style</string>
        <string name="clock_title_enable">Alignment</string>
        <string name="clock_enabled">Enabled</string>
        <string name="clock_disabled">Disabled</string>
        <string name="clock_color_title">Color</string>
        <string name="status_bar_clock_style_reset">Reset color</string>
        <string name="status_bar_show_clock_title">Show clock and date</string>
        <string name="status_bar_am_pm_title">AM/PM</string>
        <string name="status_bar_am_pm_info">24-hour clock is enabled</string>
        <string name="enable_clock_weekday">Day of the week</string>
        <string name="enable_clock_weekday_summary">Abbreviated day of the week before the time</string>
        <string name="right_clock">Right clock</string>
        <string name="center_clock">Center clock</string>
        <string name="left_clock">Left clock</string>
        <string name="dont_show">"Don't show"</string>
        <string name="clock_date_display">Date</string>
        <string name="clock_date_display_summary">Display custom date before the clock</string>
        <string name="clock_date_style">Date style</string>
        <string name="clock_date_format">Date format</string>
        <string name="clock_date_string_edittext_title">Must be in DateFormat eg. MM/dd/yy</string>
        <string name="clock_date_string_edittext_summary">Enter string</string>
        <string name="am_pm_clock_normal">Normal font size</string>
        <string name="am_pm_clock_small">Small font size</string>
        <string name="am_pm_clock_none">"Don't show"</string>
        <string name="clock_date_display_none">"Don't show"</string>
        <string name="clock_date_display_small">Small font size</string>
        <string name="clock_date_display_normal">Normal font size</string>
        <string name="clock_date_style_normal">Normal</string>
        <string name="clock_date_style_lowercase">Lowercase</string>
        <string name="clock_date_style_uppercase">Uppercase</string>
        <string name="clock_date_format_custom">Custom java format</string>
        <string name="status_bar_clock_style_reset_message">Reset clock color?</string>
        <string name="clock_font_style_title">Font styles</string>
        <string name="clock_font_bold">Bold</string>
        <string name="clock_font_condensed">Condensed</string>
        <string name="clock_font_light">Light</string>
        <string name="clock_font_light_italic">Light italic</string>
        <string name="clock_font_normal">Normal</string>
        <string name="color_default">Default</string>
        <string name="clock_use_second">Enable Seconds</string>
        <string name="clock_use_second_summary">Shows the seconds next to the clock</string>

    4. Now open array.xml and add these lines above </resources>.
    PHP:
    <string-array name="clock_style_entries">
            <item>@string/right_clock</item>
            <item>@string/center_clock</item>
    		<item>@string/left_clock</item>
        </string-array>
        <string-array name="clock_style_values">
            <item>0</item>
            <item>1</item>
    		<item>2</item>
        </string-array>
        <string-array name="entries_status_bar_am_pm">
            <item>@string/am_pm_clock_none</item>
            <item>@string/am_pm_clock_small</item>
            <item>@string/am_pm_clock_normal</item>
        </string-array>
        <string-array name="values_status_bar_am_pm">
            <item>0</item>
            <item>1</item>
            <item>2</item>
        </string-array>
        <string-array name="clock_date_display_entries">
            <item>@string/clock_date_display_none</item>
            <item>@string/clock_date_display_small</item>
            <item>@string/clock_date_display_normal</item>
        </string-array>
        <string-array name="clock_date_display_values">
            <item>0</item>
            <item>1</item>
            <item>2</item>
        </string-array>
        <string-array name="clock_date_style_entries">
            <item>@string/clock_date_style_normal</item>
            <item>@string/clock_date_style_lowercase</item>
            <item>@string/clock_date_style_uppercase</item>
        </string-array>
        <string-array name="clock_date_style_values">
            <item>0</item>
            <item>1</item>
            <item>2</item>
        </string-array>
        <string-array name="clock_date_format_entries_values">
            <item>dd/MM/yy</item>
            <item>MM/dd/yy</item>
            <item>yyyy-MM-dd</item>
            <item>yyyy-dd-MM</item>
            <item>dd-MM-yyyy</item>
            <item>MM-dd-yyyy</item>
            <item>MMM dd</item>
            <item>MMM dd, yyyy</item>
            <item>MMMM dd, yyyy</item>
            <item>EEE</item>
            <item>EEE dd</item>
            <item>EEE dd/MM</item>
            <item>EEE MM/dd</item>
            <item>EEE dd MMM</item>
            <item>EEE MMM dd</item>
            <item>EEE MMMM dd</item>
            <item>EEEE dd/MM</item>
            <item>EEEE MM/dd</item>
            <item>@string/clock_date_format_custom</item>
        </string-array>
    	<string-array name="clock_font_style_entries">
            <item>@string/clock_font_bold</item>
            <item>@string/clock_font_condensed</item>
            <item>@string/clock_font_light</item>
            <item>@string/clock_font_light_italic</item>
            <item>@string/clock_font_normal</item>
        </string-array>
        <string-array name="clock_font_style_values">
            <item>0</item>
            <item>1</item>
            <item>2</item>
            <item>3</item>
            <item>4</item>
        </string-array>

    5. Now Recompile your Settings.apk , Sign it and again Decompile it.

    6. Now open StatusBarClockStyle.smali and replace the ids with the ids present in public.xml of your Settings.apk

    0x7f050077
    PHP:
    <public type="xml" name="status_bar_clock_style"

    0x7f0200cd
    PHP:
    <public type="drawable" name="ic_settings_clock"

    0x7f0800a4
    PHP:
    <public type="string" name="color_default"

    0x7f0800cd
    PHP:
    <public type="string" name="status_bar_am_pm_info"

    0x7f0a0078
    PHP:
    <public type="array" name="clock_date_format_entries_values"

    0x7f08007c
    PHP:
    <public type="string" name="reset"
    Do this with other same id.

    0x7f0800e3
    PHP:
    <public type="string" name="status_bar_clock_style_reset_message"

    0x7f08007b
    PHP:
    <public type="string" name="ok"

    0x7f08066e
    PHP:
    <public type="string" name="cancel"

    0x7f0200c4
    PHP:
        <public type="drawable" name="ic_settings_backup"

    0x7f0800d7
    PHP:
    <public type="string" name="clock_date_string_edittext_title"

    0x7f0800d8
    PHP:
    <public type="string" name="clock_date_string_edittext_summary"

    0x7f080bcb
    PHP:
    <public type="string" name="menu_save"

    0x7f080bcc
    PHP:
    <public type="string" name="menu_cancel"



    SystemUI.apk Modding

    1. First Decompile your SystemUI.apk and merge the files inside it (given below).

    2. Now go to SystemUI.apk\res\layout\gemini_status_bar.xml and open it.

    Add these lines in the xml. Compare with the "gemini_status_bar.xml" given in the guide.

    PHP:
    <com.android.systemui.statusbar.policy.ClockLeft android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:gravity="left|center" android:id="@id/left_clock" android:paddingLeft="6.0dip" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />

    PHP:
    <com.android.systemui.statusbar.policy.ClockCenter android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:gravity="center" android:id="@id/center_clock" android:paddingLeft="6.0dip" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />

    PHP:
    <LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/center_clock_layout" android:layout_width="fill_parent" android:layout_height="fill_parent">
            <com.android.systemui.statusbar.policy.ClockCenter android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:gravity="center" android:id="@id/center_clock" android:paddingLeft="6.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />
        </LinearLayout>

    NOTE: To solve the issue of overlapping of other things with clock in statusbar , follow this.

    • Find this line ,
    PHP:
    <LinearLayout android:orientation="horizontal" android:id="@id/notification_icon_area" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0">

    • Replace with this line ,
    PHP:
    <LinearLayout android:gravity="left" android:orientation="horizontal" android:id="@id/notification_icon_area" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0">

    • Now again find this line ,
    PHP:
    <LinearLayout android:orientation="horizontal" android:id="@id/system_icon_area" android:layout_width="wrap_content" android:layout_height="fill_parent">

    • Replace with this line ,
    PHP:
     <LinearLayout android:gravity="right" android:orientation="horizontal" android:id="@id/system_icon_area" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0">

    3. Now go to SystemUI.apk\res\values\ids.xml and open it. Now add these above </resources>.
    PHP:
    <item type="id" name="left_clock">false</item>
        <item type="id" name="clock_stock">false</item>
        <item type="id" name="center_clock_layout">false</item>
        <item type="id" name="center_clock">false</item>

    4. Now go to SystemUI.apk\res\values\colors.xml and open it. Now add this above </resources>.
    PHP:
    <color name="status_bar_clock_color">#ffffffff</color>

    5. Now Recompile your SystemUI.apk , Sign it and then again Decompile it.

    6. Now go to SystemUI.apk\smali\com\android\systemui\statusbar\phone\PhoneStatusBar.smali

    • Add this line ,
    HTML:
    .field mCenterClockLayout:Landroid/widget/LinearLayout;

    Like this ,
    HTML:
    .field private mCarrierLabelVisible:Z
    
    .field mCenterClockLayout:Landroid/widget/LinearLayout;
    
    .field private final mCheckBarModes:Ljava/lang/Runnable;

    • Now again , Add this line
    HTML:
    .field private mShowClock:Z

    Like this ,
    HTML:
    .field private mShowCarrierInPanel:Z
    
    .field private mShowClock:Z
    
    .field private mShowSearchHoldoff:I

    7. Now find this method ,
    HTML:
    .method protected makeStatusBarView()Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

    • Now find these lines in this method ,
    HTML:
    iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;
    
        const v2, 0x7f070052
    
        invoke-virtual {v1, v2}, Landroid/view/View;->findViewById(I)Landroid/view/View;
    
        move-result-object v1
    
        check-cast v1, Landroid/widget/LinearLayout;
    
        move-object/from16 v0, p0
    
        iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarContents:Landroid/widget/LinearLayout;
    
        move-object/from16 v0, p0

    • Now copy these lines and paste it below the lines that you have copied , like this
    HTML:
    iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;
    
        const v2, 0x7f070052
    
        invoke-virtual {v1, v2}, Landroid/view/View;->findViewById(I)Landroid/view/View;
    
        move-result-object v1
    
        check-cast v1, Landroid/widget/LinearLayout;
    
        move-object/from16 v0, p0
    
        iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarContents:Landroid/widget/LinearLayout;
    
        move-object/from16 v0, p0
    	
       iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;
    
        const v2, 0x7f070052
    
        invoke-virtual {v1, v2}, Landroid/view/View;->findViewById(I)Landroid/view/View;
    
        move-result-object v1
    
        check-cast v1, Landroid/widget/LinearLayout;
    
        move-object/from16 v0, p0
    
        iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarContents:Landroid/widget/LinearLayout;
    
        move-object/from16 v0, p0

    • Now replace the second last line of pasted lines with this ,
    HTML:
    iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mCenterClockLayout:Landroid/widget/LinearLayout;

    • The final will look like this ,
    HTML:
    iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;
    
        const v2, 0x7f070052
    
        invoke-virtual {v1, v2}, Landroid/view/View;->findViewById(I)Landroid/view/View;
    
        move-result-object v1
    
        check-cast v1, Landroid/widget/LinearLayout;
    
        move-object/from16 v0, p0
    
        iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarContents:Landroid/widget/LinearLayout;
    
        move-object/from16 v0, p0
    	
        iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;
    
        const v2, 0x7f0?????
    
        invoke-virtual {v1, v2}, Landroid/view/View;->findViewById(I)Landroid/view/View;
    
        move-result-object v1
    
        check-cast v1, Landroid/widget/LinearLayout;
    
        move-object/from16 v0, p0
    
        iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mCenterClockLayout:Landroid/widget/LinearLayout;
    
        move-object/from16 v0, p0

    8. Now replace this id in "PhoneStatusBar.smali" with the id present in public.xml of your SystemUI.apk

    0x7f0?????
    PHP:
    <public type="id" name="center_clock_layout"

    9. Now find this method ,
    HTML:
    .method public showClock(Z)V

    • Now delete whole lines between these ,

    HTML:
    .method public showClock(Z)V
    -
    -
    -
    .end method

    • Now copy these lines between these ,
    HTML:
    .locals 10
        
        .prologue
        const/4 v9, -0x2
    
        const/4 v1, 0x1
    
        const/4 v2, 0x0
    
        const/16 v4, 0x8
    
        .line 3874
        iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;
    
        if-nez v0, :cond_1
    
        .line 3894
        :cond_0
        :goto_0
        return-void
    
        .line 3875
        :cond_1
        iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mContext:Landroid/content/Context;
    
        invoke-virtual {v0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
    
        move-result-object v3
    
        .line 3876
        iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;
    
        const v5, 0x7f07005d
    
        invoke-virtual {v0, v5}, Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;->findViewById(I)Landroid/view/View;
    
        move-result-object v5
    
        .line 3877
        iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;
    
        const v6, 0x7f0700db
    
        invoke-virtual {v0, v6}, Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;->findViewById(I)Landroid/view/View;
    
        move-result-object v6
    
        .line 3878
        iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;
    
        const v7, 0x7f0700d8
    
        invoke-virtual {v0, v7}, Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;->findViewById(I)Landroid/view/View;
    
        move-result-object v7
    
        .line 3879
        const-string v0, "status_bar_clock"
    
        invoke-static {v3, v0, v1, v9}, Landroid/provider/Settings$System;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)I
    
        move-result v0
    
        if-ne v0, v1, :cond_5
    
        move v0, v1
    
        .line 3882
        :goto_1
        const-string v8, "statusbar_clock_style"
    
        invoke-static {v3, v8, v2, v9}, Landroid/provider/Settings$System;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)I
    
        move-result v8
    
        .line 3885
        if-nez v8, :cond_2
    
        if-eqz v5, :cond_2
    
        .line 3886
        if-eqz p1, :cond_7
    
        if-eqz v0, :cond_6
    
        move v3, v2
    
        :goto_2
        invoke-virtual {v5, v3}, Landroid/view/View;->setVisibility(I)V
    
        .line 3888
        :cond_2
        if-ne v8, v1, :cond_3
    
        if-eqz v6, :cond_3
    
        .line 3889
        if-eqz p1, :cond_9
    
        if-eqz v0, :cond_8
    
        move v1, v2
    
        :goto_3
        invoke-virtual {v6, v1}, Landroid/view/View;->setVisibility(I)V
    
        .line 3891
        :cond_3
        const/4 v1, 0x2
    
        if-ne v8, v1, :cond_0
    
        if-eqz v7, :cond_0
    
        .line 3892
        if-eqz p1, :cond_4
    
        if-eqz v0, :cond_4
    
        move v4, v2
    
        :cond_4
        invoke-virtual {v7, v4}, Landroid/view/View;->setVisibility(I)V
    
        goto :goto_0
    
        :cond_5
        move v0, v2
    
        .line 3879
        goto :goto_1
    
        :cond_6
        move v3, v4
    
        .line 3886
        goto :goto_2
    
        :cond_7
        move v3, v4
    
        goto :goto_2
    
        :cond_8
        move v1, v4
    
        .line 3889
        goto :goto_3
    
        :cond_9
        move v1, v4
    
        goto :goto_3

    10. Now replace these ids in the above method with the ids present in public.xml of your SystemUI.apk

    0x7f07005d
    PHP:
    <public type="id" name="clock"

    0x7f0700db
    PHP:
    <public type="id" name="center_clock"

    0x7f0700d8
    PHP:
    <public type="id" name="left_clock"

    11. Now go to SystemUI.apk\smali\com\android\systemui\statusbar\policy\Clock.smali and open it. Now replace the id with the id present in public.xml of your SystemUI.apk

    0x7f080009
    PHP:
    <public type="color" name="status_bar_clock_color"

    12. Done , now Recompile your SystemUI.apk and Sign it.

    Important Information :

    • In step no. 7 , if in these lines
    HTML:
    iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;
    
        const v2, 0x7f070052
    
        invoke-virtual {v1, v2}, Landroid/view/View;->findViewById(I)Landroid/view/View;
    
        move-result-object v1
    
        check-cast v1, Landroid/widget/LinearLayout;
    
        move-object/from16 v0, p0
    
        iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarContents:Landroid/widget/LinearLayout;
    
    	.line 523                          <--------- Like This ----------->
        move-object/from16 v0, p0

    • The line above line "move-object/from16 v0, p0" is having line like this (may be any no.) , then after the copying and replacing (as mentioned in step 7) , it will look like this.
    HTML:
    iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;
    
        const v2, 0x7f070052
    
        invoke-virtual {v1, v2}, Landroid/view/View;->findViewById(I)Landroid/view/View;
    
        move-result-object v1
    
        check-cast v1, Landroid/widget/LinearLayout;
    
        move-object/from16 v0, p0
    
        iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarContents:Landroid/widget/LinearLayout;
    
    	.line 523                          <--------- 1 ----------->
        move-object/from16 v0, p0
    	
    	iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;
    
        const v2, 0x7f0?????  (<public type="id" name="center_clock_layout") 
    
        invoke-virtual {v1, v2}, Landroid/view/View;->findViewById(I)Landroid/view/View;
    
        move-result-object v1
    
        check-cast v1, Landroid/widget/LinearLayout;
    
        move-object/from16 v0, p0
    
        iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mCenterClockLayout:Landroid/widget/LinearLayout;
    
    	.line 523                          <--------- 2 ----------->
        move-object/from16 v0, p0

    • Then in 2nd case , change the line number by adding 1. In this case add 1 to 523 and it will become 524. (If line 524 is already there in smali , then add 2 means 523+2 and so on). the final will look like this ,
    HTML:
    iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;
    
        const v2, 0x7f070052
    
        invoke-virtual {v1, v2}, Landroid/view/View;->findViewById(I)Landroid/view/View;
    
        move-result-object v1
    
        check-cast v1, Landroid/widget/LinearLayout;
    
        move-object/from16 v0, p0
    
        iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarContents:Landroid/widget/LinearLayout;
    
    	.line 523                          <--------- 1 ----------->
        move-object/from16 v0, p0
    	
    	iget-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;
    
        const v2, 0x7f0?????  (<public type="id" name="center_clock_layout") 
    
        invoke-virtual {v1, v2}, Landroid/view/View;->findViewById(I)Landroid/view/View;
    
        move-result-object v1
    
        check-cast v1, Landroid/widget/LinearLayout;
    
        move-object/from16 v0, p0
    
        iput-object v1, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mCenterClockLayout:Landroid/widget/LinearLayout;
    
    	.line 524                         <--------- 2 (Changed here)----------->
        move-object/from16 v0, p0

    • Now follow the above remaining steps given in guide.



    Special Thanks To :
    1. DU_Flo ROM (Extracted from this ROM)
    2. Vanya Melnechenko
    3. MAAaD
    4. XDA
    5. Raj Shekhar (For testing the guide & screenshots)
    2
    Great!thumbs up Guru :)
    2
    Amazing guide..
    1
    Amazing!! as always @05Gurpreet bro!! ;)