当前位置:   article > 正文

Android应用代码点亮屏幕并解锁_安卓点亮屏幕代码

安卓点亮屏幕代码

总共有几种方式,但是有些已经废弃了,具体可以尝试一下。

第一种:

  1. <uses-permission android:name="android.permission.WAKE_LOCK" />
  2. <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
  1. /**
  2. * 唤醒手机屏幕并解锁
  3. */
  4. public static void wakeUpAndUnlock() {
  5. // 获取电源管理器对象
  6. PowerManager pm = (PowerManager) MyApplication.getContext()
  7. .getSystemService(Context.POWER_SERVICE);
  8. boolean screenOn = pm.isScreenOn();
  9. if (!screenOn) {
  10. // 获取PowerManager.WakeLock对象,后面的参数|表示同时传入两个值,最后的是LogCat里用的Tag
  11. PowerManager.WakeLock wl = pm.newWakeLock(
  12. PowerManager.ACQUIRE_CAUSES_WAKEUP |
  13. PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "bright");
  14. wl.acquire(10000); // 点亮屏幕
  15. wl.release(); // 释放
  16. }
  17. // 屏幕解锁
  18. KeyguardManager keyguardManager = (KeyguardManager) MyApplication.getContext()
  19. .getSystemService(KEYGUARD_SERVICE);
  20. KeyguardManager.KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("unLock");
  21. // 屏幕锁定
  22. keyguardLock.reenableKeyguard();
  23. keyguardLock.disableKeyguard(); // 解锁
  24. }

注意:好多写法都是wl.acquire() 这样写的,在有的手机上不好使,所以有的博客这样写的wl.acquire(10000); // 点亮屏幕然后就好使了,不知道是不是时间太短了,刚唤醒屏幕就释放掉了会有问题。

实际上这种方式在Android 9 以后好像行不通了。

第二种:

当然是设置window的flag了。

  1. private void unLockScreen(){
  2. final Window win = getWindow();
  3. win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
  4. | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
  5. win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
  6. | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
  7. | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON);
  8. }

第三种:

  1. if (mHomeActivity == null) return;
  2. keyguardManager.requestDismissKeyguard(mHomeActivity, new KeyguardManager.KeyguardDismissCallback() {
  3. @Override
  4. public void onDismissError() {
  5. super.onDismissError();
  6. Log.d("xxx-->", "1 onDismissError");
  7. }
  8. @Override
  9. public void onDismissSucceeded() {
  10. super.onDismissSucceeded();
  11. Log.d("xxx-->", "1 onDismissSucceeded");
  12. }
  13. @Override
  14. public void onDismissCancelled() {
  15. super.onDismissCancelled();
  16. Log.d("xxx-->", "1 onDismissCancelled");
  17. }
  18. });

第三种就是单纯的调用keyGuardManager,没什么好说的。如果条件允许,建议用原生的。

第四种:

没有了。通过跨进程通信或者什么通知方式告知SystemUi,让它帮忙开锁解锁。这种适用于定制android系统,比如电视机、车机等。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/619599
推荐阅读
相关标签
  

闽ICP备14008679号