2012-02-02 96 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

相关问题