Android 将屏幕亮度设置为 0 会关闭屏幕 - 如何避免

标签 android screen brightness

在 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 后让亮度再次恢复到最大?

最佳答案

使用这段代码

params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = 0;
getWindow().setAttributes(params);

不会关闭屏幕,它使屏幕尽可能暗。使用 FLAG_KEEP_SCREEN_ON 意味着您永远不会让屏幕关闭并且您的设备将进入低功耗模式,即使特定设备允许您将屏幕亮度设置为全-关闭

关于Android 将屏幕亮度设置为 0 会关闭屏幕 - 如何避免,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11714267/

相关文章:

iOS黑屏大问题

android - 是否可以为屏幕/Activity 的每个部分设置不同的亮度级别?

php - 十六进制代码亮度 PHP?

c - 如何通过 X11 RandR 扩展库更改显示器亮度?

android - Android RxJava订阅无处触发

java - 如何在eclipse中找到可重写的方法

ios - 将 UIImage 从 URL 添加到 ruby​​motion 应用程序中的促销屏幕

java - BufferedImage getScaledInstance 改变图片的亮度

java - Android:将 SSL 证书作为流或字节 []

Android 推送通知限制 (C2DM)