从Android设备获取电池信息

时间:2016-07-12 15:38:40

标签: android batterymanager

我尝试获取有关Android设备电池的一些信息,如实际电流,电压,...... 我成功获得了电压,电平......但不幸的是我有一个使用API​​ 16运行的手机,这个API不存在参数BatteryManager.BATTERY_PROPERTY_CURRENT_NOW,因为它出现在API 21中。

那么,如何获取此设备的当前信息和电池容量信息?

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用BatteryManager。它适用于API 16.

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

有了它,您可以获得状态(充电,充满电,放电),容量,USB充电或无线充电,电池健康状况等等

答案 1 :(得分:0)

由于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));
    }

}