2012-07-30 171 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