Получить информацию о батарее с устройства Android

Я пытаюсь получить некоторую информацию о батарее устройства Android, например, о фактическом токе, напряжении... Мне удается получить напряжение, уровень... но, к сожалению, у меня есть телефон, который работает с API 16, а параметр BatteryManager.BATTERY_PROPERTY_CURRENT_NOW не работает. не существует с этим API, потому что он появляется с API 21.

Итак, как получить текущую информацию и информацию о емкости батареи, например, для этого устройства?

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


person jretornaz    schedule 12.07.2016    source источник
comment
Вы просите код?   -  person Phantômaxx    schedule 12.07.2016


Ответы (2)


Поскольку BatteryManager работает с API 16. Полезны следующие утилиты.

package com.example.utils;

import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;

import com.example.app.AppContext;
import com.example.app.AppManager;

public class BatteryUtils {

    public static Intent getBatteryIntent() {
        IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
        return AppContext.getInstance().registerReceiver(null, ifilter);
    }

    public static int getScale(Intent intent) {
        return intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
    }

    public static int getLevel(Intent intent) {
        return intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
    }

    public static int getChargeStatus(Intent intent) {
        return intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
    }

    public static boolean isCharging(int status) {
        return status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL;
    }

    public static boolean isCharging(Intent intent) {
        int status = getChargeStatus(intent);
        return isCharging(status);
    }

    public static void test() {
        Intent intent = BatteryUtils.getBatteryIntent();
        DebugUtils.log("isCharging:" + BatteryUtils.isCharging(intent) + ";level:" + BatteryUtils.getLevel(intent) + ";Scale:" + BatteryUtils.getScale(intent));
    }

}
person Amit Shekhar    schedule 12.07.2016

Вы можете попробовать использовать BatteryManager. Он работает с API 16.

https://developer.android.com/reference/android/os/BatteryManager.html

С его помощью вы можете получить статус (зарядка, полная зарядка, разрядка), емкость, если он заряжается через USB или по беспроводной сети, состояние батареи и многое другое.

person Zoe    schedule 12.07.2016