Aggiornamento della luminosità del display su Android dopo aver cambiato a livello di codice

StackOverflow https://stackoverflow.com/questions/4366255

  •  09-10-2019
  •  | 
  •  

Domanda

Sto cercando di aggiornare la luminosità dello schermo da un widget, ma ho qualche problema.

Per modificare il livello di luminosità, io uso:

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

Ciò modifica l'impostazione del display (infatti nel Schermo-> Luminosità il livello corretto) ma l'effettiva luminosità del display non viene modificata. Se i blocchi lo schermo e di sblocco, la luminosità cambia infine al valore impostato i.

Presumo che ciò è un problema di impostazioni di aggiornamento, in modo da come possono le impostazioni di visualizzazione essere immediatamente aggiornati dopo la modifica delle impostazioni?

Ho letto che WindowManager.LayoutParams lp = getWindow().getAttributes(); dovrebbe essere usato, ma sto lavorando in un App Widget in modo getWindow () non può essere chiamato.

È stato utile?

Soluzione

Ho avuto un problema simile e appena creato un attività senza interfaccia utente per fare il cambiamento di luminosità, utilizzato un intento di lanciarlo da App Widget.

Altri suggerimenti

In primo luogo, il valore da modificare in LayoutParams è screenBrightness . Avrai quindi a fare un window.setAttributes per applicarlo. Come geekyouup detto, si può fare un'attività fittizia per ottenere il vostro oggetto Window.

Si può utilizzare questo codice nel tuo RemoteView,

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

Questo codice bene funziona quando si imposta la luminosità dello schermo del telefono dall'interno di una classe definita dall'utente che è non si estende un'attività , ma è necessario solo il contesto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top