这段代码是用于检查是否有引导图片的代码。它首先从 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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录