项目中有用到安卓对电池的操作,需要保持屏幕高亮显示,关于各参数的复合使用什么的感觉很乱,在这里整理一下。
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保持高亮。
本文详细介绍了Android系统中使用PowerManager进行屏幕亮度控制的方法。包括如何声明必要的权限、使用WakeLock的不同模式及其组合方式,以及如何保持屏幕始终处于高亮状态。
879

被折叠的 条评论
为什么被折叠?



