2017-08-09 65 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 
相關問題