[MOD] Batterieanzeige anpassen / Erfahrung UOT Kitchen

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:

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:

attachment.php


  1. 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
  2. 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
  3. Backup
    Wie immer: Sichert euch den Originalzustand dieser Datei!
  4. 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)
  5. 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ßt
    Code:
    stat_sys_battery.xml
    und befindet sich im Ordner res\drawable\ des APK.
    Diese Datei kopiert ihr aus der APK in ein beliebiges Verzeichnis. Danach legt ihr zwei Kopien dieser Datei an und nennt diese
    Code:
    stat_sys_battery_transmit.xml
    und
    Code:
    stat_sys_battery_receive.xml
    Die beiden Kopien fügt ihr nun wieder dem APK zu (überschreiben der vorhandenen Version).
  6. 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
    in den Fastboot-Modus kommen
    Nach dem Reboot muss dann das Recovery-Image geladen werden, das Prozedere ist hier das gleiche wie beim Rooten:
    Code:
    fastboot boot recovery.img
    Jetzt befindet sich das Telefon im CWM-Recovery-Modus. Wir müssen nun die System-Partition mounten. Dazu auf der Kommandozeile folgendes eintippen:
    Code:
    adb shell mount -o rw -t yaffs2 /dev/block/mtdblock11 /system
    Nachdem wir /system gemountet haben, können wir die angepasste framework-res.apk hochladen. Auch hier wieder ein einfacher adb-Befehl:
    Code:
    adb push framework-res.apk /system/framework
  7. Reboot
    Fast geschafft - nur noch rebooten! Dazu folgendes Statement:
    Code:
    adb reboot
Fertig! Wenn alles geklappt hat, dann habt ihr jetzt eine Batterieanzeige, die schick ist und in 5%-Schritten zählt.

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!
 

Anhänge

  • status.png
    status.png
    3,1 KB · Aufrufe: 893
  • framework-res-icons.zip
    33,1 KB · Aufrufe: 181
  • Danke
Reaktionen: microfink, Tubii und eenemeenemuu
Hallo,

vielen Dank für den super Tip und die tolle Anleitung. Mich hat die ungenaue Anzeige von Anfang an genervt, aber jetzt ist es vieeel besser!
 
Top dankeschoen :)
 
Bernd? Ich hab das ja mit den Icons gemacht aber wenn ich weniger als 60% habe steht gleich 40 da und das bei 80 usw auch aber der Rest fehlt, ist das normal

Mit total commander hab ich die beiden Dateien aber ersetzt :/


Gesendet von meinem XT320 mit der Android-Hilfe.de App
 
Zuletzt bearbeitet:
Hmmm... da ist wohl was schiefgelaufen. Schau mal im aktuellen (also geänderten) APK nach, ob die Dateigrößen der drei betroffenen XMLs gleich sind.

Ansonsten weiß ich auch nicht weiter.
 
Ja sind gleich (2.42kb)


Der ursprüngliche Beitrag von 17:33 Uhr wurde um 17:36 Uhr ergänzt:

Ich glaub ich hab das Problem bei den neuen Dateien ist die Endung XML. XML zweimal also ist das richtig?

Ehm Wieso haengt sich nun mein Bootloader auf bzw der Bootscreen laed immer neu ?
Hab die Recovery apk raufgezogen und bricht immernoch immer wieder ab

Ganz einfach gemacht, SBF neu geflasht Root drauf und woops apps waren noch da und geht wieder alles.
 
Zuletzt bearbeitet:

Ähnliche Themen

T
Antworten
20
Aufrufe
5.132
Tubii
T
E
  • EdwinVanDeRilde
Antworten
2
Aufrufe
1.146
EdwinVanDeRilde
E
B
Antworten
10
Aufrufe
3.176
Bernd.Defy
B
Zurück
Oben Unten