2012-07-30 72 views
3

在安卓2.3.3,我想将屏幕亮度使用此代码设置为0:Android的设置屏幕亮度为0关闭屏幕 - 如何避免

Window myWindow = getWindow(); 
WindowManager.LayoutParams winParams = myWindow.getAttributes(); 
winParams.screenBrightness = 0.0f; 
myWindow.setAttributes(winParams); 

和调度处理程序。 postDelayed()合作推出一个Runnable在1秒设置亮度回全是这样的:

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

您是否试图避免关闭屏幕?或者你是否试图关闭屏幕然后再打开它? – 2012-07-30 00:55:32

回答

2

使用此代码

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

不关闭屏幕,它使屏幕暗淡越好。使用FLAG_KEEP_SCREEN_ON意味着即使特定设备允许您将屏幕亮度设置为全屏,也不会允许屏幕熄灭并且设备将进入低功耗模式。

+0

我正在使用此确切代码,并且上述问题仍然出现。屏幕熄灭后(黑色),它不会再次将亮度设置为1.0f .. – Sandra 2014-02-03 09:37:59