Android设置屏幕亮度为0关闭屏幕 – 如何避免

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性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...