2013-03-19 41 views
2

我一直試圖在Android設置的限制下設置亮度。有在谷歌兩個類似Play的應用程式這樣做:使用alpha和保存值將亮度設置爲低於系統限制

第二個,甚至允許使用手機黑屏,正是我需要在我的應用程序。

有很多關於亮度等問題,但不能將其設置在該系統的限制,我發現一個問題,問幾乎是相同的,但沒有幫助我: Brightness Screen Filter

所以之後很多搜索我有下面的代碼:

int brightness=0; //0 to 255, so I set it to a low level (not enough for me) 
ContentResolver cResolver = getContentResolver(); 

//set the system brightness value, and if active, disable auto mode. 
System.putInt(cResolver, System.SCREEN_BRIGHTNESS, brightness); 
System.putInt(cResolver, System.SCREEN_BRIGHTNESS_MODE, System.SCREEN_BRIGHTNESS_MODE_MANUAL); 

//previous lines don't set the brightness to the current screen so we set it like this: 
LayoutParams layoutpars = getWindow().getAttributes(); 
layoutpars.screenBrightness = brightness/(float)255; 

//Now we have brightness to the minimum allowed by Android but 
//to achieve what these apps do, I have to reduce alpha of the window to the min 
//then the screen is black like I want, and totally usable! 
layoutpars.alpha=0.05f; 
window.setAttributes(layoutpars); 

這裏阿爾法是關鍵,這是做我想要的東西,但只爲當前窗口/屏幕,我需要這個阿爾法保存到系統默認,就像我在處理亮度和手動模式時一樣。

你知道我該怎麼做嗎?我無法找到一個值「System.SCREEN_ALPHA」來設置System.putInt或另一種方式來做到這一點。

在我之前關聯的另一個問題中,pheelicks回覆了一個使用透明的非觸摸屏幕的建議,但這不適用於我,結果並沒有給出像以前那樣關閉屏幕的感覺應用。

謝謝。

+0

嘿!你的問題如何解決?我有同樣的要求! – 2016-06-21 12:32:32

回答

0

我決定在我的應用程序中使用alpha來實現此功能。所以我沒能解決最初的問題在所有....

不管怎麼說,到底看來,解決這個問題是一個Pheelicks這裏回答:https://stackoverflow.com/a/4287597/1667990

- 這是啓動一個活動是總是在頂部,

- 附阿爾法爲0.0f所以它是透明的,

- 即觸摸重定向到後面的活動:

//Let touches go through to apps/activities underneath. 
Window window = activity.getWindow(); 
window.addFlags(FLAG_NOT_TOUCHABLE); 

- 和在以前的鏈接沒有解釋最重要的一點,就是我們的窗口後面昏暗的設置爲1(如在一個消息朦朧的,但設置到最大是黑色的背後:d)

window.setDimAmount ((float)1.0) ; 
window.setFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND, 
    WindowManager.LayoutParams.FLAG_DIM_BEHIND); 

我沒有嘗試過,並決定不在我的應用程序中執行此操作,因爲它可能會在我的情況下帶來意想不到的行爲,但我認爲它應該可以正常工作,如果有人嘗試請添加您的反饋!

相關問題