android - 在 Android 上以编程方式打开屏幕

标签 android screen powermanager

我需要在用户使用电源按钮关闭时以编程方式打开屏幕,是的,我总是在 Activity 中有正确的标志来保持屏幕打开,但它不会避免用户按下电源按钮。

到目前为止,我找到了一个解决方案,但它使用了一个已弃用的唤醒锁

sWakeLock = sPM.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, TAG_WAKELOCK);

sWakeLock.acquire();
sWakeLock.release();

有更好的实现方式吗?

最佳答案

在 Lollipop 中你可能想要添加更多的标志:

final Window win = getWindow();
    win.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 );

我从 AOSP 得到这个 https://android.googlesource.com/platform/packages/apps/DeskClock/+/dfd1960/src/com/android/deskclock/alarms/AlarmActivity.java

关于android - 在 Android 上以编程方式打开屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30090589/

相关文章:

html - 如何在@media 屏幕属性中调整图像大小?

android - 我应该用什么替换 SCREEN_DIM_WAKE_LOCK?

android - 在 Google map 代码段中添加回车符

android - 在另一个 PreferenceActivity 中启动自定义 PreferenceActivity

android - 以编程方式更改 XML 文件?

android - 对于华为设备,isPowerSaveMode() 始终返回 false

java - 试图让 Android 设备进入休眠状态,但 PowerManager 不包含“goToSleep(long) 方法

android - 共享元素过渡动画到/从全屏 Activity

android - 使用 onShake 方法启动新 Activity

android - 尝试使用 Dagger 2 实现 MVP - 如何在提供的演示者中获取对 Activity 的引用