Programmatically turn screen on in android

后端 未结 3 1187
日久生厌
日久生厌 2020-12-14 23:40

I am developing an alarm application. From the main activity i set the alarm using broadcast. Then in onReceive in broadcast receiver i call activity that is enabling user t

相关标签:
3条回答
  • 2020-12-14 23:44

    I also suffered from many problems for my app. Actually i want screen lock when user presses the back button twice. and unlock when user presses the home button.

    For unlock the device marmor's code is right. :) I've used this code.

    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
                    WakeLock wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
                                                     | PowerManager.ACQUIRE_CAUSES_WAKEUP
                                                     | PowerManager.ON_AFTER_RELEASE, "MyWakeLock");
                    wakeLock.acquire();
    
    0 讨论(0)
  • 2020-12-14 23:58

    Here is the solution

    WindowManager windowManager = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
        WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT,
                LayoutParams.TYPE_SYSTEM_ALERT |
                        LayoutParams.TYPE_SYSTEM_OVERLAY,
                        LayoutParams.FLAG_NOT_TOUCH_MODAL |
                        LayoutParams.FLAG_SHOW_WHEN_LOCKED |
                        LayoutParams.FLAG_KEEP_SCREEN_ON|
                        LayoutParams.FLAG_DISMISS_KEYGUARD|
                        LayoutParams.FLAG_TURN_SCREEN_ON,
                PixelFormat.TRANSPARENT);
    
    KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
        km.isKeyguardLocked();
    
        windowManager.addView(mTopView, params);
        getWindow().setBackgroundDrawable();
    
    0 讨论(0)
  • 2020-12-15 00:05

    I started off much like you, and the window flags didn't really work.

    I finally got it to work by using two Android services: KEYGUARD_SERVICE and POWER_SERVICE:

    KeyguardManager km = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
    final KeyguardManager.KeyguardLock kl = km.newKeyguardLock("MyKeyguardLock");
    kl.disableKeyguard();
    
    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
    wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP
            | PowerManager.ON_AFTER_RELEASE, "MyWakeLock");
    wakeLock.acquire();
    

    Don't forget to release the wake lock when you're done with it.

    You'll need to request permissions DISABLE_KEYGUARD and WAKE_LOCK

    0 讨论(0)
提交回复
热议问题