1
            BroadcastReceiver mBatteryReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
                int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
                String batteryPercentage = String.valueOf(level);
                Log.d("battery",batteryPercentage);
                boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING;
                Log.d("ischarging", String.valueOf(isCharging));

                int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
                boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
                boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;

                String action = intent.getAction();


                int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
                if (plugged == BatteryManager.BATTERY_PLUGGED_AC && DefaultManager.acChargeConnect && level >= DefaultManager.batteryPercentageTriggerValue) {
                    //do something
                } else if (plugged == BatteryManager.BATTERY_PLUGGED_USB && DefaultManager.usbConnect){
                    //do something
                } else if (plugged == 0) {
                    // on battery power
                } else {
                    // intent didnt include extra info
                }
            }

        };

そのため、電源ケーブルまたは USB コードが切断されたことを検出し、そのイベントが発生したときに何かを実行したいと考えています。ドキュメントに目を通しBatteryManager、そこに記載されているいくつかの定数を試しましたが、何も機能していないようです。何かをするために充電器の切断イベントをキャプチャしたいと思います。どんなポインタでも大歓迎です。ありがとう

4

2 に答える 2

1

リッスンする適切なアクションについては、こちらの回答を参照してください: 電源接続状態を検出する方法は?

また、AndroidManifest.xml に登録する必要があるため、匿名の BroadcastReceiver を作成しないでください。

于 2016-03-16T09:51:04.357 に答える
1

このように簡単にできます。

Intent intent = getApplicationContext().registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

        int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);

        if (plugged == BatteryManager.BATTERY_PLUGGED_AC || plugged == BatteryManager.BATTERY_PLUGGED_USB) {
            Toast.makeText(getApplicationContext(), "Device is Charging", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(getApplicationContext(), "Device not charging", Toast.LENGTH_SHORT).show();
        }
于 2016-03-16T10:31:56.827 に答える