標籤:android開機動畫設定 android開機logo設定
我們要改動的是system>media目錄下的bootanimation.zip(手機開機動畫)這個檔案
先來講講這個檔案結構:該zip解壓後得到兩個檔案,
第一個檔案夾存放了開機時播放的圖片(圖為佳域G3原廠的動畫圖片包),見:
圖片編號001,002,.......010這些是用來控製圖片播放順序的
。第二個 desc. txt的文字文件存放的資料和文字用來控制播放圖片的速度(幀速)和播放方式,見:
下面講解這些文字資料的含義:720表示圖片像素寬為720像素點
1280表示圖片高為1280像素點
10表示以10幀每秒的速度播放這些圖片
P是play的首字母,意味著播放
第一個0表示動畫迴圈播放,直到開機(如果此處為1表示只播放一遍)
第二個0表示一組圖片播放完到下一組圖片延時為0秒(此處不用管,因為一般一組圖片就
行了,後面會再講)
folder1為存放圖片的檔案夾名稱。
總之,通俗講,就是開機logo顯示完以後,系統以10張每秒的速度播放folder1檔案夾中的圖片,圖片大小為720*1280,並不斷迴圈播放這組圖片直到開機。
講完了結構,可以來開工了!(強烈建議,直接把自己要用的圖片組命名為001,002, 003, 004.........格式為png或jpg都行,大小必須為720*1280,把圖片直接複製進bootanimation.zip的folder1檔案夾中,並刪掉原來的10張圖片, 控制文本desc. txt直接修改就行,不要自己建立!避免帶來不必要麻煩!因為安卓基於linux系統,windows下編碼不同,直接編寫的desc.txt是無法控製圖片播放的)。
Android 開機其實總共會出現3個畫面:
1、第一個就是 linux 系統啟動,出現Linux小企鵝畫面(reboot);
2、當android系統從Linux核心啟動後,將會執行anddroid平台的初始化過程,螢幕上將會出現”A N D R I O D”文字字樣畫面(但是在我的系統裡這個介面並不沒有出現;或者說是肉眼沒有看到這個畫面的出現,這裡依然送上這個畫面的修改方法);
3、開機動畫:這個階段就是大家能看到的系統啟動過程中,顯示完"A N D R O I D"字樣後顯示的圖片,類似進度條一樣,圖片內容也是“A N D R O I D”字樣。
第一個(小企鵝)畫面的修改:
Linux Kernel引導啟動後,載入該圖片,涉及到的代碼在如下的目錄中:
/kernel/trunk/drivers/video/fbmem.c
/kernel/trunk/drivers/video/fbmem.h
/kernel/trunk/drivers/video/logo/logo.c
/kernel/trunk/drivers/video/logo/logo.h
/kernel/trunk/drivers/video/logo/Kconfig
/kernel/trunk/include/linux/linux_logo.h
讓核心中添加此開機logo的步驟如下:
1、讓核心支援啟動LOGO
在核心目錄中 make menuconfig
Device Drivers ----> Graphics support ---->
選中 Bootup logo ----> Standard 224-color Linux logo
2、製作開機logo的圖片
將要當作開機LOGO的圖片按照你螢幕的大小進行裁減,並將其儲存為bmp格式 或 png格式; 例如linuxlogo.bmp 或 linuxlogo.png
在linux下輸入以下命令(for bmp):
#bmptoppm linuxlogo.bmp > linuxlogo.ppm //產生ppm
#ppmquant 224 linuxlogo.ppm > linuxlogo224.ppm //轉換成224顏色
#pnmnoraw linuxlogo224.ppm > linuxlogo224.ppm //轉換成ascii格式
在Linux下輸入以下命令(for png):
# pngtopnm linuxlogo.png > linuxlogo.pnm
# pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm
# pnmtoplainpnm linuxlogo224.pnm > linuxlogo224.ppm
註:上述命令需要安裝netpbm的工具包 sudo apt-get install netpbm
3、將LOGO檔案放入核心中
拷貝到製作好的LOGO檔案到 /drivers/video/logo 檔案夾
替換 logo_linux_clut224.ppm 檔案,還要刪除該檔案夾下的logo_linux_clut224.o和logo_linux_clut224.c
4、重新編譯核心就OK了!這裡就不詳說。
第二個(”A N D R I O D”文字字樣畫面)畫面的修改:
相關代碼:
/system/core/init/init.c
/system/core/init/init.h
/system/core/init/init.rc
/system/core/init/logo.c
*.rle檔案的製作步驟:
1). 製作當前螢幕像素的圖片
使用PS製作一張適合螢幕大小的圖片,儲存時選“儲存為 Web 所用格式”,然後在彈開的視窗上,“預設”項選擇“PNG-24”,儲存為android_logo.png(
註:好像只支援png-24,其他格式產生的rle檔案顯示不正常,有興趣大家可以再驗證一下。
2). 將圖片轉換為raw格式
使用linux下的ImageMagick內建的convert命令,進行raw格式轉換,命令為:
convert -depth 8 android_logo.png rgb:android_logo.raw
註:ubuntu 10.04 預設已經安裝ImgageMagick工具,如果當前系統沒有安裝,可以執行下面的命令安裝:
sudo apt-get install imagemagick
3). 將raw格式轉化為rle檔案
需要用到android編譯後的rgb2565工具,在android/out/host/linux-x86/bin目錄下(android為當前源碼所在目錄),轉換命令如下:
rgb2565 -rle < android_logo.raw > initlogo.rle
到目前為止,啟動需要顯示的映像已經做好了,就是initlogo.rle,注意檔案名稱必須是這個,如果想改檔案名稱,需要修改
android/system/core/init/init.h中的宏:
#define INIT_IMAGE_FILE "/initlogo.rle"
4).將製作好的initlogo.rle檔案拷貝到android系統的root目錄下,也就是out/target/product/..../root下
最後編譯成檔案系統鏡像 xxx.img重新燒寫。OK。
第三個(開機動畫)畫面
其實這個部分的動畫是使用兩個圖片顯示出來的,具體的圖片檔案所在路徑為:frameworks/base/core/res/assets/images,大家看一下就知道了,也就知道怎麼修改了。
和這部分相關的源碼檔案主要是如下幾個:frameworks/base/cmds/bootanimation下面的幾個檔案就是的了,可以看看BootAnimation.cpp檔案的內容,有如下程式碼片段:
bool BootAnimation::android()
{
initTexture(&mAndroid[0], mAssets, "images/android-logo-mask.png");
initTexture(&mAndroid[1], mAssets, "images/android-logo-shine.png");
bool BootAnimation::android()
{
initTexture(&mAndroid[0], mAssets, "images/android-logo-mask.png");
initTexture(&mAndroid[1], mAssets, "images/android-logo-shine.png"); 這就是設定顯示的前景圖片和背景圖片。
接著看還有如下代碼:
[cpp] #define USER_BOOTANIMATION_FILE "/data/local/bootanimation.zip"
#define SYSTEM_BOOTANIMATION_FILE "/system/media/bootanimation.zip"
#define SYSTEM_ENCRYPTED_BOOTANIMATION_FILE "/system/media/bootanimation-encrypted.zip"
#define USER_BOOTANIMATION_FILE "/data/local/bootanimation.zip"
#define SYSTEM_BOOTANIMATION_FILE "/system/media/bootanimation.zip"
#define SYSTEM_ENCRYPTED_BOOTANIMATION_FILE "/system/media/bootanimation-encrypted.zip" 看宏名相信大家就知道了,這就是設定動畫檔案的名稱了。為什麼會又顯示圖片又設定動畫顯示呢,這個Android版本有關。顯示兩個圖片:前景和背景圖片 是在1.5版本用,後來就改為了設定動畫檔案,就是:bootanimation.zip,是zip格式的,這個檔案包含三個內容:兩個目錄:part0 和part1,一個檔案desc.txt。
兩個目錄用來包含要顯示的圖片,分為第一階段和第二階段。剩下的檔案就是設定關於如何顯示的資訊:
樣本如下:
480 800 15
p 1 0 part0
p 0 0 part1
具體的含義如下:
480--width of the image, 800--height of the image, 15--frames of second
p 1, display one time
p 0, display recycling till handset power on finished,相信大家懂了!呵呵。
你可以製作自己的bootanimation.zip檔案放置在合適的目錄下,這樣可以代替預設的開機介面:這裡說的合適的目錄就是上面的宏定義,大家都懂^_^!
怎麼製作bootanimation.zip檔案呢?和上面一樣建立兩個目錄和一個檔案,然後使用軟體或者是命令列大包即可
zip -r -0 bootanimation.zip part0 part1 desc.txt