android - 如何确定 Android 电池健康状况?

标签 android power-management

我不是在说如何读取值。

相反,我对如何设置 BatteryManager.EXTRA_HEALTH 的值感兴趣。

它来自固件吗?特定于制造商?

是什么决定了这些值(value)?

int BATTERY_HEALTH_COLD 
int BATTERY_HEALTH_DEAD 
int BATTERY_HEALTH_GOOD 
int BATTERY_HEALTH_OVERHEAT 
int BATTERY_HEALTH_OVER_VOLTAGE 
int BATTERY_HEALTH_UNKNOWN  
int BATTERY_HEALTH_UNSPECIFIED_FAILURE

谢谢, 西蒙

最佳答案

更具体地说:电池健康状况由驱动程序(在内核中)决定。所述驱动程序通过 sys 文件系统(准确地说是/sys/class/power_supply)导出信息。 Android 守护程序 healthd(从 KK 开始,4.4.x)获取此信息,并在其上实现 IBatteryPropertiesRegistrar 接口(interface)。它连续轮询(使用 epoll_wait 在超时循环中运行以进行定期更新,以及 POWER 子系统的网络链接通知 - 例如,如果您连接或断开充电器)。然后系统的BatteryStatsService向healthd注册一个监听器(通过binder),然后获取healthd发布的数据,

查看/sys/class/power_supply,您会看到:

lrwxrwxrwx root     root              1970-02-05 14:20 ac -> ../../devices/f9923000.i2c/i2c-84/84-006b/power_supply/ac
lrwxrwxrwx root     root              1970-02-05 14:20 batt_therm -> ../../devices/battery_tm_ctrl.78/power_supply/batt_therm
lrwxrwxrwx root     root              1970-02-05 14:20 battery -> ../../devices/f9923000.i2c/i2c-84/84-0036/power_supply/battery
lrwxrwxrwx root     root              1970-02-05 14:20 touch -> ../../devices/virtual/power_supply/touch
lrwxrwxrwx root     root              1970-02-05 14:20 usb -> ../../devices/msm_dwc3/power_supply/usb
lrwxrwxrwx root     root              1970-02-05 14:20 wireless -> ../../devices/bq51013b_wlc.77/power_supply/wireless

然后检查“电池”

/sys/devices/f9923000.i2c/i2c-84/84-0036/power_supply/battery:
-r--r--r-- root     root         4096 2014-02-26 13:26 capacity
-r--r--r-- root     root         4096 2014-02-26 13:26 charge_full_design
-r--r--r-- root     root         4096 2014-02-26 13:26 current_now
lrwxrwxrwx root     root              2014-02-26 13:26 device -> ../../../84-0036
-r--r--r-- root     root         4096 2014-02-26 13:26 health
drwxr-xr-x root     root              2014-02-26 13:26 power
-r--r--r-- root     root         4096 2014-02-26 13:26 present
-r--r--r-- root     root         4096 2014-02-26 13:26 status
lrwxrwxrwx root     root              2014-02-26 13:26 subsystem -> ../../../../../../class/power_supply
-r--r--r-- root     root         4096 2014-02-26 13:26 technology
-r--r--r-- root     root         4096 2014-02-26 13:26 temp
-r--r--r-- root     root         4096 2014-02-26 13:26 type
-rw-r--r-- root     root         4096 2014-02-26 13:26 uevent
-r--r--r-- root     root         4096 2014-02-26 13:26 voltage_max_design
-r--r--r-- root     root         4096 2014-02-26 13:26 voltage_min_design
-r--r--r-- root     root         4096 2014-02-26 13:26 voltage_now

通过查看文件,所有细节都将被揭示。

关于android - 如何确定 Android 电池健康状况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10098979/

相关文章:

java - 我如何组织和减少申请中的类(class)数量

android - 9-patch 拉伸(stretch),当它不应该拉伸(stretch)时,Android

Android:如何在状态栏中获取电池图标资源 ID 或完整文件路径/名称?

使用 http 时的 Android 电池

javascript - Android:将图像从网络屏幕保存到图库

java - 启动子 Activity 后, Activity 中的字段设置为空

javascript - Canvas 签名触摸在电话间隙中产生问题

c# - 在 C# 中获取 Windows 电源计划/方案(使用 WinAPI)

machine-learning - 电源管理的强化学习

Android加速度计,传感器使用和功耗