0

ここ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、それは現在の値ですか、それとも最後の変更時の値ですか? アプリケーションを最適化し、バッテリー寿命を節約できるように、変更されたかどうか、および常に変更されているかどうかを確認したいと考えています。

4

3 に答える 3

2

指定したように、これらのアクションでのみ呼び出されます...

  1. android.intent.action.ACTION_POWER_CONNECTED
  2. android.intent.action.ACTION_POWER_DISCONNECTED

そしてその時...

1)外部電源がデバイスに接続されている。

2)デバイスから外部電源が取り外された。

バッテリー電力の変化を追跡する必要がある場合は、このフィルターをマニフェストに含める必要があります。

android.intent.action.ACTION_BATTERY_CHANGED

ところで。 isChargingもちろん今の状態でしょう。

于 2012-07-22T15:12:27.707 に答える
0

1. Publisher-Subscriber パターンBroadcastReceiverを使用します。

2.このように使用されます.. 「xyz が発生した場合はお知らせください。それに基づいて対処します」.

  1. バッテリー状態の変化だけでなく、起動が完了したときなど、他にもたくさんあります...

詳細については、これを参照してください。

http://developer.android.com/reference/android/content/BroadcastReceiver.html

于 2012-07-22T15:14:17.173 に答える