Any way to make battery icon image update every 10% rather than every 20%?

10% icons framework

I decided to play with this more and figured it out after reading some of the suggestions posted in this forum. Heres the framework-res.apk for everyone else running sapphire.

Directions to install
1. Reboot the phone into recovery
2. adb push framework-res.apk to /system/framework
3. Reboot the phone and you should now see the 10% icons! You can change the png files inside the framework to anything you want, these are just some basic ones I made using pete's as a base.

Download Framework-res.apk

Update.zip can be installed the same way a rom is... Note that this replaces your services.jar with a modified one to allow transparent images.
Download update.zip

Let me know if you have any problems installing.

[Edit]
I forgot to say that this apk also adds a transparent notification bar as long as your services.jar is patched... transparent png credit to pete.
 
Last edited:
One of the pitfalls with this approach is that if you want to apply a theme after applying this hack, the new custom framework-res.apk (containing the 10% battery) will be overwritten with the themed framework-res.apk -- hence losing the 10% battery effect. Essential for this hack to work is both the stat_sys_battery.xml file along with the resources.arsc file. The actual png icons can be added later at any time.

I wish there was a way to distribute a framework-res.apk file that made it possible only to update changes (call it a partial framework-res.apk update), rather than distribution of the entire framework-res.apk. That way only the updated portions of the framework could be updated, leaving any themed parts behind. The problem however arises if the theme creator modified the resources.arsc in any way.

Possibly the best way to distribute these two files would be either individually (which could then be applied using ninjamorph) or as a metamorph file. I'm not the biggest fan of either approach, however they would allow others to install this hack over a themed ROM (possibly).

