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

相關文章
相關標籤/搜索