2017-08-09 57 views
0

我正在尝试将BQ27531电池电量计集成到i.MX6 SoM中。我加载了驱动程序,并在sysfs上看起来很好。当我运行cat /sys/bus/i2c/devices/2-0055/power_supply/bq27531-0/temp时,我得到一个正确的值247(这意味着24.7 ° C)。BatteryManager为什么返回错误的温度值?

现在,我想要在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)。为什么温度值错误?我确定电池在室温附近。

+0

电池是从未在室温左右。当它们提供电力时,它们会产生热量。曾经觉得你的手机在使用后变热了?那是电池。 42C是非常合理的电池温度。 –

+0

我不知道424值来自哪里。当我把手放在电池上并再次运行'cat' cammand时,数值从24.7变为24.9。我想要的是从司机那里读取这些信息。 –

+0

您确定您的经理从正确的驱动程序获取此值并且不存在残留吗? – once2go

回答

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 
相关问题