2016-03-16 3 views
0
  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 и попробовал несколько констант, упомянутых здесь, но ничего не работает. Я хотел бы захватить событие отключенного зарядного устройства, чтобы что-то сделать. Любой указатель оценивается. благодаряОбнаружение при отсоединении кабеля питания (USB или зарядное устройство переменного тока) в программном обеспечении Android

ответ

1

Смотрите ответ здесь правильные действия, чтобы слушать: How to detect power connected state?

Кроме того, не создавать анонимные BroadcastReceiver, так как он должен быть зарегистрирован в вашем AndroidManifest.xml

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(); 
     } 
Смежные вопросы