2013-10-28 19 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伏