通过后台服务触发SCREEN_ON事件android

时间:2016-10-24 04:21:59

标签: android android-service

如果我的手机在SCREEN_ON,我怎样才能发生SCREEN_OFF事件。 或者换句话说,我如何创建一些意图,以便从关闭到开启调用我的手机屏幕。

实际上我有一项服务可以在锁屏顶部创建一个视图。 为了测试它,我想创建一个计时器,如果屏幕关闭,每1分钟调用一次屏幕。该服务无限地在后台运行。

1 个答案:

答案 0 :(得分:1)

Try this:
  private void screenOn() {
        try {
            PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
            boolean isScreenOn;
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
                isScreenOn = pm.isInteractive();
            }
            else {
                isScreenOn = pm.isScreenOn();
            }
            if(!isScreenOn){
                KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
                KeyguardManager.KeyguardLock kl = km .newKeyguardLock("MyKeyguardLock");
                kl.disableKeyguard();

                PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK |PowerManager.ACQUIRE_CAUSES_WAKEUP |PowerManager.ON_AFTER_RELEASE,"MyLock");
                wl.acquire(10000);
//                PowerManager.WakeLock wl_cpu = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"MyCpuLock");
//                wl_cpu.acquire(10000);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }