Android系统自定义关机充电图标

需求描述

关机充电图标的修改地址在哪里?替换照片有哪些格式要求?

实现方案

图片路径:
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

附件工具

XnConvert——批量转换图片位深度工具

猜你喜欢

转载自blog.csdn.net/weixin_44008788/article/details/112997932#comments_27543032