2012-02-02 94 views
-3

有沒有方法或如何獲得或瞭解電池的使用壽命?我正在製作電池信息,就像在「電池醫生節電器專業版」中所不同的是,我需要的是使用壽命。我對如何去做沒有任何想法。誰能幫我這個?謝謝你的幫助。 :)到目前爲止,這是我的代碼沒有我說的「生命期」。電池的使用壽命

private BroadcastReceiver battery_receiver = new BroadcastReceiver() { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      boolean isPresent = intent.getBooleanExtra("present", false); 
      String technology = intent.getStringExtra("technology"); 
      int plugged = intent.getIntExtra("plugged", -1); 
      int scale = intent.getIntExtra("scale", -1); 
      int health = intent.getIntExtra("health", 0); 
      int status = intent.getIntExtra("status", 0); 
      int rawlevel = intent.getIntExtra("level", -1); 
      int level = 0; 

      Bundle bundle = intent.getExtras(); 

      Log.i("BatteryLevel", bundle.toString()); 

      if (isPresent) { 
       if (rawlevel >= 0 && scale > 0) { 
        level = (rawlevel * 100)/scale; 
       } 

       String info = "Battery Level: " + level + "%\n"; 

       info += ("Technology: " + technology + "\n"); 
       info += ("Plugged: " + getPlugTypeString(plugged) + "\n"); 
       info += ("Health: " + getHealthString(health) + "\n"); 
       info += ("Status: " + getStatusString(status) + "\n"); 

       setBatteryLevelText(info + "\n\n" + bundle.toString()); 
      } else { 
       setBatteryLevelText("Battery not present!!!"); 
      } 
     } 
    }; 

    private String getPlugTypeString(int plugged) { 
     String plugType = "Unknown"; 

     switch (plugged) { 
     case BatteryManager.BATTERY_PLUGGED_AC: 
      plugType = "AC"; 
      break; 
     case BatteryManager.BATTERY_PLUGGED_USB: 
      plugType = "USB"; 
      break; 
     } 

     return plugType; 
    } 

    private String getHealthString(int health) { 
     String healthString = "Unknown"; 

     switch (health) { 
     case BatteryManager.BATTERY_HEALTH_DEAD: 
      healthString = "Dead"; 
      break; 
     case BatteryManager.BATTERY_HEALTH_GOOD: 
      healthString = "Good Condition"; 
      break; 
     case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE: 
      healthString = "Over Voltage"; 
      break; 
     case BatteryManager.BATTERY_HEALTH_OVERHEAT: 
      healthString = "Over Heat"; 
      break; 
     case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE: 
      healthString = "Failure"; 
      break; 
     } 

     return healthString; 
    } 

    private String getStatusString(int status) { 
     String statusString = "Unknown"; 

     switch (status) { 
     case BatteryManager.BATTERY_STATUS_CHARGING: 
      statusString = "Charging"; 
      break; 
     case BatteryManager.BATTERY_STATUS_DISCHARGING: 
      statusString = "Discharging"; 
      break; 
     case BatteryManager.BATTERY_STATUS_FULL: 
      statusString = "Full"; 
      break; 
     case BatteryManager.BATTERY_STATUS_NOT_CHARGING: 
      statusString = "Not Charging"; 
      break; 
     } 

     return statusString; 
    } 

回答

0

不完全知道你正試圖在這裏做的,計算瓦小時或安培小時檢查這個鏈接: http://www.powerstream.com/battery-capacity-calculations.htm 如果你想剩下的時間留在你目前使用的電池上,你需要獲得當前的電池電量,然後知道它的消耗速度有多快,或者通過檢查它的排空速度,然後做出一個假設或通過了解您將繪製多少電流。如果您校準您正在使用

確切的電池代碼

最好的結果一定會實現(貌似我被打的答案;))

+0

謝謝@Bender :) – 2012-02-02 15:21:35

0

正如我在Get the remaining battery time available from an Android phone說,你需要獲得當前電池電量,並制定了一些估計的速度有多快它正在耗盡。這將取決於處理器負載,屏幕亮度,無線電活動以及可能是其他因素的負載。

簡短的回答,這是絕對有可能得到一個估計,但它並不容易,可能不是很準確

+1

它**不能**是準確的,因爲您無法準確預測用戶在接下來的幾分鐘/幾小時內如何使用手機。 – 2012-02-02 14:29:59

+0

是的。雖然有可能隨着時間的推移建立特定用戶的個人資料以獲得更好的估計(例如,如果設備在上午9點之前經常未被使用 - 中午可能被考慮在內)。無論是這樣做還是像筆記本電腦電池指示燈那樣工作,即基於耗電量的時間。 – Jaloopa 2012-02-02 14:41:33

+0

謝謝你的答案@Jaloopa :)) – 2012-02-02 15:20:22

相關問題