Frage

Ich versuche, die Display-Helligkeit von einem Widget zu aktualisieren, aber ich habe einige Probleme.

Um Helligkeit zu ändern, die ich benutze:

Settings.System.putInt(context.getContentResolver(),android.provider.Settings.System.SCREEN_BRIGHTNESS, 200);

ändert die Einstellung der Anzeige (in der Tat in Anzeigen-> Helligkeit der Pegel korrekt ist), aber die effektive Helligkeit der Anzeige wird nicht verändert. Wenn ich den Bildschirm und entsperren sperren, ändert sich die Helligkeit schließlich auf den Wert i gesetzt.

Ich nehme an, das ein Einstellungen Update-Problem ist, so kann, wie die Anzeigeeinstellungen sofort nach Einstellungen ändern aktualisiert werden?

Ich habe gelesen, dass WindowManager.LayoutParams lp = getWindow().getAttributes(); verwendet werden sollte, aber ich arbeite in einer App Widget so getWindow () kann nicht aufgerufen werden.

War es hilfreich?

Lösung

Ich hatte ein ähnliches Problem und nur eine Aktivität ohne UI erstellt die Helligkeitsänderung zu tun, verwendete eine Absicht es aus dem App Widget ausgeführt werden.

Andere Tipps

Zuerst wird der Wert in LayoutParams zu ändern ist screenBrightness . Sie werden dann eine window.setAttributes , sie anzuwenden. Wie geekyouup sagte, können Sie macht eine Dummy-Aktivität Ihr Window-Objekt zu erhalten.

Können Sie diesen Code in Ihren Remoteview verwenden,

Settings.System.putInt(context.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, brightness);

// This makes the new screen brightness effective
WindowManager.LayoutParams layoutParams = ((Activity)context).getWindow().getAttributes();
float b = brightness/255.0f;
if(b == 0.0)    
    b = 0.01f;
layoutParams.screenBrightness = b;
((Activity)context).getWindow().setAttributes(layoutParams);

Dieser Code funktioniert gut, wenn Sie anrufen Bildschirmhelligkeit Einstellung aus dem Inneren einer benutzerdefinierten Klasse, die ist keine Aktivität erstreckt , aber Sie müssen nur den Kontext.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top