本文参考:http://www.cnblogs.com/keyindex/articles/1819504.html
在android程序中,有时需要保持一个activity常亮,或需要唤醒屏幕,我们就会用到PowerManager和PowerManager.WakerLock。
PowerManager和PowerManager.WakerLock用于设备电源的管理:
PowerManager:该类用于控制设备的电源状态;
PowerManager.WakerLock:获取lock锁,使设备常亮。
Android中通过各种Lock锁对电源进行控制,需要注意的是加锁和解锁必须成对出现。通常在onRusume方法中将获得到的锁使用acquire()方法来保持唤醒,在onPause方法中使用release()方法来释放掉该锁。
导入包
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
获取锁
<span style="font-size:14px;">PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, this.getClass().getCanonicalName());
wakeLock.acquire();</span>
释放锁
if (wakeLock !=null&& wakeLock.isHeld()) {
wakeLock.release();
wakeLock =null;
}
Context.getSystemService()
方法获取PowerManager实例。
关于int flags,各种锁的类型对CPU 、屏幕、键盘的影响:
PARTIAL_WAKE_LOCK:保持CPU 运转,屏幕和键盘灯有可能是关闭的。
SCREEN_DIM_WAKE_LOCK:保持CPU 运转,允许保持屏幕显示但有可能是灰的,允许关闭键盘灯
SCREEN_BRIGHT_WAKE_LOCK:保持CPU 运转,允许保持屏幕高亮显示,允许关闭键盘灯
FULL_WAKE_LOCK:保持CPU 运转,保持屏幕高亮显示,键盘灯也保持亮度
ACQUIRE_CAUSES_WAKEUP:当获取锁后,立刻亮屏,典型地使用在通知中,以让用户立刻查看。
ON_AFTER_RELEASE:设置了该标志,当wakelock释放后,手机屏幕仍会亮一会。
权限获取:
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.DEVICE_POWER"/>
另外WakeLock的设置是 Activiy 级别的,不是针对整个Application应用的。