您的位置:首页 > 移动开发 > Android开发

Android wakelock和keyguardManager

2015-06-02 13:53 344 查看

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()函数之前,你必须要有过锁屏动作,否则不做任何操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: