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() {@Overridepublic 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;}@Overridepublic String toString() {// TODO Auto-generated method stubStringBuilder 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();}}


更多相关文章

  1. 代码中设置drawableleft
  2. android 3.0 隐藏 系统标题栏
  3. Android开发中activity切换动画的实现
  4. Android(安卓)学习 笔记_05. 文件下载
  5. Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
  6. 技术博客汇总
  7. android 2.3 wifi (一)
  8. AndRoid Notification的清空和修改
  9. Android中的Chronometer

随机推荐

  1. navicat连接mysql出现2059错误的解决方法
  2. MYSQL自定义函数判断是否正整数的实例代
  3. MySQL服务器的SSD性能问题分析和测试详解
  4. MySQL5.7.24版本的数据库安装过程图文详
  5. 最新mysql 5.7.23安装配置图文教程
  6. mysql 5.7.24 安装配置方法图文教程
  7. mysql 5.7.24 安装配置图文教程
  8. 88秒插入1000万条数据到MySQL数据库表的
  9. MySQL 5.7并发复制隐式bug实例分析
  10. mysql5.7.23版本安装教程及配置方法