來源: http://www.5look.net/blog/archives/156

Ref. :

● BroadcastReceiver | Android Developers
● BatteryManager | Android Developers

Battery information 的取得

 

這裡介紹電池信息的取得.
    android.content.BroadcastReceiver類
    android.os.BatteryManager類

 140-1

 

 

 

 

 

● 電池信息的取得,調用registerReceiver()方法。
         第1個參數,設置BroadcastReceiver實例
         第2個參數,設置追加了Intent.ACTION_BATTERY_CHANGED處理的IntentFilter實例。

● 在BroadcastReceiver的onReceive()事件,接收到的Intent.ACTION_BATTERY_CHANGED,包括下面的信息。
    「status」(int類型)…狀態,定義值是BatteryManager.BATTERY_STATUS_XXX。
    「health」(int類型)…健康,定義值是BatteryManager.BATTERY_HEALTH_XXX。
    「present」(boolean類型)
    「level」(int類型)…電池剩餘容量
    「scale」(int類型)…電池最大值。通常為100。
    「icon-small」(int類型)…圖標ID。
    「plugged」(int類型)…連接的電源插座,定義值是BatteryManager.BATTERY_PLUGGED_XXX。
    「voltage」(int類型)…mV。
    「temperature」(int類型)…溫度,0.1度單位。例如 表示197的時候,意思為19.7度。  
    「technology」(String類型)…電池類型,例如,Li-ion等等。

 

 

001 package com.adakoda.batterytest;
002  
003 import android.app.Activity;
004 import android.content.BroadcastReceiver;
005 import android.content.Context;
006 import android.content.Intent;
007 import android.content.IntentFilter;
008 import android.os.BatteryManager;
009 import android.os.Bundle;
010 import android.util.Log;
011  
012 public class BatteryTestActivity extends Activity {
013     /** Called when the activity is first created. */
014     @Override
015     public void onCreate(Bundle savedInstanceState) {
016         super.onCreate(savedInstanceState);
017         setContentView(R.layout.main);        
018     }
019  
020     @Override
021     protected void onResume() {
022         super.onResume();
023         
024         IntentFilter filter = new IntentFilter();
025         
026         filter.addAction(Intent.ACTION_BATTERY_CHANGED);
027         registerReceiver(mBroadcastReceiver, filter);
028     }
029  
030     @Override
031     protected void onPause() {
032         super.onPause();
033         
034         unregisterReceiver(mBroadcastReceiver);
035     }
036  
037     private BroadcastReceiver mBroadcastReceiver = newBroadcastReceiver() {
038         @Override
039         public void onReceive(Context context, Intent intent) {
040             String action = intent.getAction();
041             if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
042                 int status = intent.getIntExtra("status"0);
043                 int health = intent.getIntExtra("health"0);
044                 boolean present = intent.getBooleanExtra("present",false);
045                 int level = intent.getIntExtra("level"0);
046                 int scale = intent.getIntExtra("scale"0);
047                 int icon_small = intent.getIntExtra("icon-small"0);
048                 int plugged = intent.getIntExtra("plugged"0);
049                 int voltage = intent.getIntExtra("voltage"0);
050                 int temperature = intent.getIntExtra("temperature",0);
051                 String technology = intent.getStringExtra("technology");
052                 
053                 String statusString = "";
054                 
055                 switch (status) {
056                 case BatteryManager.BATTERY_STATUS_UNKNOWN:
057                     statusString = "unknown";
058                     break;
059                 case BatteryManager.BATTERY_STATUS_CHARGING:
060                     statusString = "charging";
061                     break;
062                 case BatteryManager.BATTERY_STATUS_DISCHARGING:
063                     statusString = "discharging";
064                     break;
065                 case BatteryManager.BATTERY_STATUS_NOT_CHARGING:
066                     statusString = "not charging";
067                     break;
068                 case BatteryManager.BATTERY_STATUS_FULL:
069                     statusString = "full";
070                     break;
071                 }
072                 
073                 String healthString = "";
074                 
075                 switch (health) {
076                 case BatteryManager.BATTERY_HEALTH_UNKNOWN:
077                     healthString = "unknown";
078                     break;
079                 case BatteryManager.BATTERY_HEALTH_GOOD:
080                     healthString = "good";
081                     break;
082                 case BatteryManager.BATTERY_HEALTH_OVERHEAT:
083                     healthString = "overheat";
084                     break;
085                 case BatteryManager.BATTERY_HEALTH_DEAD:
086                     healthString = "dead";
087                     break;
088                 case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:
089                     healthString = "voltage";
090                     break;
091