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(); } }
相关文章推荐
- 转: Android 电源管理专题之监测电池电量和充电状态 | 润物无声
- mtk android smartphone方案 低电量报警
- 转: Android 电源管理专题之监测电池电量和充电状态Monitoring the Battery Level and Charging State
- android系统信息(内存,cpu,sd卡,电量,版本)的获取
- android进阶----性能优化----电量优化
- Android -- 系统信息(内存、cpu、sd卡、电量、版本)获取
- Android自定义电量控件中过度绘制与思考
- android 显示电池电量
- Android 电量变化监听
- [转载]Android Power Management 电源管理
- 详解Android电源管理API
- Android电量图标实现
- android adb:电池与电量
- android电源管理kernel部分学习
- Android性能优化系列之电量优化
- 通过openwrt推送门磁报警信息到android手机上
- android待机添加电量小部件,点击位置信息图标,模式切换需要改为四种
- Android电池电量更新 - BatteryService(转)
- android电池电量优化
- android-code-电量变化