屏幕关闭时启动活动

时间:2014-07-18 22:08:45

标签: android android-activity screen alarmmanager alarm

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

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

如果屏幕关闭,则根本不起作用。我尝试使用以下内容作为onCreate

中的第一件事
getWindow().setFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,  WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

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

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

07-18 23:52:13.685: E/OpenGLRenderer(14148):   GL_INVALID_OPERATION

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

3 个答案:

答案 0 :(得分:5)

我的答案部分来自here

        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);

答案 1 :(得分:1)

前段时间我读到你的应用必须全屏显示FLAG_TURN_SCREEN_ON才能正常工作。

" **一个重要的注意事项。您的活动必须全屏,以便上述标志组合起作用。在我的应用程序中,我尝试将这些标志用于不是全屏的活动(对话主题)并且它不起作用。在查看文档后,我发现这些标志要求窗口是一个全屏窗口。" - Wake Android Device up

引自与FLAG_X发布类似问题的人。

答案 2 :(得分:1)

考虑运行服务,活动将在不在前台时停止。

另请参阅活动生命周期。 http://developer.android.com/reference/android/app/Activity.html