package cm.android.sdk.content; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.BatteryManager; /** * 电池监听器 */ public class BatteryReceiver extends BaseBroadcastReceiver { private BatteryChangedListener listener; public BatteryReceiver(BatteryChangedListener listener) { if (listener == null) { this.listener = defaultListener; } else { this.listener = listener; } } private static final BatteryChangedListener defaultListener = new BatteryChangedListener() { @Override public void batteryChanged(BatteryInfo batteryInfo) { } }; @Override public void onReceive(Context context, Intent intent) { BatteryInfo batteryInfo = parseBattery(intent); listener.batteryChanged(batteryInfo); } @Override public IntentFilter createIntentFilter() { IntentFilter intentFilter = super.createIntentFilter(); intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED); return intentFilter; } public static interface BatteryChangedListener { public void batteryChanged(BatteryInfo batteryInfo); } public static class BatteryInfo { public int status; public int health; public boolean present; public int level; public int scale; public int icon_small; public int plugged; public int voltage; public int temperature; public String technology; @Override public String toString() { return "BatteryInfo{" + "status=" + status + ", health=" + health + ", present=" + present + ", level=" + level + ", scale=" + scale + ", icon_small=" + icon_small + ", plugged=" + plugged + ", voltage=" + voltage + ", temperature=" + temperature + ", technology='" + technology + '\'' + '}'; } } public static BatteryInfo getBattery(Context context) { IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); Intent intent = context.getApplicationContext().registerReceiver(null, filter); BatteryInfo batteryInfo = parseBattery(intent); return batteryInfo; } public static BatteryInfo parseBattery(Intent intent) { BatteryInfo batteryInfo = new BatteryInfo(); if (intent == null) { return batteryInfo; } batteryInfo.status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, 0);//API:5 batteryInfo.health = intent.getIntExtra(BatteryManager.EXTRA_HEALTH, 0); batteryInfo.present = intent.getBooleanExtra(BatteryManager.EXTRA_PRESENT, false); batteryInfo.level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0); batteryInfo.scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100); batteryInfo.icon_small = intent.getIntExtra(BatteryManager.EXTRA_ICON_SMALL, 0); batteryInfo.plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0); batteryInfo.voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, 0); batteryInfo.temperature = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0); batteryInfo.technology = intent.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY); return batteryInfo; } }