BatteryStatus не отображается правильно

Я пытаюсь отобразить в приложении, заряжается ли телефон от вилки, USB-кабеля или вообще не заряжается. Я использую приведенный ниже код, он будет отображать «зарядка через USB-кабель», если я использую USB-кабель, и отображает «не заряжается», если аккумулятор телефона заряжен или не заряжается. Но когда я заряжаю телефон через штекер, он показывает «зарядка через USB-кабель». Я использую обычное зарядное устройство с вилкой переменного тока, а не зарядное устройство с вилкой переменного тока, куда вы можете воткнуть USB-кабель (если это имеет значение). Почему это происходит?

        IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
        Intent batteryStatus = registerReceiver(null, filter);

        int chargeState = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);

        if(chargeState == BatteryManager.BATTERY_PLUGGED_USB)
        {
            chargingBy = "charging via usb cable";
        }
        else if (chargeState == BatteryManager.BATTERY_PLUGGED_AC)
        {
            chargingBy = "charging via plug";
        }
        else
        {
            chargingBy = "not charging";
        }

person Howli    schedule 09.08.2013    source источник


Ответы (1)


Существует три различных типа портов USB:

  1. Стандартный порт.
  2. Зарядный нисходящий порт.
  3. Отдельный порт для зарядки.

Первые два можно найти на вашем компьютере, а третий относится к «тупым» настенным зарядным устройствам.

На какой модели телефона вы тестируете?


EXTRA_STATUS Не используется, чтобы узнать, как заряжается устройство

вместо этого используйте EXTRA_PLUGGED

person Al Kafri Firas    schedule 09.08.2013
comment
Теперь это работает, спасибо :) Итак, extra_status используется, чтобы узнать, заряжается ли батарея, а extra_plugged используется, чтобы узнать, как заряжается батарея? - person Howli; 09.08.2013
comment
Это здорово, точно :) - person Al Kafri Firas; 09.08.2013