受信してアクティビティに登録し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」コマンドを発行すると、エミュレーターは を報告しません。「電源ステータス放電」も発行する必要があります。実際のデバイスについてはわかりません。
他に方法はありますか?