package com.appassit.widget.battery;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
public class BatteryObserver implements IObserver {
/**
* 是否在充电
*/
public static final String PARAM_ISCHARGING = "param_ischarging";
/**
* 当前电量
*/
public static final String PARAM_LEVEL = "param_level";
/**
* 总共电量
*/
public static final String PARAM_SCALE = "param_scale";
private static BatteryObserver instance;
public synchronized static BatteryObserver getInstance(Context context) {
if (instance == null) {
instance = new BatteryObserver(context);
}
return instance;
}
private Context context;
private boolean isRegister = false;
private int status = -1;
private int level = -1;
private int scale = -1;
private OnBatteryChange onBatteryChange;
public BatteryObserver(Context context) {
this.context = context;
}
public void register() {
if (!isRegister) {
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
context.registerReceiver(mBroadcastReceiver, filter);
isRegister = true;
}
}
public void unRegister() {
if (isRegister) {
context.unregisterReceiver(mBroadcastReceiver);
isRegister = false;
}
}
public boolean isRegister() {
return isRegister;
}
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (Intent.ACTION_BATTERY_CHANGED.equals(action)) {
int status = intent.getIntExtra("status", 0);
int level = intent.getIntExtra("level", 0);
int scale = intent.getIntExtra("scale", 0);
BatteryObserver.this.status = status;
BatteryObserver.this.level = level;
BatteryObserver.this.scale = scale;
if (onBatteryChange != null) {
onBatteryChange.onChange(status, level, scale);
}
}
}
};
public int getStatus() {
return status;
}
public int getLevel() {
return level;
}
public int getScale() {
return scale;
}
public OnBatteryChange getOnBatteryChange() {
return onBatteryChange;
}
public void setOnBatteryChange(OnBatteryChange onBatteryChange) {
this.onBatteryChange = onBatteryChange;
}
public interface OnBatteryChange {
public void onChange(int status, int level, int scale);
}
}