Пример #1
0
        @Override
        public void onReceive(Context context, Intent intent) {
          String action = intent.getAction();
          if (Intent.ACTION_BATTERY_CHANGED.equals(action)) {
            int plugType = intent.getIntExtra("plugged", 0);
            int status = intent.getIntExtra("status", BatteryManager.BATTERY_STATUS_UNKNOWN);

            int chargingStatus = EmergencyObject.BATT_STATE_UNKNOWN;
            if (status == BatteryManager.BATTERY_STATUS_CHARGING) {
              if (plugType > 0) {
                chargingStatus =
                    ((plugType == BatteryManager.BATTERY_PLUGGED_AC)
                        ? EmergencyObject.BATT_STATE_AC_CHARGING
                        : EmergencyObject.BATT_STATE_USB_CHARGING);
              }
            } else if (status == BatteryManager.BATTERY_STATUS_DISCHARGING) {
              chargingStatus = EmergencyObject.BATT_STATE_DISCHARGING;
            } else if (status == BatteryManager.BATTERY_STATUS_NOT_CHARGING) {
              chargingStatus = EmergencyObject.BATT_STATE_NOT_CHARGING;
            } else if (status == BatteryManager.BATTERY_STATUS_FULL) {
              chargingStatus = EmergencyObject.BATT_STATE_FULL;
            } else {
              chargingStatus = EmergencyObject.BATT_STATE_UNKNOWN;
            }

            int level = intent.getIntExtra("level", 0);
            int scale = intent.getIntExtra("scale", 100);

            // WARNING: Battery service makes too many broadcast.
            // Process data only when there's change in battery level or status.
            if (mContentManager.getBatteryLevel() == level
                && mContentManager.getBatteryChargingState() == status) return;

            ContentObject co = mContentManager.setBatteryInfo(level * 100 / scale, chargingStatus);
            if (co != null) sendContentsToDevice(co);
          }
        }