ここBroadcastReceiver
で、バッテリーの変化を確認するためのセットアップに関するガイドを読んでいました。そして、次のようにセットアップできると述べBroadcastReceiver
ました:
<receiver android:name=".PowerConnectionReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
</intent-filter>
</receiver>
私のマニフェストとこれをクラスとして:
public class PowerConnectionReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
status == BatteryManager.BATTERY_STATUS_FULL;
int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;
}
}
バッテリーの状態が変化したときだけBroadcastReceiver
電話がかかってきますか? onReceive(...)
たとえば、ユーザーがデバイスをコンピュータに接続していて、BroadcastReceiver
実行中ずっと充電していたとします。技術的には、デバイスのバッテリーの状態は変化しなかったので、変化を検出するでしょうか? を取得するたびにisCharging
、それは現在の値ですか、それとも最後の変更時の値ですか? アプリケーションを最適化し、バッテリー寿命を節約できるように、変更されたかどうか、および常に変更されているかどうかを確認したいと考えています。