2013-10-28 22 views
1

在用於電池中的廣播接收機,我有以下3行代碼:解碼電池值

int health = intent.getIntExtra(BatteryManager.EXTRA_HEALTH, 0); 
int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0); 
int voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, 0); 

的值以上三個即將2,2和4

我怎樣才能解碼這些值並向用戶顯示對健康有意義的東西,如果電池的健康狀況良好,不好或需要更換,我不知道該如何使用計算機。

預先感謝

+3

閱讀http://developer.android.com/reference/android/os/BatteryManager.html並創建你的邏輯 –

回答

2

使用這種電池

switch (health) { 
    case BatteryManager.BATTERY_HEALTH_DEAD: 

     break; 
    case BatteryManager.BATTERY_HEALTH_GOOD: 

     break; 
    case BatteryManager.BATTERY_HEALTH_COLD: 

     break; 
    case BatteryManager.BATTERY_HEALTH_OVERHEAT: 

     break; 
    case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE: 

     break; 

    default: 
     break; 
    } 

使用用於pluged

switch (plugged) { 
    case BatteryManager.BATTERY_PLUGGED_AC: 

     break; 
    case BatteryManager.BATTERY_PLUGGED_USB: 

     break; 
    case BatteryManager.BATTERY_PLUGGED_WIRELESS: 

     default: 
     break; 
    } 

使用用於電壓

switch (voltage) { 
    case BatteryManager.BATTERY_STATUS_CHARGING: 

     break; 
    case BatteryManager.BATTERY_STATUS_DISCHARGING: 

     break; 
    case BatteryManager.BATTERY_STATUS_FULL: 
     break; 
    case BatteryManager.BATTERY_STATUS_NOT_CHARGING: 
     break; 
    case BatteryManager.BATTERY_STATUS_UNKNOWN: 
     break; 
    default: 
     break; 
    } 
2

在onCreate方法使用

@Override 
public void onCreate() { 
    BroadcastReceiver batteryReceiver = new BroadcastReceiver() { 
     int scale = -1; 
     int level = -1; 
     int voltage = -1; 
     int temp = -1; 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); 
      scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1); 
      temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1); 
      voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1); 
      Log.e("BatteryManager", "level is "+level+"/"+scale+", temp is "+temp+", voltage is "+voltage); 
     } 
    }; 
    IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); 
    registerReceiver(batteryReceiver, filter); 
} 

如果等級= 20/100表示​​電池剩餘20% 溫度爲320℃則溫度爲32℃。 如果電壓是4000,那麼電壓是4.000伏