需求描述
关机充电图标的修改地址在哪里?替换照片有哪些格式要求?
实现方案
图片路径:
system/core/healthd/images/
关机充电:
system/core/healthd/healthd_mode_charger.cpp
字体路径:
bootable/recovery/minui/graphics.cpp
bootable/recovery/minui/font_10x18.h
充电图标和电量百分比显示主要在函数 healthd_mode_charger_heartbeat中实现:
void healthd_mode_charger_heartbeat()
{
struct charger *charger = &charger_state;
int64_t now = curr_time_ms();
handle_input_state(charger, now);
handle_power_supply_state(charger, now);
/* do screen update last in case any of the above want to start
* screen transitions (animations, etc)
*/
update_screen_state(charger, now);
}
battery_scale.png是由6张不同充电状态的图片的合成,对应状态如下:
static struct frame batt_anim_frames[] = {
{
.disp_time = 750,
.min_capacity = 0,
.level_only = false,
.surface = NULL,
},
{
.disp_time = 750,
.min_capacity = 20,
.level_only = false,
.surface = NULL,
},
{
.disp_time = 750,
.min_capacity = 40,
.level_only = false,
.surface = NULL,
},
{
.disp_time = 750,
.min_capacity = 60,
.level_only = false,
.surface = NULL,
},
{
.disp_time = 750,
.min_capacity = 80,
.level_only = true,
.surface = NULL,
},
{
.disp_time = 750,
.min_capacity = BATTERY_FULL_THRESH,
.level_only = false,
.surface = NULL,
},
};
battery_scale.png图片的制作
利用系统源码中的脚本bootable/recovery/interlace-frames.py
,即能将battery_scale.png拆分成几张png图片,也可以将若干张png图片合成一张battery_scale.png
合成图片命令
python interlace-frames.py -o battery_scale.png battery00.png battery01.png battery02.png battery03.png battery04.png battery05.png
拆分图片命令
python interlace-frames.py -d battery_scale.png -o battery.png
拆分后的原生关机图片格式:位深度8,png格式 ,分辨率为120x186
测试后发现位深度不限,分辨率可以与屏幕分辨率相同,格式为png即可,但如果遇到图片替换后黑屏不显示充电图标,建议使用和原生格式一致的。
battery_scale.png使用adb导入
adb root
adb remount
adb push battery_scale.png res/images/charger
adb reboot