我使用下面的代码来打开和关闭屏幕。这两段代码都适用于大多数设备(在 Galaxy Note、Galaxy S2 等上测试过),但不适用于少数设备(主要是平板电脑,但也有一些手机)。在某些设备上,屏幕开启但屏幕关闭不起作用,而其他一些设备则相反。我不确定原因是什么,因为它是非常标准的代码(并且因为它适用于某些设备,这意味着触发这些函数,即函数调用,不是问题)。是否有其他方法可以打开/关闭我可以使用的屏幕?任何帮助是极大的赞赏。
屏幕开启:-
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
final WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK
|PowerManager.ACQUIRE_CAUSES_WAKEUP
|PowerManager.ON_AFTER_RELEASE, "");
wl.acquire();
屏幕关闭(这调用了一个简单地使用设备管理员权限来锁定和关闭屏幕的活动。在某些设备上,这只会锁定屏幕。在其他设备上,它不做任何事情。在某些设备上,它可以完美运行): -
devicePolicyManager.lockNow();
这是我正在尝试的另一种方法,但我不能很好地工作。基本上我将亮度设置为 0 并关闭屏幕,然后执行这些操作的活动调用完成()但由于某种原因,我无法在此之后 5-10 秒重新打开屏幕,无论我使用什么按钮按住(主页,电源)。
WindowManager.LayoutParams params = getWindow().getAttributes();
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = 0;
getWindow().setAttributes(params);