The sure fire method would be to ask theme creators to create their themes with the ability to have custom 10% icons. That would probably be the best way (or have cvpcs add this in when the entire ROM is compiled -- which I'm betting has virtually no chance.).
 
One of the pitfalls with this approach is that if you want to apply a theme after applying this hack, the new custom framework-res.apk (containing the 10% battery) will be overwritten with the themed framework-res.apk -- hence losing the 10% battery effect. Essential for this hack to work is both the stat_sys_battery.xml file along with the resources.arsc file. The actual png icons can be added later at any time.

I wish there was a way to distribute a framework-res.apk file that made it possible only to update changes (call it a partial framework-res.apk update), rather than distribution of the entire framework-res.apk. That way only the updated portions of the framework could be updated, leaving any themed parts behind. The problem however arises if the theme creator modified the resources.arsc in any way.

Possibly the best way to distribute these two files would be either individually (which could then be applied using ninjamorph) or as a metamorph file. I'm not the biggest fan of either approach, however they would allow others to install this hack over a themed ROM (possibly).

The sure fire method would be to ask theme creators to create their themes with the ability to have custom 10% icons. That would probably be the best way (or have cvpcs add this in when the entire ROM is compiled -- which I'm betting has virtually no chance.).


I agree completely, Chevy has been working on a script to update the internal files of apk files using an update.zip script. However i think you will run into problems when applying it to different framework files. Basically the best way to apply this hack right now is manually for a custom theme. Hopefully someone will figure out a simple way to apply this for any theme!
 
The sure fire method would be to ask theme creators to create their themes with the ability to have custom 10% icons. That would probably be the best way (or have cvpcs add this in when the entire ROM is compiled -- which I'm betting has virtually no chance.).

Doesn't hurt to ask, I'd say - file an enhancement request on the bugtracker. Sounds like you've done a lot of the legwork, which is certainly several levels above just "hey include this in sapphire".
 
Hmm -- mind giving me a hint where you have found this update.zip method?
 
I agree completely, Chevy has been working on a script to update the internal files of apk files using an update.zip script. However i think you will run into problems when applying it to different framework files. Basically the best way to apply this hack right now is manually for a custom theme. Hopefully someone will figure out a simple way to apply this for any theme!


Also the only problem right now is that usually apktool will not decompile custom themed framework files because they were broken during the theme process. That creates a little bit of a problem.
 
I also did it with a 15% and 5% (100-...-20-10-15-5-0) works sooo cool, the alert will be triggered when battery is at 15% as always, and when it changes from 5% to 0% it shuts down... so cool!
 
Yea Ive done it with 15 and 5% as well as I took the icons from SS - Chevy. What I'm really out for however is a good theme for 10% icons.
 
Nice find, however not a big fan of the circle batt symbols. Gives me an idea however, wonder if I could push this to have 1% intervals??? Hmm -- a lot of editing.

Ok -- If someone wants to try this, Ive done the hard work. Here is the modified stat_sys_battery.xml in 1% increments. You can cut and paste this. If someone supplies the images -- all good!!!

<?xml version="1.0" encoding="UTF-8"?>
<level-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/stat_sys_battery_0" android:maxLevel="0" />
<item android:drawable="@drawable/stat_sys_battery_1" android:maxLevel="1" />
<item android:drawable="@drawable/stat_sys_battery_2" android:maxLevel="2" />
<item android:drawable="@drawable/stat_sys_battery_3" android:maxLevel="3" />
<item android:drawable="@drawable/stat_sys_battery_4" android:maxLevel="4" />
<item android:drawable="@drawable/stat_sys_battery_5" android:maxLevel="5" />
<item android:drawable="@drawable/stat_sys_battery_6" android:maxLevel="6" />
<item android:drawable="@drawable/stat_sys_battery_7" android:maxLevel="7" />
<item android:drawable="@drawable/stat_sys_battery_8" android:maxLevel="8" />
<item android:drawable="@drawable/stat_sys_battery_9" android:maxLevel="9" />
<item android:drawable="@drawable/stat_sys_battery_10" android:maxLevel="10" />
<item android:drawable="@drawable/stat_sys_battery_11" android:maxLevel="11" />
<item android:drawable="@drawable/stat_sys_battery_12" android:maxLevel="12" />
<item android:drawable="@drawable/stat_sys_battery_13" android:maxLevel="13" />
<item android:drawable="@drawable/stat_sys_battery_14" android:maxLevel="14" />
<item android:drawable="@drawable/stat_sys_battery_15" android:maxLevel="15" />
<item android:drawable="@drawable/stat_sys_battery_16" android:maxLevel="16" />
<item android:drawable="@drawable/stat_sys_battery_17" android:maxLevel="17" />
<item android:drawable="@drawable/stat_sys_battery_18" android:maxLevel="18" />
<item android:drawable="@drawable/stat_sys_battery_19" android:maxLevel="19" />
<item android:drawable="@drawable/stat_sys_battery_20" android:maxLevel="20" />
<item android:drawable="@drawable/stat_sys_battery_21" android:maxLevel="21" />
<item android:drawable="@drawable/stat_sys_battery_22" android:maxLevel="22" />
<item android:drawable="@drawable/stat_sys_battery_23" android:maxLevel="23" />
<item android:drawable="@drawable/stat_sys_battery_24" android:maxLevel="24" />
<item android:drawable="@drawable/stat_sys_battery_25" android:maxLevel="25" />
<item android:drawable="@drawable/stat_sys_battery_26" android:maxLevel="26" />
<item android:drawable="@drawable/stat_sys_battery_27" android:maxLevel="27" />
<item android:drawable="@drawable/stat_sys_battery_28" android:maxLevel="28" />
<item android:drawable="@drawable/stat_sys_battery_29" android:maxLevel="29" />
<item android:drawable="@drawable/stat_sys_battery_30" android:maxLevel="30" />
<item android:drawable="@drawable/stat_sys_battery_31" android:maxLevel="31" />
<item android:drawable="@drawable/stat_sys_battery_32" android:maxLevel="32" />
<item android:drawable="@drawable/stat_sys_battery_33" android:maxLevel="33" />
<item android:drawable="@drawable/stat_sys_battery_34" android:maxLevel="34" />
<item android:drawable="@drawable/stat_sys_battery_35" android:maxLevel="35" />
<item android:drawable="@drawable/stat_sys_battery_36" android:maxLevel="36" />
<item android:drawable="@drawable/stat_sys_battery_37" android:maxLevel="37" />
<item android:drawable="@drawable/stat_sys_battery_38" android:maxLevel="38" />
<item android:drawable="@drawable/stat_sys_battery_39" android:maxLevel="39" />
<item android:drawable="@drawable/stat_sys_battery_40" android:maxLevel="40" />
<item android:drawable="@drawable/stat_sys_battery_41" android:maxLevel="41" />
<item android:drawable="@drawable/stat_sys_battery_42" android:maxLevel="42" />
<item android:drawable="@drawable/stat_sys_battery_43" android:maxLevel="43" />
<item android:drawable="@drawable/stat_sys_battery_44" android:maxLevel="44" />
<item android:drawable="@drawable/stat_sys_battery_45" android:maxLevel="45" />
<item android:drawable="@drawable/stat_sys_battery_46" android:maxLevel="46" />
<item android:drawable="@drawable/stat_sys_battery_47" android:maxLevel="47" />
<item android:drawable="@drawable/stat_sys_battery_48" android:maxLevel="48" />
<item android:drawable="@drawable/stat_sys_battery_49" android:maxLevel="49" />
<item android:drawable="@drawable/stat_sys_battery_50" android:maxLevel="50" />
<item android:drawable="@drawable/stat_sys_battery_51" android:maxLevel="51" />
<item android:drawable="@drawable/stat_sys_battery_52" android:maxLevel="52" />
<item android:drawable="@drawable/stat_sys_battery_53" android:maxLevel="53" />
<item android:drawable="@drawable/stat_sys_battery_54" android:maxLevel="54" />
<item android:drawable="@drawable/stat_sys_battery_55" android:maxLevel="55" />
<item android:drawable="@drawable/stat_sys_battery_56" android:maxLevel="56" />
<item android:drawable="@drawable/stat_sys_battery_57" android:maxLevel="57" />
<item android:drawable="@drawable/stat_sys_battery_58" android:maxLevel="58" />
<item android:drawable="@drawable/stat_sys_battery_59" android:maxLevel="59" />
<item android:drawable="@drawable/stat_sys_battery_60" android:maxLevel="60" />
<item android:drawable="@drawable/stat_sys_battery_61" android:maxLevel="61" />
<item android:drawable="@drawable/stat_sys_battery_62" android:maxLevel="62" />
<item android:drawable="@drawable/stat_sys_battery_63" android:maxLevel="63" />
<item android:drawable="@drawable/stat_sys_battery_64" android:maxLevel="64" />
<item android:drawable="@drawable/stat_sys_battery_65" android:maxLevel="65" />
<item android:drawable="@drawable/stat_sys_battery_66" android:maxLevel="66" />
<item android:drawable="@drawable/stat_sys_battery_67" android:maxLevel="67" />
<item android:drawable="@drawable/stat_sys_battery_68" android:maxLevel="68" />
<item android:drawable="@drawable/stat_sys_battery_69" android:maxLevel="69" />
<item android:drawable="@drawable/stat_sys_battery_70" android:maxLevel="70" />
<item android:drawable="@drawable/stat_sys_battery_71" android:maxLevel="71" />
<item android:drawable="@drawable/stat_sys_battery_72" android:maxLevel="72" />
<item android:drawable="@drawable/stat_sys_battery_73" android:maxLevel="73" />
<item android:drawable="@drawable/stat_sys_battery_74" android:maxLevel="74" />
<item android:drawable="@drawable/stat_sys_battery_75" android:maxLevel="75" />
<item android:drawable="@drawable/stat_sys_battery_76" android:maxLevel="76" />
<item android:drawable="@drawable/stat_sys_battery_77" android:maxLevel="77" />
<item android:drawable="@drawable/stat_sys_battery_78" android:maxLevel="78" />
<item android:drawable="@drawable/stat_sys_battery_79" android:maxLevel="79" />
<item android:drawable="@drawable/stat_sys_battery_80" android:maxLevel="80" />
<item android:drawable="@drawable/stat_sys_battery_81" android:maxLevel="81" />
<item android:drawable="@drawable/stat_sys_battery_82" android:maxLevel="82" />
<item android:drawable="@drawable/stat_sys_battery_83" android:maxLevel="83" />
<item android:drawable="@drawable/stat_sys_battery_84" android:maxLevel="84" />
<item android:drawable="@drawable/stat_sys_battery_85" android:maxLevel="85" />
<item android:drawable="@drawable/stat_sys_battery_86" android:maxLevel="86" />
<item android:drawable="@drawable/stat_sys_battery_87" android:maxLevel="87" />
<item android:drawable="@drawable/stat_sys_battery_88" android:maxLevel="88" />
<item android:drawable="@drawable/stat_sys_battery_89" android:maxLevel="89" />
<item android:drawable="@drawable/stat_sys_battery_90" android:maxLevel="90" />
<item android:drawable="@drawable/stat_sys_battery_91" android:maxLevel="91" />
<item android:drawable="@drawable/stat_sys_battery_92" android:maxLevel="92" />
<item android:drawable="@drawable/stat_sys_battery_93" android:maxLevel="93" />
<item android:drawable="@drawable/stat_sys_battery_94" android:maxLevel="94" />
<item android:drawable="@drawable/stat_sys_battery_95" android:maxLevel="95" />
<item android:drawable="@drawable/stat_sys_battery_96" android:maxLevel="96" />
<item android:drawable="@drawable/stat_sys_battery_97" android:maxLevel="97" />
<item android:drawable="@drawable/stat_sys_battery_98" android:maxLevel="98" />
<item android:drawable="@drawable/stat_sys_battery_99" android:maxLevel="99" />
<item android:drawable="@drawable/stat_sys_battery_100" android:maxLevel="100" />
</level-list>
 
Last edited:
Is my understanding (so Ive read) that the Droid doesnt read the battery in 1 on 1 intervals, as some other devices do.
 
See post above -- a simple experiment will prove this assumption or not!!!
 
Back
Top