2016-08-12 3 views
9

Как я могу обнаружить аккумулятор скорость зарядки в Android-устройстве? Я могу определить состояние батареи, используя код ниже. но не скорость зарядки.Как проверить скорость зарядки аккумулятора?

IntentFilter filter = new IntentFilter(); 
filter.addAction(Intent.ACTION_BATTERY_CHANGED); 
BatteryChangeReceiver receiver = new BatteryChangeReceiver(subscriber); 
registerReceiver(receiver, filter); 


public class BatteryChangeReceiver extends BroadcastReceiver { 

    @Override public void onReceive(Context context, Intent intent) { 
       // here I get all battery status. 
    } 
    } 

Я также отношусь this, this и this, но не могу найти способ, чтобы проверить скорость зарядки.

Существует приложение (Ampere), показывающее скорость зарядки. enter image description here enter image description here Как я могу это достичь?

Заранее спасибо.

+0

Соотношение времени и процентной ставки. – Amy

+0

Нет, он отобразится, как только я подключусь к зарядному устройству. Если я подключаюсь к USB-кабелю, то отображается медленная зарядка, а также зарядное устройство и быстрая зарядка. –

+0

Я думаю, вы можете найти его в журнале dmesg устройства. –

ответ

4

Используйте BatteryManager. Он обеспечивает свойство BATTERY_PROPERTY_CURRENT_AVERAGE, что дает вам средний ток батареи в микроамперах. К сожалению, период времени, в течение которого собирается эта информация, может отличаться от устройства к устройству. Отрицательные значения означают разрядку, положительные значения означают, что телефон заряжается.

В качестве альтернативы, вы можете использовать BATTERY_PROPERTY_CURRENT_NOW (он выглядит так: Ampere использует этот подход). Он возвращает мгновенный ток батареи. Это может быть неточно, поэтому называть это свойство пару раз, и вычисление среднего кажется хорошей идеей.

Пример кода:

BatteryManager batteryManager = (BatteryManager) Context.getSystemService(Context.BATTERY_SERVICE); 
int averageCurrent = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CURRENT_AVERAGE); 
+0

Он добавлен в API 21. Можете ли вы предоставить решение, которое также работает в более низкой версии.? –

+0

Только телефоны с индикатором уровня заряда аккумулятора (https://source.android.com/devices/tech/power/device.html) могут отчитываться BATTERY_PROPERTY_CURRENT_AVERAGE. Например, Nexus 5 может предоставить только BATTERY_PROPERTY_CAPACITY. – Jehy

1

Я не думаю, что их каким-либо образом, чтобы обнаружить скорость зарядки: Но вы можете это сделать проблемно: 1) Вы можете записывать заряженную уровень (процент или число) по

int level = intent.getIntExtra (BatteryManager.EXTRA_LEVEL, 0); batteryTxt.setText (String.valueOf (level) + "%");

2) И после некоторого времени обработки вы можете снова получить текущий заряженный уровень, используя тот же код. 3) Затем вычислите разницу, и тогда вы сможете узнать скорость зарядки.

Это просто идея, что вы можете его реализовать.

Надеюсь, что это вам поможет

Смежные вопросы