0

デバイスが現在充電中かどうかを検出しようとしていますが、このコードは常にisCharging変数をfalse次のように設定します。

public class PowerReceiver 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 == BatteryManager.BATTERY_PLUGGED_USB;
        boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;

        if (isCharging)
        {
            Toast.makeText(context, "Charging", Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(context, "Not charging", Toast.LENGTH_LONG).show();
        }

    }

}
4

1 に答える 1

6

基本的にYou cannot register for ACTION_BATTERY_CHANGED via the manifest。プログラムで登録する

これらのリンクを参照してください。間違いなく役立ちます:)

バッテリーの状態が常に充電されていない

https://github.com/commonsguy/cw-omnibus/tree/master/SystemEvents/OnBattery

http://developer.android.com/training/monitoring-device-state/battery-monitoring.html

于 2013-11-05T06:26:08.837 に答える