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

Android程序主动点亮&解锁屏幕的实现

2012-05-24 09:17 531 查看
在android开发中,经常会遇到一些情形需要程序主动维持屏幕的点亮状态,或者自己点亮屏幕并且解除屏幕锁定状态,这时可以用下面的方法予以解决。
 
 
情形一:类似于阅读软件,在阅读过程中忽视系统的屏幕超时设置保持屏幕长亮。可以直接
在 onCreat() 方法中加上下面一句:
 
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
 
 
情形二:类似于闹钟,在锁屏状态下点亮屏幕。方法如下:
 
在AndroidManifest.xml中加上permission 权限:
<uses-permissionandroid:name="android.permission.WAKE_LOCK" />
 
在onCreat() 方法中添加以下语句:
 
//电源管理器
PowerManagerpm = (PowerManager)getSystemService(POWER_SERVICE);
WakeLockmWakelock = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP|PowerManager.SCREEN_DIM_WAKE_LOCK,"SimpleTimer");
 
flags参数说明:

PARTIAL_WAKE_LOCK: Screen off, keyboardlight off 

SCREEN_DIM_WAKE_LOCK: screen dim, keyboardlight off 

SCREEN_BRIGHT_WAKE_LOCK: screen bright,keyboard light off 

FULL_WAKE_LOCK: screen bright, keyboardbright

ACQUIRE_CAUSES_WAKEUP:当获得WAKE_LOCK时强制立即点亮屏幕和键盘

ON_AFTER_RELEASE:释放锁时重置activity timer

 
 
重载Avtivity的onResume()和onDestroy方法:
 
@Override
protectedvoid onResume() {
// TODOAuto-generated method stub
super.onResume();
mWakeLock.acquire();//点亮
}
 
@Override
protectedvoid onDestroy() {
// TODOAuto-generated method stub
mWakeLock.release();//关闭
super.onDestroy();
}
 
情形三:类似于来电,有时程序不仅仅需要主动点亮屏幕还需要解除屏幕的锁定状态。此时可以在情形二的基础上增添以下的代码:
 
在AndroidManifest.xml中加上permission 权限:
<uses-permissionandroid:name="android.permission.DISABLE_KEYGUARD" />
 
增加解除屏幕锁定的语句:
 
//键盘锁管理器对象  
KeyguardManager km= (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);  

 //这里参数”unLock”作为调试时LogCat中的Tag
KeyguardLockkl = km.newKeyguardLock("unLock");   
kl.disableKeyguard();  //解锁
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息