2011-07-21 42 views
3

當**請注意,我只是試圖關閉顯示器。如果你有這樣做的更好的方法,這個請建議吧:)黑屏恢復screenBrightness的Android

我使用

params.screenBrightness = 0; 
getWindow().setAttributes(params); 

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

開啓/關閉顯示器。當我重新打開屏幕時,我所得到的僅僅是一個帶背光的黑屏。

任何想法爲什麼會發生這種情況? 謝謝 Mike

+0

嘗試重繪意見,因爲與上次的指令,實際上是開啓背光。嘗試無效(如果可能) –

+0

你介意澄清一點?我試着用搜索引擎重新繪製,但沒有明確提出了:/ – thegreyspot

+0

最後的指令你這樣做是爲了打開顯示屏。那麼,我們假設只打開背光燈,只有屏幕上的白色像素,我告訴你的是重畫/無效你想要顯示的視圖,換句話說,白色像素將被替換。 –

回答

0

Screen brightness範圍從0到1,而你使用的-1是用於「首選」亮度。首先嚐試使用1,看看是否有效,因爲-1可能只是保持之前的設置。

+0

是的,我已經試過這個,結果相同 – thegreyspot

+0

噢。也許我會在今天晚些時候實驗自己,知道如何做到這一點可以派上用場(^ _〜) – Izkata

+0

雅如果你有相同的結果將是有趣的:/ – thegreyspot

2

雖然是微小的變化,可以嘗試在一個「F」的結尾是這樣的:

params.screenBrightness = 0F; 
getWindow().setAttributes(params); 

如果不解決問題的工作,也許在刷新屏幕可能會被帶回屏幕工作恢復到默認設置。我做了一些研究,發現這個代碼可能在刷新屏幕工作:

this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN, WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); 

另外,你可以嘗試在手機上打開與電源管理器喚醒鎖定:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
// Wakes the screen on. 
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP, AudioControlExtender.this.getClass().getName()); 
wl.acquire(); 

如果這沒有按」將不起作用,然後打開屏幕你現在正在做的方式,然後做到這一點:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
// Sets the screen on maximum brightness. 
// This might fix the problem you are having with the screen brightness since 
// the screen settings are changed. 
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, AudioControlExtender.this.getClass().getName()); 
wl.acquire(); 
1

讓這個工作的最好方法是給我們PowerManager.goToSleep(time);多久你想要睡覺設備

這樣,你可以控制(如果你願意的話),你也可以使用PowerManager.isScreenOn(),以確定它是否已經再次打開。

你將不得不安裝激活鎖定,如果你的已經不是......很容易只是做

PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "GLGame"); 

,並從您可以使用powerManager.goToSleep

編輯

化妝確保您釋放WakeLock並通過onPause和onResume方法獲取它們!先前顯示