B
Bernd.Defy
Fortgeschrittenes Mitglied
- 25
Hallo zusammen,
die Batterieanzeige am Defy hat mir noch nie so richtig gefallen, und UOT-Kitchen (UOT Kitchen) bietet tolle Anpassungsmöglichkeiten, z.B. für eben jene Anzeige.
Ich habe nur den batteriemod angewendet, musste aber feststellen, dass Motorola irgendwas anders macht als alle anderen - der MOD klappte nur halb. Die neuen Icons waren zwar da, aber die Batteriezustände zählten nicht in 5%-Schritten, sondern 100%-->60%-->40%-->20%. Zudem widerspiegelten diese Zustände nicht den durch andere Apps angezeigten. Wenn die Batterieanzeige auf 60% stand, war die Batterie lt. anderer Programme noch zu 70% voll, analog gilt dies für 40%.
Der Grund dafür findet sich in der framework-res.apk (Verzeichnis /system/framework). Normalerweise wird die Anzeige des Batteriestatus durch die Datei stat_sys_battery.xml definiert, dort ist auch alles fein in 5%-Abstufungen hinterlegt. Motorola weiß es besser und nutzt die Datei stat_sys_battery_receive.xml bzw. stat_sys_battery_transmit.xml. Dort ist die Relation zwischen Batteriestatus und angezeigtem Bild hinterlegt:
Hinter "@drawable/stat_sys_battery_*" verstecken sich die gleichnamigen png-Grafiken aus dem Verzeichnis /res/drawable-mdpi der framework-res.apk.
Wer dennoch eine schicke (und in 5%-Schritten zählende) Batterieanzeige haben möchte, geht wie folgt vor. Das Ergebnis sieht so aus:
Was, wenn ich jetzt einen Bootloop habe?
Ein Bootloop heißt, dass die Motorola-Animation immer und immer wieder neustartet. Kein Grund zur Panik! Einfach wieder an den PC anstöpseln - adb funktioniert nämlich noch. Im Bootloop-Fall einfach ab Punkt 6 wieder anfangen - diesmal aber wieder die originale framework-res.apk (ihr habt ja ein Backup gemacht!) einspielen.
Viele Grüße!
die Batterieanzeige am Defy hat mir noch nie so richtig gefallen, und UOT-Kitchen (UOT Kitchen) bietet tolle Anpassungsmöglichkeiten, z.B. für eben jene Anzeige.
Ich habe nur den batteriemod angewendet, musste aber feststellen, dass Motorola irgendwas anders macht als alle anderen - der MOD klappte nur halb. Die neuen Icons waren zwar da, aber die Batteriezustände zählten nicht in 5%-Schritten, sondern 100%-->60%-->40%-->20%. Zudem widerspiegelten diese Zustände nicht den durch andere Apps angezeigten. Wenn die Batterieanzeige auf 60% stand, war die Batterie lt. anderer Programme noch zu 70% voll, analog gilt dies für 40%.
Der Grund dafür findet sich in der framework-res.apk (Verzeichnis /system/framework). Normalerweise wird die Anzeige des Batteriestatus durch die Datei stat_sys_battery.xml definiert, dort ist auch alles fein in 5%-Abstufungen hinterlegt. Motorola weiß es besser und nutzt die Datei stat_sys_battery_receive.xml bzw. stat_sys_battery_transmit.xml. Dort ist die Relation zwischen Batteriestatus und angezeigtem Bild hinterlegt:
HTML:
<?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="4" />
<item android:maxLevel="5">
<animation-list android:oneshot="false"
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:duration="1000" android:drawable="@drawable/stat_sys_battery_5" />
<item android:duration="1000" android:drawable="@drawable/stat_sys_battery_blink" />
</animation-list>
</item>
<item android:drawable="@drawable/stat_sys_battery_20" android:maxLevel="20" />
<item android:drawable="@drawable/stat_sys_battery_40" android:maxLevel="50" />
<item android:drawable="@drawable/stat_sys_battery_60" android:maxLevel="70" />
<item android:drawable="@drawable/stat_sys_battery_100" android:maxLevel="100" />
</level-list>
Hinter "@drawable/stat_sys_battery_*" verstecken sich die gleichnamigen png-Grafiken aus dem Verzeichnis /res/drawable-mdpi der framework-res.apk.
Wer dennoch eine schicke (und in 5%-Schritten zählende) Batterieanzeige haben möchte, geht wie folgt vor. Das Ergebnis sieht so aus:
- Herunterladen der Icons
Herunterladen der Icons. Alle Credits dafür gehen an das UOT-Kitchen, ich habe die Bilder auf die native Auflösung 25x25px konvertiert (UOT generiert 38x38px-Icons). Die Icons findet ihr hier
- Extraktion der aktuellen framework-res.apk aus eurem Defy
Zur Extraktion kopiert ihr die Datei /system/framework/framework-res.apk aus Eurem Defy auf euren PC. Ich nutze dazu adb, welches ihr für's einspielen ohnehin benötigt. Kopiert Euch die Datei in ein beliebiges Verzeichnis, am besten in das, welches ihr schon für's rooten genutzt habt - das recovery-image brauchen wir später noch. Ich nutze fürs kopieren direkt adb:
Code:adb pull /system/framework/framework-res.apk
- Backup
Wie immer: Sichert euch den Originalzustand dieser Datei!
- Austausch der Bilddateien in framework-res.apk
Fügt nun die Bilder, die ihr heruntergeladen habt, in die apk-Datei ein. Eine APK ist letzlich nichts anderes als eine ZIP-Datei. Im Total Commander für Windows (gibt's als Testversion) könnt ihr die Datei ganz einfach mit Doppelklick öffen und die Ordnerstruktur sehen, alternativ könnt ihr aber auch Winzip, WinRAR, 7Zip oder ähnliches nutzen. Benennt notfalls die Dateiendung APK temporär um in ZIP.
Innerhalb der framework-res.apk navigiert ihr in den Ordner /res/drawable-mdpi und fügt die Bild-Dateien dort ein (die vorhandenen einfach überschreiben)
- Anpassung der Batterieanzeige auf 5%-Schritte
Die oben beschriebene Motorola-Interpretation des Batteriestatus ist nicht das Gelbe vom Ei. Zum Glück ist die Standardversion auch schon da: Sie heißtCode:stat_sys_battery.xml
Diese Datei kopiert ihr aus der APK in ein beliebiges Verzeichnis. Danach legt ihr zwei Kopien dieser Datei an und nennt dieseCode:stat_sys_battery_transmit.xml
Code:stat_sys_battery_receive.xml
- Upload der geänderten framework-res.ap
Die framework-res.apk kann leider nicht im laufenden Betrieb überschrieben werden. Daher müßt ihr das Defy wieder in den Recovery-Modus bringen. Ich nutze dafür ADB, ihr könnt aber auch das Telefon mit der Tastenkombi POWER + VOLUP + VOLDOWN starten. Wenn ihr das Handy im Debug-Modus angestöpselt habt, könnt ihr mit
Code:adb reboot-bootloader
Nach dem Reboot muss dann das Recovery-Image geladen werden, das Prozedere ist hier das gleiche wie beim Rooten:
Code:fastboot boot recovery.img
Code:adb shell mount -o rw -t yaffs2 /dev/block/mtdblock11 /system
Code:adb push framework-res.apk /system/framework
- Reboot
Fast geschafft - nur noch rebooten! Dazu folgendes Statement:
Code:adb reboot
Was, wenn ich jetzt einen Bootloop habe?
Ein Bootloop heißt, dass die Motorola-Animation immer und immer wieder neustartet. Kein Grund zur Panik! Einfach wieder an den PC anstöpseln - adb funktioniert nämlich noch. Im Bootloop-Fall einfach ab Punkt 6 wieder anfangen - diesmal aber wieder die originale framework-res.apk (ihr habt ja ein Backup gemacht!) einspielen.
Viele Grüße!