屏幕关闭时启动活动

KKO*_*KKO 4 android screen alarm alarmmanager android-activity

我已经设置了一个AlarmManager来启动一个活动.此活动还会播放声音,类似于闹钟应用或来电.

即使屏幕被锁定,如果屏幕打开也可以正常工作.

如果屏幕关闭,则根本不起作用.我尝试使用以下内容作为onCreate中的第一件事

getWindow().setFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,  WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
Run Code Online (Sandbox Code Playgroud)

如果未启用屏幕锁定,则会打开屏幕,我可以看到我的活动已关闭.我听不到播放的声音.如果启用了屏幕锁定,则屏幕根本不会打开.

有时我会得到以下内容,但并非总是如此:

07-18 23:52:13.685: E/OpenGLRenderer(14148):   GL_INVALID_OPERATION
Run Code Online (Sandbox Code Playgroud)

如何在屏幕关闭时使其正常启动?

KKO*_*KKO 6

我从这里得到了部分答案.

        lock = ((KeyguardManager) getSystemService(Activity.KEYGUARD_SERVICE)).newKeyguardLock(KEYGUARD_SERVICE);
        powerManager = ((PowerManager) getSystemService(Context.POWER_SERVICE));
        wake = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");

        lock.disableKeyguard();
        wake.acquire();

        getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
                | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
                | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
                | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON);
Run Code Online (Sandbox Code Playgroud)