2015-01-17 2 views
1

Я пробовал powerprofile из Android .... Я пробовал этот код ... но он дает мне 1000 ответов каждый раз во всех устройствах ... Есть ли другой способ в андроиде, чтобы получить емкость батареи ... мощности мобильного устройства Eg.if является 2000mAh он должен вернуть мне 2000Общая емкость аккумулятора в мАч устройства Программно

public Double getBatteryCapacity() { 

     Object mPowerProfile_ = null; 
     double batteryCapacity = 0; 
     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) { 

      // Class not found? 
      e.printStackTrace(); 
     } 

     try { 

      // Invoke PowerProfile method "getAveragePower" with param 
      // "battery.capacity" 
      batteryCapacity = (Double) Class.forName(POWER_PROFILE_CLASS) 
        .getMethod("getAveragePower", java.lang.String.class) 
        .invoke(mPowerProfile_, "battery.capacity"); 

     } catch (Exception e) { 

      // Something went wrong 
      e.printStackTrace(); 
     } 

     return batteryCapacity; 
    } 
+0

возможно дубликат [ПОЛУЧИТЬ батареи Android ток в мА и общая емкость аккумулятора в мАч] (http://stackoverflow.com/questions/23193388/android-get-battery-current-capacity-in-ma-and-total-capacity-of-battery-in -mah) – Psypher

+1

Ranjith, но он не работает, поэтому я разместил это ... Могу ли я помочь мне? –

+0

Возможный дубликат [Android: есть ли в любом случае, чтобы получить емкость аккумулятора устройства в mah?] (Http://stackoverflow.com/questions/22243461/android-is-there-anyway-to-get-battery-capacity- of-a-device-in-mah) –

ответ

0

Вы можете использовать следующие свойства android.os.BatteryManager. BATTERY_PROPERTY_CHARGE_COUNTER, который дает вам оставшуюся емкость аккумулятора в микроамперах. BATTERY_PROPERTY_CAPACITY, который дает вам оставшуюся емкость аккумулятора в виде целых процентов.

Так,

BATTERY_PROPERTY_CHARGE_COUNTER/BATTERY_PROPERTY_CAPACITY * 100

даст вам емкость аккумулятора Total. Это не будет точный расчет, но вы сможете закрыть фактическую емкость.

Ссылки: https://source.android.com/devices/tech/power/index.html#device-power http://developer.android.com/reference/android/os/BatteryManager.html

+0

Его единственный доступный для Android 5.0 не для более низкой версии. –

1

Для тех пользователей, которые заинтересованы в реализации @Yehan предложений, вот метод, который возвращает общую емкость батареи (только для уровня> = 21 API)

public long getBatteryCapacity(Context context) { 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     BatteryManager mBatteryManager = (BatteryManager) context.getSystemService(Context.BATTERY_SERVICE); 
     Integer chargeCounter = mBatteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER); 
     Integer capacity = mBatteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY); 

     if(chargeCounter == Integer.MIN_VALUE || capacity == Integer.MIN_VALUE) 
      return 0; 

     return (chargeCounter/capacity) *100; 
    } 
    return 0; 
} 

К сожалению, по какой-то причине такой подход не всегда работает. В этих случаях можно использовать API-интерфейсы в Java Reflection, чтобы извлечь значение, возвращаемое методом getBatteryCapacity из com.android.internal.os.PowerProfile:

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; 

} 

Источник: https://android.googlesource.com/platform/frameworks/base/+/a029ea1/core/java/com/android/internal/os/PowerProfile.java

 Смежные вопросы

  • Нет связанных вопросов^_^