为什么BatteryManager返回错误的温度值?

时间:2017-08-09 20:56:12

标签: android linux-kernel driver temperature batterymanager

我正在尝试将BQ27531电池电量监测计集成到i.MX6 SoM中。我加载了驱动程序,sysfs上的一切看起来都不错。当我运行cat /sys/bus/i2c/devices/2-0055/power_supply/bq27531-0/temp时,我得到的正确值为247(即24.7°C)。

现在,我希望在Android系统中获得价值。我写了一个简单的应用程序,基本上叫:

IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent intent = registerReceiver(null, filter);
int temprature = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);

这应该给我温度读数,但它返回424(42.4°C)。为什么温度值错了?我确信电池在室温附近。

1 个答案:

答案 0 :(得分:0)

因此,事实证明我的系统无法识别电池,424是默认的“假”温度。它在platform/system/core/healthd

中定义
#define POWER_SUPPLY_SUBSYSTEM "power_supply"
#define POWER_SUPPLY_SYSFS_PATH "/sys/class/" POWER_SUPPLY_SUBSYSTEM
#define FAKE_BATTERY_CAPACITY 42
#define FAKE_BATTERY_TEMPERATURE 424
#define ALWAYS_PLUGGED_CAPACITY 100
#define MILLION 1.0e6
#define DEFAULT_VBUS_VOLTAGE 5000000