[Galaxy S 4 Themes and Apps] iepurasu_poznas:
This guide is not for a noob in editing.

Tried yourself, first you need to understand relation between public values in smali and xml.

I'm not creator of this mod, i have only ported over s4 from note 3 forum!

This mod was created by @parkhyb here

Big thanks to him

Also thanks to [MENTION=4868820]OlliG[/MENTION] for The Battery Icon Creator

Modified SystemUI for I9505XXUFNC9 is at post #2 (Flashable)

View attachment 2742163 View attachment 2742164

This guide requires following things:

• APKtool

• Notepad++

• deodexed SystemUI.apk

• drawables.zip (attachment)

• smali.zip (attachment)

1. Decompile SystemUI.apk using APKtool

2. Choose a icon pack and extract two folders in drawables_xxxx_xxx.zip

3. Move and overwrite two folders(drawable, drawable-xxhdpi) to SystemUI\res\

4. Open SystemUI\res\layout\status_bar.xml in Notepad++

Find @id/battery

<LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/signal_battery_cluster" android:layout_width="wrap_content" android:layout_height="fill_parent" android:paddingStart="2.0dip">
<include android:id="@id/signal_cluster" android:layout_width="wrap_content" android:layout_height="wrap_content" layout="@layout/signal_cluster_view" />
<TextView android:textSize="@dimen/status_bar_battery_text_size" android:textColor="#ffffffff" android:layout_gravity="center" android:id="@id/battery_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_network_name_separator" android:layout_marginStart="@dimen/status_bar_battery_text_marginStart" />
[COLOR="Red"] <com.android.systemui.BatteryMeterView android:id="@id/battery" android:layout_width="12.0dip" android:layout_height="18.0dip" android:layout_marginBottom="0.33000004dip" android:layout_marginStart="5.0dip" />[/COLOR]
</LinearLayout>
...

change like this

<LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/signal_battery_cluster" android:layout_width="wrap_content" android:layout_height="fill_parent" android:paddingStart="2.0dip">
<include android:id="@id/signal_cluster" android:layout_width="wrap_content" android:layout_height="wrap_content" layout="@layout/signal_cluster_view" />
<TextView android:textSize="@dimen/status_bar_battery_text_size" android:textColor="#ffffffff" android:layout_gravity="center" android:id="@id/battery_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_network_name_separator" android:layout_marginStart="@dimen/status_bar_battery_text_marginStart" />
[COLOR="Blue"]<ImageView android:gravity="center" android:id="@id/battery" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="1.0dip" android:layout_marginStart="2.0dip" />[/COLOR]
</LinearLayout>
...

Now recompile SystemUI to create public ids for the new resurces

Decompil the new SystemUI.apk and navigate to:

res/values and open public.xml with notepad++

Now extract BatteryController.smali in smali.zip and open with notepad++

We must match the IDs from BatteryController.smali wit IDs from public.xml

Find in BatteryController.smali

.line 46
const v1, [COLOR="Red"]0x7f02028b[/COLOR]

and replace id with one from public.xml :

<public type="drawable" name="tw_stat_sys_battery" id="[COLOR="Blue"]0x7f02028b[/COLOR]" />

Find in BatteryController.smali

.line 47
const v1, [COLOR="Red"]0x7f0202f4[/COLOR]

and replace id with one from public.xml :

<public type="drawable" name="tw_stat_sys_battery_charge" id="[COLOR="Blue"]0x7f0202f4[/COLOR]" />

Find in BatteryController.smali

.line 67
const v1, [COLOR="Red"]0x7f02036f[/COLOR]

and replace id with one from public.xml :

<public type="drawable" name="tw_stat_sys_battery_red" id="[COLOR="Blue"]0x7f02036f[/COLOR]" />

Find in BatteryController.smali

.line 149
const v9, [COLOR="Red"]0x7f02026b[/COLOR]

and replace id with one from public.xml :

<public type="drawable" name="tw_stat_sys_6_level_signal_0" id="[COLOR="Blue"]0x7f02026b[/COLOR]" />

Find in BatteryController.smali

.line 160
move-object/from16 v0, p0

iget-object v15, v0, Lcom/android/systemui/statusbar/policy/BatteryController;->mContext:Landroid/content/Context;

const v16, [COLOR="Red"]0x7f0a008d[/COLOR]

const/16 v17, 0x1

and replace id with one from public.xml :

<public type="string" name="accessibility_battery_level" id="[COLOR="Blue"]0x7f0a008d[/COLOR]" />

