在 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 中添加一些 trace 可以清楚地表明它是由 Handler 启动的。
我还尝试将这两个调用包含在 PARTIAL_WAKE_LOCK 中,但没有结果。无论如何,Runnable 是有效的,所以这里没有太多使用唤醒锁。
此外,如果将亮度设置为 0.01f 而不是 0f,它可以正常工作 - 1 秒后它会恢复到完整状态。
谁能告诉我如何在将亮度设置为 0 后再次恢复到全亮度?