Android 以编程方式打开屏幕
我想解锁屏幕并打开它,在事件触发器上显示一个弹出窗口。我可以使用解锁屏幕Android 以编程方式打开屏幕,android,screen,locking,Android,Screen,Locking,我想解锁屏幕并打开它,在事件触发器上显示一个弹出窗口。我可以使用解锁屏幕 newKeyguardLock = km.newKeyguardLock(HANDSFREE); newKeyguardLock.disableKeyguard(); 在KeyGuardService上,但我无法打开屏幕。我正在使用 wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, HANDSFREE); wl.acquire(); 但是没有成功。屏幕仍
newKeyguardLock = km.newKeyguardLock(HANDSFREE);
newKeyguardLock.disableKeyguard();
在KeyGuardService
上,但我无法打开屏幕。我正在使用
wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, HANDSFREE);
wl.acquire();
但是没有成功。屏幕仍处于关闭状态。
我怎样才能做到这一点呢?我也有同样的问题。正如这些人所讨论的,有一个隐藏的api可以打开/关闭屏幕,请参见:
但我不知道怎么称呼它。实际上,我看到一个应用程序可以打开屏幕,不知道它是否是特定于设备的。在主要活动的OnCreate()中,编写以下代码:
((PowerManager)getSystemService(POWER_SERVICE)).newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "TAG").acquire();
它会使设备唤醒
不要忘记禁用keyguard()以解锁设备…作者的说明:我在2012年写过这篇文章。我不知道它是否还能用。请务必查看其他较新的答案
阿米尔的回答让我很接近,但你至少需要
ACQUIRE\u CAUSES\u WAKEUP
标志(针对Android 2.3.3构建)
未定义的带有空指针检查和设置超时的答案:
private void turnOnScreen() {
PowerManager.WakeLock screenLock = null;
if ((getSystemService(POWER_SERVICE)) != null) {
screenLock = ((PowerManager)getSystemService(POWER_SERVICE)).newWakeLock(
PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
screenLock.acquire(10*60*1000L /*10 minutes*/);
screenLock.release();
}
}
这是一个非常流行的问题,但现在公认的答案已经过时了 以下是打开屏幕或从活动中唤醒设备屏幕的最新方法:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
this.setTurnScreenOn(true);
} else {
final Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}
在API第27级
中,使用但标志\u打开屏幕\u标志已被弃用,因此您可以从API第27级
开始使用
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
this.setTurnScreenOn(true);
} else {
final Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}