我注册接收ACTION_BATTERY_LOW
并ACTION_BATTERY_OKAY
在一个活动中,并据此改变一些行为。
但我想知道活动开始时的初始状态。目前我使用以下代码进行操作:
Intent intent = registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 100);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100);
boolean batteryLow =
(status == BatteryManager.BATTERY_STATUS_DISCHARGING
|| status == BatteryManager.BATTERY_STATUS_NOT_CHARGING)
&& level * 100 / scale < 15;
这段代码既过于冗长,也可能与 android 认为的低级不同。status==discharging
例如,当我向 telnet 发出“power ac off”命令时,模拟器不报告。我也必须发出“电源状态放电”。不确定真实设备。
还有其他方法吗?