2011-10-09 17 views
7

Come si ottiene la luminosità dello schermo corrente della propria attività?Valore di luminosità dello schermo in Android

Seguendo metodo funziona bene per impostare la luminosità al massimo chiamando setBrightness(100):

private void setBrightness(int brightness) { 
    WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); 
    layoutParams.screenBrightness = brightness/100.0f; 
    getWindow().setAttributes(layoutParams); 
} 

Nel tentativo di raggiungere i seguenti obiettivi:

  1. Avviare l'attività e salvare il valore di luminosità corrente
  2. Imposta luminosità su max
  3. Ripristina luminosità iniziale v ale su determinati eventi

Mille grazie!

+0

Qual è il valore di layoutParams.screenBrightness prima di impostare? – ZelluX

risposta

15

Prova

int curBrightnessValue = android.provider.Settings.System.getInt(getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS); 

e poi

WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); 
    layoutParams.screenBrightness = curBrightnessValue/100.0f; 
    getWindow().setAttributes(layoutParams); 
+1

grazie mille Michele! ha funzionato perfettamente circondando l'incarico con un blocco try/catch – lukuluku

+0

@Michele: perché esegue la prima riga? Ho scritto lint "int curBrightnessValue = ..." ma non funziona. A proposito, c'è il permesso per la luminosità? –

+0

@Michele grazie, sì ho modificato la tua dichiarazione ed è vera. "final int level = Settings.System.getInt (getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS, -1); " –

2

Per ripristinare la luminosità

WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); 
layoutParams.screenBrightness = -1f; 
getWindow().setAttributes(layoutParams); 

Un valore inferiore a 0, il valore predefinito valore di default, significa utilizzare lo schermo preferito luminosità.

consultare http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#screenBrightness

+0

Funziona alla grande! In che modo questo non ha più upvotes? – avalancha

0

Io uso questo su Android 17+ (probabilmente funziona w/API inferiori)

private void setScreenBrightnessTo(float brightness) { 
     WindowManager.LayoutParams lp = getActivity().getWindow().getAttributes(); 
     if (lp.screenBrightness == brightness) { 
      return; 
     } 

     lp.screenBrightness = brightness; 
     getActivity().getWindow().setAttributes(lp); 
    } 

Usi:

Per impostare schermo per MAX luminosità (ad esempio quando si mostra un codice a barre o qualcosa del genere):

setScreenBrightnessTo(BRIGHTNESS_OVERRIDE_FULL);

Per ripristinare di nuovo al ciò che l'utente aveva prima:

setScreenBrightnessTo(BRIGHTNESS_OVERRIDE_NONE);

Problemi correlati