Android UI显示电量跳变

现象:android上层显示电量跳变,可是内核log显示UI_SOC2没有跳变现象;

缘由:mtk默认设定尽量少的通知上层次数,以减小系统功耗,SOC有变化才更新一次,不然60秒
后再更新一次,代码以下:

html

static void battery_update(struct battery_data *bat_data)android

{算法

..............ide

if (update_cnt == 6) {spa

/* Update per 60 seconds */orm

power_supply_changed(bat_psy);htm

pre_soc = BMT_status.SOC;get

update_cnt = 0;同步

} else if (pre_soc != BMT_status.SOC) {it

/* Update when soc change */

power_supply_changed(bat_psy);

pre_soc = BMT_status.SOC;

update_cnt = 0;

} else if (cable_in_uevent == 1) {

/*To prevent interrupt-trigger update from being filtered*/

power_supply_changed(bat_psy);

cable_in_uevent = 0;

} else {

/* No update */

update_cnt++;

}


解决方法:

将BMT_status.SOC改成BMT_status.UI_SOC2,由于因为GM2.0算法将电量分红3层SOC/UI_SOC/UI_SOC2,这里默认使用SOC做为更新的条件,可能SOC变化1%时,UI_SOC2已经变化2%,致使android UI显示出来的电量有跳变的状况,修改后拿UI_SOC2做为更新的条件,实时的将android电量同步到内核须要显示的电量,这样就不会出现电量跳变状况。


原文连接:http://bbs.×××/thread-270692-1-1.html

相关文章
相关标签/搜索