setup--  开关机动画  和 logo

各自公司定制目录 而且厂商什么的都不一样, 需要具体对待

 

高通平台默认logo存放在lk中的静态数组,分辨率为214X133,仅显示一只小企鹅。

首先先要看logo图是存放在 ap侧 还是 cp 侧,是否有路径定制

1. ap 侧
比如 ap  devces/Logo/logo.bmp
 
(1)source build/envsetup.sh
(2)lunch xxx

则会在  /build/tools/binary/目录下产生splash.img文件

2. cp 侧
比如 cp  amss/BOOT.XF.1.4/boot_images/QcomPkg/Tools/

使用高通提供的脚本(logo_gen.py)生成 splash.img

1 sudo apt-get install python-imaging 如果有 python则不用安装
2 在 logo.bmp 的跟目录下执行脚本,  python logo_gen.py  logo.bmp -- 生成  splash.img

adb reboot bootloader
fastboot flash splash splash.img
fastboot reboot

(其他用   cat 1.img 2.img > 3.img方式将两个img合成即可)
 

 

目前android开机画面由三个部分(阶段)组成,
第一部分在bootloader启动时显示(静态),


第二部分在启动kernel时显示(静态),
ndroid系统 init 进程启动过程中的画面。 
第二个开机画面的内容是由文件 initlogo.rle 来指定的,如果文件 initlogo.rle 文件不存在,
或者在显示它的过程中出现异常,那么 Android 就以文本的方式来显示第二个开机画面,
即向编号为0的控制台(/dev/tty0)输出“ANDROID”这7个字符。

如有兴趣可以查看系统源码: 
<source>/system/core/init/ 
<source>/system/core/init/init.c 
<source>/system/core/init/logo.c 
...


第三部分在系统启动时(bootanimation)显示(动画)。
应用程序 bootanimation 显示的动画。 
bootanimation 程序会检查系统制定目录下是否存在动画文件(.zip文件),如果不存在,
则显示的第三个开机画面是Android系统默认的开机动画(明暗闪烁的 Android Logo),
否则的话,第三个开机画面就是由用户自定义的开机动画。

如有兴趣可以查看系统源码: 
<source>/frameworks/base/cmds/bootanimation/

1、修改默认的开机画面 
 Android系统默认的开机动画是由两张图片android-logo-mask.png和android-logo-shine.png通过程序调用实现的动画效果(明暗变化)。 
 这两张图片保存在<android-source>/frameworks/base/core/res/assets/images中。

简单替换的方法就是自定义png图片,替换 android-logo-mask.png文件,并重新编译:

$ mmm -B frameworks/base/core/res/1

会生成新的<android-source>/out/target/product/xxx/system/framework/framework-res.apk文件,替换的图片就在其中。

2、使用自定义的开机动画 
系统源码中有关开机动画的文件定义了两个宏:

#define USER_BOOTANIMATION_FILE "/data/local/bootanimation.zip" 
#define SYSTEM_BOOTANIMATION_FILE "/system/media/bootanimation.zip"12

因此我们只要制作名为bootanimation.zip的动画文件,并放到上面其中之一的目录下就好了。 
具体操作如下: 
(1) 制作bootanimation.zip动画包 
1> 准备png图片(大量图片轮播成为动画效果) 
2> 编写动画描述文件 desc.txt,内容格式如下: 
第一行的三个数字分别表示开机动画在屏幕中的显示宽度、高度以及帧速(fps)。 
剩余的每一行都用来描述一个动画片断,这些行必须要以字符“p”来开头,后面紧跟着两个数字以及一个文件目录路径名称。 
第一个数字表示一个片断的循环显示次数,如果它的值等于0,那么就表示无限循环地显示该动画片断。 
第二个数字表示每一个片断在两次循环显示之间的时间间隔,这个时间间隔是以一个帧的时间为单位的。 
文件目录下面保存的是一系列png文件,这些png文件会被依次显示在屏幕中。


600 480 24          // 开机动画大小为宽600 高 480,动画的显示速度为24帧每秒。
p   1   0   part1   // part1目录下png图片显示一次,循环间隔为0帧时间。
p   0   10  part2   // part2目录下png图片无限循环,循环间隔为10帧时间。123

(2) 把做好的动画包放入指定目录, 用mk脚本操作,类似如下操作
$ cp bootanimation.zip <source>/out/target/product/xxx/system/media/1
(3) 重新生成 system.img 镜像

 

二、 MTK

1.修改开机logo

找到目录
trunk/mediatek/custom/common/lk/logo/该目录下面有很多的文件夹,都是在不同分辨率下面的logo
要修改的话就看需要修改哪个分辨律下面的了,然后进入相应的目录下面,修改里面的图片,需要注意的是里面的图片必须是bmp格式的。

修改开机动画
需要进入目录trunk/frameworks/base/data/sounds/
里面会看到一个压缩包bootanimation.zip,解压就会发现里面有两个文件夹和一个文本文件,
比如:文件夹part0,文件夹part1,还有文本文件desc.txt,文件夹里面放的都是图片,desc.txt里面要写入如下内容,需要注意格式:
600 1024 8    (600,1024是分辨率,8是设置的帧数->每秒切换图片的张数)
p 1 2 part0    (p是标识符,1代表循环一次,2代表循环一次完成之后停留2*(1/8)秒后继续下一次循环之间的间隔)
p 0 3 part1    (同上)
修改完成desc文件之后需要将这三个文件进行打包,以存储方式打包成bootanimation.zip的形式放在
trunk/frameworks/base/data/sounds/
目录下就可以了。

out/target/product/sanstar82_cwet_kk/system/media 找到 bootanimation.zip和shutanimation.zip
2.复制出来,解压,修改,然后在压缩(以存储的方式)
3.把压缩后的文件分别放在mediatek/dyna/和system/media 下面
4.修改地址:build/target/product/common.mk文件
5.PRODUCT_COPY_FILES += \mediatek/dyna/bootanimation.zip:system/media/bootanimation.zip \mediatek/dyna/shutanimation.zip:system/media/shutanimation.zip \
6.最后重新编译就ok了。





2.Android MTK选择重启,可以完整播放完关机动画

重启和关机一样,都可以完整播放完关机动画[SOLUTION]敝司Default设计,关机过程会有一个delayForPlayAnimation,但是重启(除了恢复出产设置)不会,
由于重启本身就牵涉到时间上的连续行,不会有任何delay。修改方案:
贵司只需要在shutdownThread.java的
public static void rebootOrShutdown(boolean reboot, String reason)

{里面将如下if判断去掉:
if ( (reason != null) && reason.equals("recovery") ) {delayForPlayAnimation();

}
只保留delayForPlayAnimation();只要reboot都做delay