2011-01-10 26 views
10

我正在嘗試從小部件中設置屏幕亮度。我們知道這是很容易可能的,因爲噸的小部件已經這樣做了,但如何.....刷新小部件的顯示?

在服務我從窗口小部件撥打我做這個設置亮度:

Settings.System.putInt(this.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, 200); 

這一工程除非它不刷新屏幕以應用新的設置。關閉和關閉屏幕會刷新顯示設置,因此我們知道代碼正常工作。

我也在幾個網站上看過類似的東西會刷新屏幕,但我們不能使用它,因爲我們在一個小部件。小部件活動和服務不能使用getWindow。

WindowManager.LayoutParams lp = getWindow().getAttributes(); 
lp.screenBrightness = 100/100.0f; 
getWindow().setAttributes(lp); 

要不然怎麼都是這些小部件一樣美麗的小工具,功率控制,擴展控制,等等這樣做呢?

更新: 另一個海報推薦開啓空活動並執行WindowManager刷新。這很有效,但它爲第二個屏幕帶來了一個醜陋的黑屏。由於其他小部件不這樣做,所以必須有一種方法來保持不顯示空白的黑屏。

+1

對於blackscreen,設置主題上的活性,含有這樣:<樣式名稱= 「Theme.Transparent」 父= 「機器人:主題」> <項名稱= 「機器人:windowIsTranslucent」>真 <項名稱= 「機器人:windowBackground」> @彩色/透明 <項目名= 「機器人:windowContentOverlay」> @空 <項目名= 「機器人:windowNoTitle」>真 <項目名= 「機器人:windowIsFloating」 > true false 2011-01-10 06:26:38

+0

工作完美!您是否想將其作爲下面的答案發布給所有人?我用你的主題,並將其設置在我的清單中。 – pcm2a 2011-01-10 17:55:12

回答

8

對於blackscreen,設置一個主題的活動,包含此:

<style name="Theme.Transparent" parent="android:Theme"> 
<item name="android:windowIsTranslucent">true</item> 
<item name="android:windowBackground">@color/transparent</item> 
<item name="android:windowContentOverlay">@null</item> 
<item name="android:windowNoTitle">true</item> 
<item name="android:windowIsFloating">true</item> 
<item name="android:backgroundDimEnabled">false</item> 
</style> 

感謝塞巴斯蒂安的回答,我在這裏複製它。