Android系统启动过程采用开机动画或开机视频进行展示,等待系统启动完成。在Android原生开机中只开机动画。但芯片厂商一般提供的源码会增加开机视频支持,采用MediaPlayer来实现。本来主要介绍如何修改开机视频。
1. 开机视频
通过frameworks/base/cmds/bootanimation/BootAnimation.pp文件threadLoop方法确定是否支持开机视频,不支持的话就使用开机动画。
if (mVideoAnimation){//开机视频
result = video();
} else {//默认的开机动画逻辑
if (mZipFileName.isEmpty()) {
result = android();
} else {
result = movie();
}
}
这段代码由mVideoAnimation变量控制系统启动过程是使用开机视频还是开机动画,说明是支持开机视频的,因此我们可以进行修改。查看mVideoAnimation被设置的地方,由属性persist.sys.bootvideo.enable和persist.sys.bootvideo.showtime以及是否存在视频文件确定。
视频文件目录:
/data/local/bootanimation.ts和/product/media/bootanimation.ts,前者优先级较高。
//默认是false,所以我们需要添加该属性,并改为true
std::string bootVideoEnable = android::base::GetProperty("persist.sys.bootvideo.enable", "false");
//默认是-1,根据下面的判断语句,我们可以不设置showtime属性
std::string showTime = android::base::GetProperty("persist.sys.bootvideo.showtime", "-1");
//根据视频文件、enable、showtime确定是否启动开机视频
if (mVideoFile != NULL && !strcmp(bootVideoEnable.c_str(), "true") &&(atoi(showTime.c_str()) != 0)) {
mVideoAnimation = true; //被设置true
} else {
bootVideoEnable.c_str(), showTime.c_str());
}
在不修改代码的情况,通过我们通过以下步骤来修改开机视频。
- 制作开机视频文件
开机视频文件一般由美工提供,我们主要将视频文件添加到系统中,并保证在编译过程能复制到正确的位置。修改device/rockchip/rk3588/device.mk文件,在PRODUCT_COPY_FILES增加$(LOCAL_PATH)/bootanimation.ts:/product/media/bootanimation.ts。也就是编译时候,将开机视频从当前目录复制到/product/media/目录。
因为用到的开发板是香橙派的pi5pro,所以采用了目录rockchip/rk3588,大家根据自己情况修改。因为视频文件放置在device/rockchip/rk3588/目录下,所以采用了$(LOCAL_PATH)/bootanimation.ts来设置视频的src,实际应该改成自己目录。一般情况我们都会把自己修改或增加内容统一放在某个目录,避免后续其他机型也需要适配,迁移复杂。
-
为了节约存储空间,在编译过程我们不复制
bootanimation.zip文件到/system/media目录。将
device/rockchip/common/device.mk下面内容注释掉。
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/bootanimation.zip:/system/media/bootanimation.zip
- 增加 使能(enable) 开机视频属性和时间
修改device/rockchip/rk3588/device.mk文件,在PRODUCT_PROPERTY_OVERRIDES增加属性persist.sys.bootvideo.enable = true。
- 设置开机时间
开机视频最长支持120秒,在PRODUCT_PROPERTY_OVERRIDES增加属性persist.sys.bootvideo.showtime = 10。这个也可以不设置。
然后重新编译即可。
2. 开机LOGO
替换下面内核目录两张图片
kernel-5.10/logo_kernel.bmp
kernel-5.10/logo.bmp