Android 系統(tǒng)實(shí)現(xiàn)多種開(kāi)機(jī)動(dòng)畫(huà)和logo切換功能
前言
基于mtk6580,添加多l(xiāng)ogo和開(kāi)關(guān)機(jī)動(dòng)畫(huà)切換
描述
目前android開(kāi)機(jī)畫(huà)面由三個(gè)部分(階段)組成,第一部分在bootloader啟動(dòng)時(shí)顯示(靜態(tài)),第二部分在啟動(dòng)kernel時(shí)顯示(靜態(tài)),第三部分在系統(tǒng)啟動(dòng)時(shí)(bootanimation)顯示(動(dòng)畫(huà))。
添加資源
1.在device/tangxun/tx6580_weg_m/ProjectConfig.mk,找到BOOT_LOGO=這項(xiàng),記住這項(xiàng)內(nèi)容(如hd720,),在vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/目錄下找到BOOT_LOGO=對(duì)應(yīng)的文件夾把你的圖片放進(jìn)去,圖片我是這樣命名的hd720_kernel_i7.bmp.(如果你只是替換的話更換hd720_kernel.bmp和hd720_uboot.bmp這兩張圖片即可,新圖片的名字需與舊圖片一致)
2.在vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/rules.mk下修改RESOURCE_OBJ_LIST列表,如圖:
最后兩項(xiàng)就是我添加的
3.同目錄下update文件中添加
添加標(biāo)識(shí)區(qū)分不同logo
思路:首先我們添加的標(biāo)識(shí),不能被輕易清除,包括恢復(fù)出廠設(shè)置情況下。所以我選擇在protect_f分區(qū)下創(chuàng)建空文件的方式,在show logo的時(shí)候判斷相應(yīng)文件是否存在,來(lái)展示不同的logo和動(dòng)畫(huà)。
1.選擇一種要展示的logo和動(dòng)畫(huà),在protect_f分區(qū)下創(chuàng)建.dat后綴的文件,刪除其他類(lèi)型動(dòng)畫(huà)在protect_f分區(qū)下的相應(yīng)文件
private void createOrDeleteFile(String str){ String sDir = "/protect_f"; File fDir = new File(sDir); if (fDir.exists()){ try { Runtime.getRuntime().exec("chmod 777"+sDir); } catch (IOException e) { e.printStackTrace(); } } File mFile = new File(sDir,File_moto_logo); if (mFile.exists()){ mFile.delete(); } mFile = new File(sDir,File_samsun_logo); if (mFile.exists()){ mFile.delete(); } mFile = new File(sDir,"sysBoot_logo_null.dat"); if (mFile.exists()){ mFile.delete(); } if (str != null){ mFile = new File(sDir,str); if (!mFile.exists()){ try { mFile.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } } }
2.在vendor/mediatek/proprietary/external/libshowlogo/charging_animation.cpp文件中,添加logo切換
const char LOGO_ON5_ANI[] = "/protect_f/sysBoot_logo_moto.dat"; const char LOGO_I7_ANI[] = "/protect_f/sysBoot_logo_samsun.dat"; /* * Show kernel logo when phone boot up * */ void show_kernel_logo(){ //這是系統(tǒng)本來(lái)就有的 SLOGD("[libshowlogo: %s %d]show kernel logo, index = 38 \n",__FUNCTION__,__LINE__); if (error_flag == 0) { if(open(LOGO_ON5_ANI,O_RDONLY) >= 0){ anim_show_logo(kernel_logo_position+1); property_set("ani_type","custom"); property_set("animation_num","On5_Ani"); }else if (open(LOGO_I7_ANI,O_RDONLY) >= 0) { anim_show_logo(kernel_logo_position+2); property_set("ani_type","custom"); property_set("animation_num","I7_Ani"); }else{ anim_show_logo(kernel_logo_position); property_set("ani_type","android"); property_set("animtion_num","android"); } } }
3.framworks/base/cmds/bootanimation/BootAnimation.cpp文件中,在void BootAnimation::initBootanimationZip()方法中添加切換動(dòng)畫(huà)
char anitype[PROPERTY_VALUE_MAX]; char aninum[PROPERTY_VALUE_MAX]; property_get("ani_type",anitype,""); property_get("animation_num",aninum,""); if (strcmp("custom",anitype) == 0) { if (strcmp("On5_Ani", aninum)==0) { if (access("/system/media/bootanimation_custom.zip", R_OK) == 0) { if ((zipFile = ZipFileRO::open("/system/media/bootanimation_custom.zip")) != NULL) { mZip = zipFile; } } }else if (strcmp("I7_Ani", aninum)==0){ if (access("/system/media/bootanimation_s6.zip", R_OK) == 0) { if ((zipFile = ZipFileRO::open("/system/media/bootanimation_s6.zip")) != NULL) { mZip = zipFile; } } } } if (zipFile == NULL) {
總結(jié)
以上所述是小編給大家介紹的Andorid 系統(tǒng)實(shí)現(xiàn)多種開(kāi)機(jī)動(dòng)畫(huà)和logo切換功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- Android TextView字幕效果實(shí)例
- Android自定義attr的各種坑
- Android 日歷控件庫(kù),可左右滑動(dòng),顯示公歷,農(nóng)歷,節(jié)假日等功能
- Android開(kāi)發(fā)之Picasso通過(guò)URL獲取用戶頭像的圓形顯示
- Android實(shí)現(xiàn)精確到天時(shí)分秒的搶購(gòu)倒計(jì)時(shí)
- Android?jar庫(kù)源碼Bolts原理解析
- Android使用手勢(shì)監(jiān)聽(tīng)器GestureDetector遇到的不響應(yīng)問(wèn)題
- Android?狀態(tài)管理之Lifecycle淺析
相關(guān)文章
Android實(shí)現(xiàn)實(shí)時(shí)通信示例
本篇文章主要介紹了Android實(shí)時(shí)通信示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03Android插件化-RePlugin項(xiàng)目集成與使用詳解
這篇文章主要介紹了Android插件化-RePlugin項(xiàng)目集成與使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11Android工具類(lèi)ImgUtil選擇相機(jī)和系統(tǒng)相冊(cè)
這篇文章主要為大家詳細(xì)介紹了Android工具類(lèi)ImgUtil選擇相機(jī)和系統(tǒng)相冊(cè),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10OpenHarmony如何調(diào)用電話服務(wù)API撥打電話
OpenHarmony3.1版本標(biāo)準(zhǔn)系統(tǒng)增加了通話相關(guān)的聯(lián)系人應(yīng)用,來(lái)電應(yīng)用等,在系統(tǒng)服務(wù)層面電話相關(guān)功能也比較完善,這篇文章主要介紹了OpenHarmony如何調(diào)用電話服務(wù)API撥打電話2022-11-11Android單片機(jī)與藍(lán)牙模塊通信實(shí)例代碼
這篇文章主要介紹了Android單片機(jī)與藍(lán)牙模塊通信實(shí)例代碼,非常實(shí)用,特此分享給大家,需要的朋友可以參考下2016-05-05Android Retrofit的簡(jiǎn)單介紹和使用
這篇文章主要介紹了Android Retrofit的簡(jiǎn)單介紹和使用2017-03-03Android游戲開(kāi)發(fā)學(xué)習(xí)①?gòu)椞∏驅(qū)崿F(xiàn)方法
這篇文章主要介紹了Android游戲開(kāi)發(fā)學(xué)習(xí)①?gòu)椞∏驅(qū)崿F(xiàn)方法,涉及Android通過(guò)物理引擎BallThread類(lèi)模擬小球運(yùn)動(dòng)的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10