Find in BatteryController.smali

.line 103
const v9, [COLOR="Red"]0x7f020370[/COLOR]

and replace id with one from public.xml :

<public type="drawable" name="tw_stat_sys_battery_usb_not_charge" id="[COLOR="Blue"]0x7f020370[/COLOR]" />

Find in BatteryController.smali

.line 117
:cond_5
const v9, [COLOR="Red"]0x7f020370[/COLOR]

and replace id with one from public.xml :

<public type="drawable" name="tw_stat_sys_battery_usb_not_charge" id="[COLOR="Blue"]0x7f020370[/COLOR]" />

Find in BatteryController.smali

.line 126
:cond_8
const v9, [COLOR="Red"]0x7f020370[/COLOR]

and replace id with one from public.xml :

<public type="drawable" name="tw_stat_sys_battery_usb_not_charge" id="[COLOR="Blue"]0x7f020370[/COLOR]" />

Find in BatteryController.smali

.line 166
.local v14, v:Landroid/widget/TextView;
move-object/from16 v0, p0

iget-object v15, v0, Lcom/android/systemui/statusbar/policy/BatteryController;->mContext:Landroid/content/Context;

const v16, [COLOR="Red"]0x7f0a0027[/COLOR]

const/16 v17, 0x1

and replace id with one from public.xml :

<public type="string" name="status_bar_settings_battery_meter_format" id="[COLOR="Blue"]0x7f0a0027[/COLOR]" />

Now save BatteryController.smali and move and overwrite BatteryController.smali to SystemUI\smali\com\android\systemui\statusbar\policy\

Open SystemUI\smali\com\android\systemui\statusbar\policy\BatteryController$BatteryStateChangeCallback.smali in Notepad++

# virtual methods
[COLOR="Red"].method public abstract onBatteryLevelChanged(IZ)V[/COLOR]
.end method

change like this

# virtual methods
[COLOR="Blue"].method public abstract onBatteryLevelChanged(IZI)V[/COLOR]
.end method

Open SystemUI\smali\com\android\systemui\statusbar\phone\PhoneStatusBar.smali in Notepad++

Find Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mBatteryController

iput-object v0, v1, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mBatteryController:Lcom/android/systemui/statusbar/policy/BatteryController;

.line 727
new-instance v25, Lcom/android/systemui/statusbar/policy/SmartBondingController;

move-object/from16 v0, p0
...

add like this

iput-object v0, v1, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mBatteryController:Lcom/android/systemui/statusbar/policy/BatteryController;

[COLOR="Blue"] move-object/from16 v0, p0

iget-object v0, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mBatteryController:Lcom/android/systemui/statusbar/policy/BatteryController;

move-object/from16 v26, v0

move-object/from16 v0, p0

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

move-object/from16 v25, v0

const v27, 0x7f070077

move-object/from16 v0, v25

move/from16 v1, v27

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

move-result-object v25

check-cast v25, Landroid/widget/ImageView;

move-object/from16 v0, v26

move-object/from16 v1, v25

invoke-virtual {v0, v1}, Lcom/android/systemui/statusbar/policy/BatteryController;->addIconView(Landroid/widget/ImageView;)V[/COLOR]

.line 727
new-instance v25, Lcom/android/systemui/statusbar/policy/SmartBondingController;

move-object/from16 v0, p0
...

0x7f070078 is a public id value of :

<public type="id" name="battery" id="0x7f070078" />

Find iput-object v0, v1, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mBatteryText

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

.line 731
move-object/from16 v0, p0

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

add like this

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

[COLOR="Blue"] move-object/from16 v0, p0

iget-object v0, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mBatteryController:Lcom/android/systemui/statusbar/policy/BatteryController;

move-object/from16 v25, v0

move-object/from16 v0, p0

iget-object v0, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mBatteryText:Landroid/widget/TextView;

move-object/from16 v26, v0

invoke-virtual/range {v25 .. v26}, Lcom/android/systemui/statusbar/policy/BatteryController;->addLabelView(Landroid/widget/TextView;)V[/COLOR]

.line 731
move-object/from16 v0, p0

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

Editing's all done.

Recompile and put in your S4.

Now we have the battery of JB 4.3

This means you can change battery images,

and make all of 1% batteries as you want!

Sorry my bad english, i am not good in speaking english!

View attachment 2754013

View attachment 2754020

View attachment 2754014

View attachment 2754021

View attachment 2754015

View attachment 2754022

View attachment 2754016

View attachment 2754023

View attachment 2754017

View attachment 2754024