Android如何获取电池电流电量(mA)和电池总电量(mAh)?

7

Android 获取电池总容量(mAh)和当前电池容量(mA)。


对象 mPowerProfile_ = Class.forName(POWER_PROFILE_CLASS).getConstructor(Context.class).newInstance(this); batteryCapacity = (Double) Class.forName(POWER_PROFILE_CLASS) .getMethod("getAveragePower", java.lang.String.class).invoke(mPowerProfile_, "battery.capacity"); - Uma Shankar
https://dev59.com/w33aa4cB1Zd3GeqPblNu - Sebastien Bianchi
我能够获取电池的总容量(mAh),但我想要获取电池放电时间,所以现在我想知道如何获取电池当前容量(mA)。 - Uma Shankar
你是如何计算电池放电时间的? - Kaushal28
1个回答

21

试试这个...

    public void getBatteryCapacity() {
    Object mPowerProfile_ = null;

    final String POWER_PROFILE_CLASS = "com.android.internal.os.PowerProfile";

    try {
        mPowerProfile_ = Class.forName(POWER_PROFILE_CLASS)
                .getConstructor(Context.class).newInstance(this);
    } catch (Exception e) {
        e.printStackTrace();
    } 

    try {
        double batteryCapacity = (Double) Class
                .forName(POWER_PROFILE_CLASS)
                .getMethod("getAveragePower", java.lang.String.class)
                .invoke(mPowerProfile_, "battery.capacity");
        Toast.makeText(MainActivity.this, batteryCapacity + " mah",
                Toast.LENGTH_LONG).show();
    } catch (Exception e) {
        e.printStackTrace();
    } 
}

1
已在 Android 版本从 Lollipop 到 Oreo 上测试了此方法 - 目前还没有出现问题。可以获取正确的电池容量值。 - Darpan
这在Android L上对我不起作用, 我正在Vivo y21设备上检查,该设备包含1900mAh电池,但我得到了3900mAh。 - Suresh
这些值是由制造商硬编码的。因此,一些设备只报告垃圾信息。还有另一种方法(标准API),但它从不返回相同的值:https://dev59.com/s14c5IYBdhLWcg3wXZUB - 3c71

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接