wakelock唤醒设备,keyguardManager操作锁屏
1.wakelock唤醒设备,下面是一段代码。
使用wakelock时要在manifest.xml里加入权限:
<uses-permission android:name="android.permission.WAKE_LOCK" >
<uses-permission android:name="android.permission.DEVICE_POWER" >
//创建PowerManager对象
PowerManager mPm = (PowerManager) getSystemService(Context.POWER_SERVICE);
//创建walelock对象
Wakelock mScreenonWakeLock = mPm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP, "AIYONG");
//调用唤醒函数,传入一个超时的限制
mScreenonWakeLock.acquire(2000);
//释放wakelock
mScreenonWaleLock.release();
wakelock对象中的几个参数说明:
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 被释放后,维持屏幕亮度一小段时间
不同的参数对应了不同的wakelock对象,根据自己的需求选择合适的参数,一般不唤醒屏幕都是使用PARTIAL_WAKE_LOCK这个参数的。
需要注意的是使用完wakelock后一定要记得释放wakelock,不然手机一直处于唤醒状态,手机不能进入休眠电量一下就没了。所以wakelock的acquire()和release()是成对出现的。唤醒后做完事情或就release释放掉。为了保险起见会在acquire(2000)加个超时的时间。
- keyguardManager的使用,下面是解锁和锁屏的一段代码:
使用keyguard时也是需要权限的,需要在manifest.xml里加入下面的权限
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
KeyguardManager mKeyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
//创建keyguard对象
KeyguardLock mKeyguardLock = mKeyguardManager.newKeyguardLock("AIYONG");
//解锁
mkeyguardLock.disableKeyguard();
//判断是否锁屏,没锁就锁屏
if (!mKeyguardManager.inKeyguardRestrictedInputMode()) {
mkeyguardLock.reenableKeyguard();
}
需要注意的是:锁屏reenableKeyguard()这个函数,如果在调用disableKeyguard()函数之前是锁屏的,那么就进行锁屏,否则不进行任何操作。当然如果之前没调用disableKeyguard()函数,也不进行任何操作。所以调用reenableKeyguard()函数之前,你必须要有过锁屏动作,否则不做任何操作。