在Android 2.3.3中,我尝试使用以下代码将屏幕亮度设置为0:
Window myWindow = getWindow();
WindowManager.LayoutParams winParams = myWindow.getAttributes();
winParams.screenBrightness = 0.0f;
myWindow.setAttributes(winParams);
并安排Handler.postDelayed()在1秒内启动Runnable,将亮度恢复为完全,如下所示:
Window myWindow = getWindow();
WindowManager.LayoutParams winParams = myWindow.getAttributes();
winParams.screenBrightness = 1.0f;
myWindow.setAttributes(winParams);
然而,屏幕似乎完全关闭,在这1秒后没有任何反应。对Runnable进行一些跟踪清楚地表明它是由Handler发布的。
我还尝试将这两个调用封装到PARTIAL_WAKE_LOCK中,没有结果。无论如何,Runnable工作,所以在这里没有多少使用唤醒锁。
此外,如果亮度设置为0.01f而不是0f,它可以正常工作 - 1秒后它会恢复到正常状态。
有人可以建议如何在将亮度设置为0后再次恢复亮度吗?
答案 0 :(得分:2)
使用此代码
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = 0;
getWindow().setAttributes(params);
不会关闭屏幕,它会使屏幕尽可能暗淡。使用FLAG_KEEP_SCREEN_ON
意味着即使特定设备允许您将屏幕亮度设置为全关1},您也绝不允许屏幕关闭,您的设备将进入低功耗模式。