Projekt HTC Desire HD Splash und Boot Animation

From JoBaPedia
Revision as of 10:40, 19 June 2014 by Joachim (talk | contribs) (→‎Erstellen einer Boot Animation)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Splash

Einführung

Der Splash Screen ist das Bild, das beim Start des Smartphones als erstes angezeigt wird. Standard ist der weiße Bildschirm mit grünem HTC Logo und schwarzem "quietly brilliant" Schriftzug. Man kann es aber gegen ein beliebiges Bild austauschen.

Voraussetzungen

  • Der Splash Screen muss beim HTC DHD in einen Bereich geflasht werden, für den S-OFF (Security ausgeschaltet) sein muss. Wie man das erreicht ist hier nicht beschrieben. Ggf. googeln.
  • Die Anweisungen sind für Linux mit installiertem Android SDK. Aber mit Windows geht es ungefähr genauso.
  • Smartphone Image mit freigeschalteten Entwickleroptionen und USB Debuging ein
* 7x auf Einstellungen/Über das Telefon/Build-Nummer tippen schaltet Entwickleroptionen frei
* jetzt über Einstellungen/Entwickleroptionen/USB-Debugging einschalten

Bild vorbereiten

Der Bildschirm hat die Auflösung 480x800. Man benötigt also ein Bild in dieser Dimension. Außerdem muss es ein ganz bestimmtes Speicherformat haben, sonst sieht man am Ende nur Müll. Mit Gimp kann man ein beliebiges Bild entsprechend skalieren und es dann als Windows BMP exportieren. Bei den BMP Export-Optionen dann Kompatibilitätsoption "Farbraum nicht schreiben" und erweiterte Option 24-bit wählen.

Dieses Bild muss nun noch mit dem Tool nbimg weiter modifiziert und dann nach splash1.img umbenannt werden. Infos zum Tool incl. download gibt es hier: http://forum.xda-developers.com/showthread.php?t=405118

wget -O nmbimg-1.1win32.zip http://forum.xda-developers.com/attachment.php?attachmentid=97694
unzip nmbimg-1.1win32.zip
wine nbimg.exe -F ein-24bit-480x800-bild.bmp -w 480 -h 800

Das Ergebnis ist eine Datei mit der Endung .bmb.nb


Flashen

Jetzt das Smartphone mit USB verbinden. Die Verbindung verifizieren mit

adb devices

Es sollte das Smartphone angezeigt werden:

List of devices attached 
HT0AVRX05387    device

Wenn statt "device" "offline" angezeigt wird, kann es sein, dass das Smartphone auf dem Display um Erlaubnis für die Verbindung fragt -> bestätigen.

Dann Gerät in Fastboot Modus bringen

adb reboot-bootloader 

Und jetzt das Bild flashen

fastboot flash splash1 ein-24bit-480x800-bild.bmp.nb

Jetzt das DHD neu starten und am neuen Startbild erfreuen :)

Boot Animation

Einführung

Die Boot Animation ist ein kurzes Filmchen, das nach dem Splash Screen während des Startvorgangs angezeigt wird. Es handelt sich im wesentlichen um eine oder mehrere Abfolgen von Jpeg Dateien die jeweils eine bestimmte Anzahl mal wiederholt werden, z.B. eine Startsequenz und eine Endlosschleife. Die Dateien sind pro Sequenz in Unterverzeichnissen gespeichert. Diese sind zusammen mit einer Steuerdatei desc.txt in einer nicht komprimierten Zipdatei namens bootanimation.zip.

Ich habe einiges versucht, um die vorhandene Datei in der Standardlocation /system/media zu ersetzen. Es ist mir aber nicht gelungen. Jetzt mache ich das mit einer App "Boot Animations" aus dem Play Store. Diese bietet einige nette Animationen zum Download, aber man kann auch eine eigene Zip-Datei von der SD-Karte nehmen.

Voraussetzung

Gerootetes Smartphone. Die App braucht su Rechte um die Animation zu schreiben.

Erstellen einer Boot Animation

Beliebige Filmchen erstellen (z.B. mit der Smartphone Kamera).

Aus diesen Filmen mit ffmpeg kurze Sequenzen als Jpeg Dateien extrahieren. Z.B. so:

mkdir part0 part1
ffmpeg -r 25 -ss 0 -t 2 -i VIDEO0119.3gp -b:v 2000 -q:v 1 -qcomp 0 -qblur 0 -s 480x800 -f image2 part0/%03d.jpeg
ffmpeg -r 25 -ss 2 -t 2 -i VIDEO0119.3gp -b:v 2000 -q:v 1 -qcomp 0 -qblur 0 -s 480x800 -f image2 part1/%03d.jpeg

Die Optionen im einzelnen (die Reihenfolge ist wichtig). Sie müssen entsprechend dem Ausgangsmaterial angepasst werden.

-r 25
25 Bilder pro Sekunde extrahieren (Die Steuerdatei der Animation sollte dann den selben Wert haben)
-ss 0
0 Sekunden am Anfang der Eingabedatei überspringen
-t 2
2 Sekunden (also bei -r 25 insgesamt 50 Bilder) extrahieren
-i videodatei
die Eingabedatei
-s 480x800
Die Größe der Jpeg Bilder. Das Eingangsmaterial wird entsprechend skaliert, ggf auch gestaucht
-b ...
-b:v 2000 -q:v 1 -qcomp 0 -qblur 0 regelt die Ausgabequalität. Sollte so immer ok sein.
%03d
Platzhalter für dreistellige Zahlen im Dateinamen.

Wenn ein Film z.B. deinterlaced werden muss und nur ein Bildausschnitt verwendet werden soll, kann man noch filtern:

-filter:v "yadif,crop=480:800:537:246"

Das verwendet den Deinterlacer yadif und schneidet einen 480x800 großen Bereich mit Offset 537,246 aus. Wenn die Größe dann schon passt, ist der -s Parameter nicht mehr nötig. Weitere Möglichkeiten am Besten googeln (ffmpeg deinterlace ...)

Die Steuerdatei desc.txt sieht dann z.B. so aus:

480 800 25
p 1 0 part0
p 0 0 part1

Die erste Zeile gibt die Framegröße und die Framerate an. Die weiteren Zeilen definieren die Sequenzen. Dabei ist die erste Zahl die Anzahl Wiederholungen (0 = bis Boot Ende), die zweite Zahl die Pause in Frames und am Ende das Sequenzverzeichnis.

Das ganze nun in eine Zip-Datei packen

zip -r0 meine-bootanimation.zip desc.txt part0 part1

Installieren der Boot Animation

Dieses Zip auf die SD-Karte übertragen und dann in der App im Reiter Local auswählen und Install selektieren.

Das war's schon :)