//获取电池信息通过检索固定的Intent,也就是一直会广播出来的Intent
</pre><pre name="code" class="java">package com.example.test_sample;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.os.Bundle;
import android.util.Log;
import android.view.Window;
import android.widget.TextView;
public class BatteryInfoActivity extends Activity {
private static final String TAG = "BatteryInfo";
private TextView mTextView;
private BroadcastReceiver mBroadcast;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//左侧显示图标
this.requestWindowFeature(Window.FEATURE_LEFT_ICON);
setContentView(R.layout.batter_info);
mTextView=(TextView) findViewById(R.id.textShow);
showBatteryInfos();
}
/**
* 获取电流安全状态
*
* @param health
* @return
*/
private String healthCodeToString(int health) {
switch (health) {
case BatteryManager.BATTERY_HEALTH_DEAD:
return "Dead";
case BatteryManager.BATTERY_HEALTH_GOOD:
return "Good";
case BatteryManager.BATTERY_HEALTH_OVERHEAT:
return "Overheat";
case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:
return "over Voltage";
case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE:
return "unspecified failure";
case BatteryManager.BATTERY_HEALTH_UNKNOWN:
default:
return "unKnown";
}
}
/**
* 检测是充电器,还是USB,还是其他
*
* @param plugged
* @return
*/
private String pluggedCodeToString(int plugged) {
switch (plugged) {
case 0:
return "Battery";
case BatteryManager.BATTERY_PLUGGED_AC:
return "AC";
case BatteryManager.BATTERY_PLUGGED_USB:
return "USB";
default:
return "unKnown";
}
}
/**
* 获取电池状态
*
* @param status
* @return
*/
private String statusCodeToString(int status) {
switch (status) {
case BatteryManager.BATTERY_STATUS_CHARGING:
return "Charging";
case BatteryManager.BATTERY_STATUS_DISCHARGING:
return "DisChargeing";
case BatteryManager.BATTERY_STATUS_FULL:
return "full";
case BatteryManager.BATTERY_STATUS_NOT_CHARGING:
return "Not charging";
case BatteryManager.BATTERY_STATUS_UNKNOWN:
default:
return "Unknown";
}
}
private void showBatteryInfo(Intent intent) {
if (intent != null) {
int health = intent.getIntExtra(BatteryManager.EXTRA_HEALTH,
BatteryManager.BATTERY_HEALTH_UNKNOWN);
String healthString = "Health:" + healthCodeToString(health);
Log.d(TAG, healthString);
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100);
float percentage = (scale != 0) ? (100.f * (level / (float) scale))
: 0.0f;
String levelString = String.format("Level:%d/%d(%.2f%%)", level,
scale, percentage);
Log.d(TAG, levelString);
int plugged=intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0);
String pluggedString="Power source:"+pluggedCodeToString(plugged);
Log.d(TAG, pluggedString);
boolean present=intent.getBooleanExtra(BatteryManager.EXTRA_PRESENT, false);//当前是否是电池
String presentString="Present:"+(present?"yes":"No");
Log.d(TAG, presentString);
int status=intent.getIntExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN);
String statusString="Status:"+statusCodeToString(status);
Log.d(TAG, statusString);
String technology=intent.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY);
String technologyString="technology:"+technology;
int temperature=intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, Integer.MIN_VALUE);
String temperatureString="temperature:"+temperature;
Log.d(TAG, temperatureString);
int voltage=intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, Integer.MIN_VALUE);
String voltageString="voltage:"+voltage;
Log.d(TAG, voltageString);
StringBuilder sb=new StringBuilder();
sb.append(healthString+"\n");
sb.append(levelString+"\n");
sb.append(pluggedString+"\n");
sb.append(presentString+"\n");
sb.append(statusString+"\n");
sb.append(technologyString+"\n");
sb.append(temperatureString+"\n");
sb.append(voltageString+"\n");
Log.d(TAG, sb.toString());
mTextView.setText(sb.toString());
int id=intent.getIntExtra(BatteryManager.EXTRA_ICON_SMALL, 0);
getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, id);//设置标题栏左侧的图标
}else{
String s="No battery information";
mTextView.setText(s);
getWindow().setFeatureDrawable(Window.FEATURE_LEFT_ICON, null);
}
}
private void showBatteryInfos(){
Intent intent=registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
showBatteryInfo(intent);
}
private void createBatteryReceiver(){
mBroadcast=new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
showBatteryInfo(intent);
}
};
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
if(mBroadcast==null){
createBatteryReceiver();
}
registerReceiver(mBroadcast, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
//如果应用没有在前台运行,注销接收器以节省功耗
unregisterReceiver(mBroadcast);
}
@Override
public void onLowMemory() {
// TODO Auto-generated method stub
super.onLowMemory();
unregisterReceiver(mBroadcast);
mBroadcast=null;
}
}