您的位置:首页 > 移动开发 > Android开发

Android电源管理,低电量报警

2011-10-12 11:02 543 查看
Source code:

package com.inanwong.main;

import java.util.Timer;
import java.util.TimerTask;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;

public class PhoneBatTask {

private static final int TIME_SPACE_DELAY = 1000;

public static final int TIME_SPACE_PERIOD = 1800 * 1000;

public static final int PB_LOWFLAG = 15;

private Context context = null;

private int intLevel = 100;
private int intScale = 100;

private int timeInterval = TIME_SPACE_PERIOD;
private int lowFlag = PB_LOWFLAG;

private boolean isStartRegister = false;

private TimerTask batTask = new TimerTask() {
@Override
public void run() {
if (!isStartRegister) {
timer.cancel();
return;
}
disposePower(intLevel, intScale);
}
};

private final Timer timer = new Timer();

/* create BroadcastReceiver */
private BroadcastReceiver mBatteryInfoReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (Intent.ACTION_BATTERY_CHANGED.equals(action)) {
intLevel = intent.getIntExtra("level", 0);
intScale = intent.getIntExtra("scale", 100);
}
}
};

private static final String TAG = "[PhoneBatTask]";

PhoneBatTask() {
// TODO Auto-generated constructor stub
}

public PhoneBatTask(Context context, int timeInterval, int lowFlag) {
this.context = context;
this.timeInterval = timeInterval;
this.lowFlag = lowFlag;
}

public boolean registerBatterBroadCast() {
boolean flag = false;
try {
this.context.registerReceiver(mBatteryInfoReceiver,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
flag = true;
isStartRegister = true;
timer.schedule(batTask, TIME_SPACE_DELAY, timeInterval);
} catch (Exception e) {
e.printStackTrace();
}
Log.i(TAG, toString());
return flag;
}

@SuppressWarnings("unused")
private boolean unregisterBatterBroadCast() {
boolean flag = false;
try {
this.context.unregisterReceiver(mBatteryInfoReceiver);
flag = true;
isStartRegister = false;
timer.cancel();
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}

public synchronized void disposePower(int intLevel, int intScale) {
if ((intLevel * 100) < (lowFlag * intScale)) {
// do sth for power low ...
}
Log.i(TAG, "intLevel = " + intLevel + "; intScale = " + intScale);
}

public void setTimeInterval(int timeInterval) {
if (this.timeInterval == timeInterval) {
return;
}
if (isStartRegister) {
this.timeInterval = timeInterval;
timer.cancel();
batTask.cancel();
timer.schedule(batTask, TIME_SPACE_DELAY, timeInterval);
}
Log.i(TAG, toString());
}

public void setLowFlag(int lowFlag) {
this.lowFlag = lowFlag;
}

@Override
public String toString() {
// TODO Auto-generated method stub
StringBuilder b = new StringBuilder();
b.append("{ timeInterval=");
b.append(timeInterval);
b.append(" lowFlag=");
b.append(lowFlag);
b.append(" intLevel=");
b.append(intLevel);
b.append(" intScale=");
b.append(intScale);
b.append(" }");
return b.toString();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: