次のコードを使用して、2 つの異なる時間 (t1、t2) でバッテリーの電圧を取得しています。t1 はタスクの実行前、t2 はタスクの実行後です。したがって、規則により、t2 は t1 より小さくなければなりません。
ただし、実際にはそうではありません。t1 より大きい、小さい、等しい複数の値を取得しています。これはどのように可能でしょうか?Android のバッテリー監視ツールでも、充電器を差し込まなくても合計バッテリー mAh 値が数ポイント増加する場合があることに気付きました。
public void onCreate() {
BroadcastReceiver batteryReceiver = new BroadcastReceiver() {
int scale = -1;
int level = -1;
int voltage = -1;
int temp = -1;
@Override
public void onReceive(Context context, Intent intent) {
level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);
voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1);
Log.e("BatteryManager", "level is "+level+"/"+scale+", temp is "+temp+", voltage is "+voltage);
}
};
IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(batteryReceiver, filter);
}