Android 启动动画检查引导图片代码解析
这段代码是用于检查是否有引导图片的代码。它首先从 ro.sw.publish_region 属性中获取省份信息,如果省份信息是 'cmcc_ln',则会检查是否存在 IPTV_ANIMATION_PICTURE_FILE 文件。
如果该文件存在,代码会调用 isAImageFile 函数判断文件是否为图片格式。如果是图片格式,则返回 true,表示有引导图片;否则,会删除该文件并返回 false,表示没有引导图片。
代码还会检查系统目录下是否存在 IPTV_ANIMATION_PICTURE_FILE 文件,并进行同样的判断。
如果两个目录下都没有找到符合条件的图片文件,则最终返回 false。
以下是代码的详细解析:
bool BootAnimation::hasBootpic() {
char province_value[PROPERTY_VALUE_MAX];
property_get("ro.sw.publish_region", province_value, "");
if(strncmp("cmcc_ln", province_value, strlen("cmcc_ln")) == 0){
char fpath[256]={0};
if (access(USER_BOOTANIMATION_FILE, R_OK) == 0){
ALOGE("Failed to open iptv move zip \"%s\": %s", USER_BOOTANIMATION_FILE, strerror(errno));
return false;
}
if (access(IPTV_ANIMATION_CONFIG_BASE IPTV_ANIMATION_PICTURE_FILE, R_OK) == 0 ) {
sprintf(fpath, "%s%s", IPTV_ANIMATION_CONFIG_BASE, IPTV_ANIMATION_PICTURE_FILE);
if (isAImageFile(fpath, NULL)) {
ALOGD("has %s", IPTV_ANIMATION_PICTURE_FILE);
return true;
} else {
ALOGD("invalid %s", IPTV_ANIMATION_PICTURE_FILE);
remove(fpath);
}
}
if (access(IPTV_ANIMATION_SYSTEM_BASE IPTV_ANIMATION_PICTURE_FILE, R_OK) == 0 ) {
sprintf(fpath, "%s%s", IPTV_ANIMATION_SYSTEM_BASE, IPTV_ANIMATION_PICTURE_FILE);
if (isAImageFile(fpath, NULL)) {
ALOGD("has %s", IPTV_ANIMATION_PICTURE_FILE);
return true;
} else {
ALOGD("invalid %s", IPTV_ANIMATION_PICTURE_FILE);
remove(fpath);
}
}
ALOGD("no %s", IPTV_ANIMATION_PICTURE_FILE);
}
return false;
}
这段代码的作用是根据设备的省份信息来判断是否显示引导图片,如果省份是 cmcc_ln,则会尝试在两个目录下寻找名为 IPTV_ANIMATION_PICTURE_FILE 的图片文件。如果找到并确认是图片格式,则会显示该图片作为引导图片,否则不会显示引导图片。
原文地址: http://www.cveoy.top/t/topic/lknE 著作权归作者所有。请勿转载和采集!