PowerManager.WakeLock电池管理使用详解

来源:互联网 发布:上海对外经贸大学知乎 编辑:程序博客网 时间:2024/05/16 17:44

项目中有用到安卓对电池的操作,需要保持屏幕高亮显示,关于各参数的复合使用什么的感觉很乱,在这里整理一下。

PowerManager的权限声明

PowerManager的任何操作都必须声明权限:

<uses-permission android:name="android.permission.WAKE_LOCK" />

PowerManager.WakeLock的常规使用

对于WeakLock的操作,acquire()方法和release()方法必须成对出现,即加锁之后一定要释放锁。

PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);                PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK , "My lock");                wakeLock.acquire();                wakeLock.release();

PowerManager的参数

以下4个参数之间只能独立使用


参数CPU屏幕键盘灯PARTIAL_WAKE_LOCK保持运转会关闭会关闭SCREEN_DIM_WAKE_LOCK保持运转会变低亮会关闭SCREEN_BRIGHT_WAKE_LOCK 保持运转高亮会关闭FULL_WAKE_LOCK保持运转高亮高亮

关于屏幕和键盘灯会关闭的理解,例如SCREEN_DIM_WAKE_LOCK,在系统默认的降低屏幕亮度时间到达之后,手机屏幕将会变暗 ,但不会熄屏,键盘灯也会关闭(部分设备键盘灯不关闭)。

使用PARTIAL_WAKE_LOCK锁时,按下电源键,CPU将仍处于运行状态,除非release掉此锁。使用其他三个锁的时候,手机CPU会保持运转,但如果主动按下电源键,CPU将进入休眠


以下2个参数不可独立使用,必须与上面的参数一起使用


参数功能ACQUIRE_CAUSES_WAKE_UP强制使屏幕亮起ON_AFTER_RELEASE释放锁时,屏幕稍后关闭

ACQUIRE_CAUSES_WAKE_UP会使屏幕无论在合作状态下,立即高亮显示,但必须配合以上四个参数使用:

PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);                PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.FULL_WAKE_LOCK |powerManager.ON_AFTER_RELEASE, "My lock");                wakeLock.acquire();                wakeLock.release();


以上复合使用了三个参数 ACQUIRE_CAUSES_WAKE_UP、FULL_WAKE_LOCK、ON_AFTER_RELEASE,含义是让设备无论在何种状态下都立即点亮屏幕并一直保持高亮显示,且在release()之后,设备稍后(系统默认的降低屏幕亮度时间到达之后)关闭屏幕与键盘灯。

注意:

FULL_WAKE_LOCK属性在API 17中不可用。

如果需要在activity级别使屏幕保持高亮,也可以使用WindowManager.LayoutParams中的方法,WindowManager.LayoutParams 是 WindowManager 接口的嵌套类。在activity的onCreate()方法中添加:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

可以使当前可见的activity保持高亮。



1 0
原创粉丝点击