获取电池的剩余能量?
Getting the remaining energy of the battery?
Hy 我正在开发和能量分析应用程序,我需要在纳瓦小时内获得电池的当前能量。我试过使用 Battery Manager API,但它的问题是它需要一个叫做电量计的特定微芯片来获取这些值。我的问题是,有没有其他方法可以在不使用电量计的情况下获取电池的当前能量?此外,我还设法使用 BatteryManager API 获得电池的当前容量百分比,这意味着我的代码工作正常。
我有解决您问题的方法,请使用此代码:
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;
}
注意:它不会给出准确的结果,但会根据您的需要提供适当的结果。
Hy 我正在开发和能量分析应用程序,我需要在纳瓦小时内获得电池的当前能量。我试过使用 Battery Manager API,但它的问题是它需要一个叫做电量计的特定微芯片来获取这些值。我的问题是,有没有其他方法可以在不使用电量计的情况下获取电池的当前能量?此外,我还设法使用 BatteryManager API 获得电池的当前容量百分比,这意味着我的代码工作正常。
我有解决您问题的方法,请使用此代码:
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;
}
注意:它不会给出准确的结果,但会根据您的需要提供适当的结果。