Android电源管理,低电量报警

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();
	}

}


 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值