获得电池的剩余能量?

时间:2017-11-17 10:15:59

标签: android batterymanager

Hy我只是开发和能源分析应用程序,我需要有纳瓦时的电池能量。我曾尝试使用Battery Manager API,但问题在于它需要一个称为电量计的微芯片才能获得这些值。我的问题是,有没有其他方法可以在不使用电量计的情况下获得电池的当前能量?此外,我已经设法使用BatteryManager API获得当前电池容量百分比,这意味着我的代码工作正常。

1 个答案:

答案 0 :(得分:0)

我有解决方案,请使用此代码:

   BatteryManager bm = (BatteryManager)getSystemService(BATTERY_SERVICE);
    int batLevel = bm.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);

    double capacity = getBatteryCapacity(this);

    double remaining = (capacity*batLevel)/100;


    Log.d("Capapcity Remaining",remaining+" ");

和getBatteryCapacity()实现就在这里。

  public double getBatteryCapacity(Context context) {
    Object mPowerProfile;
    double batteryCapacity = 0;
    final String POWER_PROFILE_CLASS = "com.android.internal.os.PowerProfile";

    try {
        mPowerProfile = Class.forName(POWER_PROFILE_CLASS)
                .getConstructor(Context.class)
                .newInstance(context);

        batteryCapacity = (double) Class
                .forName(POWER_PROFILE_CLASS)
                .getMethod("getBatteryCapacity")
                .invoke(mPowerProfile);

    } catch (Exception e) {
        e.printStackTrace();
    }

    return batteryCapacity;

}

注意:它不会给出确切的结果,但会根据您的需要提供适当的结果。