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. android读取网络图片
  2. Android实现网络音乐播放器
  3. Android 手机号码格式验证
  4. Android学习路线(十二)Activity生命周期—
  5. Android 监听WiFi的开关状态实现代码
  6. 设置 Android wifi连接 samples【转】
  7. Android Zygote进程和SystemServer进程启
  8. Android: Requesting root access in you
  9. 网页拉起其他app
  10. android 设置APN