Android唤醒屏幕并解锁

最近做一个类似闹钟的APP,需要定时唤醒屏幕并解锁,通过查找资料发现,有如下两种方式可以实现该功能

方式一:使用KeyguardManager.KeyguardLock和PowerManager.WakeLock实现

代码:

<span style="white-space:pre">	</span>KeyguardManager km= (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
        KeyguardManager.KeyguardLock kl = km.newKeyguardLock("unLock");
        //解锁
        kl.disableKeyguard();
        
        PowerManager pm=(PowerManager) getSystemService(Context.POWER_SERVICE);
        //获取PowerManager.WakeLock对象
        PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK,"bright");
        //获取锁
        wl.acquire();
        //释放锁
        wl.release();



需添加权限:

<span style="font-size:18px;"><uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/></span>

注意:加锁和解锁必须成对出现


方式二:使用android.view.WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED 和android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON实现

代码:

<span style="font-size:18px;">getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);</span>

 

这句话必须在setContentView(R.layout.xxx)之前

FLAG_SHOW_WHEN_LOCKED:special flag to let windows be shown when the screen is locked. This will let application windows take precedence over key guard or any other lock screens. Can be used with FLAG_KEEP_SCREEN_ON to turn screen on and display windows directly before showing the key guard window. Can be used with FLAG_DISMISS_KEYGUARD to automatically fully dismisss non-secure keyguards. This flag only applies to the top-most full-screen window.

FLAG_KEEP_SCREEN_ON:as long as this window is visible to the user, keep the device's screen turned on and bright.

虽然两种方法都可以实现,但查看API文档发现如下


所以还是建议使用方式二,不要申请上面的两个权限,也能达到相同的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值