2011-01-10 11 views
10

Sto provando ad impostare la luminosità dello schermo da un widget. Sappiamo che questo è facilmente possibile in quanto le tonnellate di widgets fanno già, ma come .....Aggiornamento del display da un widget?

In un servizio che io chiamo dal widget faccio questo per impostare la luminosità:

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

che funziona ottimo tranne che non "aggiorna" lo schermo per applicare le nuove impostazioni. Lo spegnimento e lo spegnimento dello schermo aggiorna le impostazioni dello schermo, quindi sappiamo che il codice funziona.

Ho anche letto su diversi siti che qualcosa di simile aggiornerà lo schermo, ma non possiamo usarlo poiché siamo in un widget. L'attività del widget e il servizio non possono utilizzare getWindow.

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

In quale altro modo sono tutti questi widget come Beautiful Widgets, controllo di potenza, controlli estesi, ecc facendo questo?

Aggiornamento: Un altro poster ha raccomandato di avviare un'attività vuota ed eseguire l'aggiornamento di WindowManager. Funziona ma fa apparire un brutto schermo nero per un secondo. Poiché gli altri widget non lo fanno, ci deve essere un modo per impedire la visualizzazione della brutta schermata vuota.

+1

Per la blackscreen, impostare un tema sull'attività, che contiene questo:

+0

Che ha funzionato perfettamente! Vuoi postarlo come risposta sotto per tutti? Ho usato il tuo tema e l'ho impostato nel mio manifest. – pcm2a

risposta

8

Per la blackscreen, impostare un tema sull'attività, che contiene questo:

<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> 

Grazie Sebastian per la risposta, ho copiato qui.

+2

questa è davvero una buona risposta, ma ho una nota. Invece di @ color/transparent put @android: color/transparent – Lukap

Problemi correlati