BatteryStatus не отображается правильно, если он подключен к зарядному устройству USB в автомобиле

У меня есть приложение, которое показывает, заряжается ли устройство Android от вилки, USB-кабеля, беспроводного устройства или вообще не заряжается. Я использую приведенный ниже код, он будет отображать правильный метод зарядки (если есть), пока я не зарядлю свой телефон (с Android 4.1) или планшет (с Android 4.3) от зарядного устройства USB в автомобиле. Он скажет, что заряжается от вилки, когда должен сказать, что это USB-устройство. В чем причина этого?

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

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

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

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


Ответы (1)


С аппаратной точки зрения не будет никакой разницы между зарядным устройством переменного тока и автомобильным зарядным устройством, так что это не удивительно. Это довольно длинное чтение, но полные спецификации для зарядки через USB можно найти здесь в виде zip-файла размером 1,3 МБ:

Спецификация зарядки аккумулятора v1.2 и соглашение с пользователем

Предположительно BATTERY_PLUGGED_USB зарезервировано для хостов USB, тогда как BATTERY_PLUGGED_AC будет обозначаться только как зарядное устройство. Беспроводная зарядка потребует аппаратной поддержки в телефоне/планшете, чтобы аппаратное обеспечение, поддерживающее эту функцию, могло определить, когда оно используется.

person PeterJ    schedule 03.09.2013
comment
Хм, хорошо, спасибо, я прочитаю это. По крайней мере, я знаю, что мой код не был неправильным :) - person Howli; 04.09.2013