PowerManager.WakeLock

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保持高亮。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值