关机充电满电图标

该博客讨论了RK设备在关机充电时如何显示满电图标的问题。作者详细介绍了增加满电图标的过程,包括修改配置文件和显示逻辑。然而,测试中发现电量计的误差导致无法准确判断满电状态。2020.06.16的更新提到了满电图标显示后无法开机的错误,原因是内存分配问题。在2020.07.16的更新中,作者提出了新的解决方案,包括回退之前的实现并修改charge_anim_desc.txt文件。
摘要由CSDN通过智能技术生成
platform:RK3399
OS:Android 7.1

概述

RK已经实现了关机充电图标动画显示的功能,在实际的使用过程中有一个问题:就算充满电了,充电动画图标仍然在,而没有一个满电图标显示.

满电图标显示

1.增加满电图标,目录如下

tools/resource_tool/resources/images/battery_fully.bmp

2.修改配置文件

tools/resource_tool/resources/images/battery_fully.bmp

 #reserve.
 bat_error=images/battery_fail.bmp

+#battery fully images
+bat_fully=images/battery_fully.bmp
+
 #num of level configs.
 levels=6

3.修改显示逻辑

diff --git a/common/cmd_charge.c b/common/cmd_charge.c
index 7d9acba..7e3599b 100755
--- a/common/cmd_charge.c
+++ b/common/cmd_charge.c
@@ -279,11 +279,13 @@ static anim_level_conf* level_confs = NULL;
 static int level_conf_num = 0;
 static int only_current_level = false;
 static char bat_err_path[MAX_INDEX_ENTRY_PATH_LEN];
+static char bat_fully_path[MAX_INDEX_ENTRY_PATH_LEN];
 
 #define OPT_CHARGE_ANIM_DELAY       "delay="
 #define OPT_CHARGE_ANIM_LOOP_CUR    "only_current_level="
 #define OPT_CHARGE_ANIM_LEVELS      "levels="
 #define OPT_CHARGE_ANIM_BAT_ERROR   "bat_error="
+#define OPT_CHARGE_ANIM_BAT_FULLY   "bat_fully="
 #define OPT_CHARGE_ANIM_LEVEL_CONF  "min_level="
 #define OPT_CHARGE_ANIM_LEVEL_NUM   "num="
 #define OPT_CHARGE_ANIM_LEVEL_PFX   "prefix="
@@ -435,6 +437,11 @@ static bool load_anim_desc(const char* desc_path, bool dump) {
 			snprintf(bat_err_path, sizeof(bat_err_path), "%s",
 					arg + strlen(OPT_CHARGE_ANIM_BAT_ERROR));
 			LOGD("Found battery error image:%s", bat_err_path);
+		} else if (!memcmp(arg, OPT_CHARGE_ANIM_BAT_FULLY,
+					strlen(OPT_CHARGE_ANIM_BAT_FULLY))) {
+			snprintf(bat_fully_path, sizeof(bat_fully_path), "%s",
+					arg + strlen(OPT_CHARGE_ANIM_BAT_FULLY));
+			LOGD("Found battery fully image:%s", bat_fully_path);
 		} else {
 			LOGE("Unknown arg:%s", arg);
 			continue;
@@ -543,8 +550,12 @@ static void update_image(void) {
 	int level = get_battery_capacity();
 	int actual_conf = get_index_for_level(level);
 	LOGD("level:%d, index:%d", level, actual_conf);
-
-	//step forward.
+	//battery full image  by hewy 2020/05/08
+	if(level >= 100) {
+		show_resource_image("images/battery_fully.bmp");
+		return;
+	}
+//step forward.
 	current_index++;
 
 	if (only_current_level) {

测试问题

修改过后测试发现,无论如何都无法显示满电图标.最后排查发现电量计cw2015是通过读取电压值判断是否满电的,实际上会有5%~10%的误差,导致一直检测到没有充满,但是实际上是充满了.可以改用电量来判断是否充满


                
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值