2011-10-09 20 views
7

¿Cómo se obtiene el brillo de pantalla actual de su actividad?Valor de brillo de pantalla en Android

Siguiendo el método funciona bien para ajustar el brillo al máximo llamando setBrightness(100):

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

Im tratando de lograr lo siguiente:

  1. de inicio de la actividad y guardar el valor de luminosidad actual
  2. Establecer el brillo al máximo
  3. Restablecer el brillo a la v inicial alue en ciertos eventos

¡Muchas gracias!

+0

¿Cuál es el valor de layoutParams.screenBrightness antes de? – ZelluX

Respuesta

15

Trate

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

y luego

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

muchas gracias Michele! funcionó perfectamente bien rodeando la tarea con un bloque try/catch – lukuluku

+0

@Michele: ¿por qué se ejecuta la primera línea? Escribí lint "int curBrightnessValue = ..." pero no funciona. Por cierto, ¿hay permiso para el brillo? –

+0

@Michele gracias, sí, edito su declaración y se corrobora. "nivel int final = Settings.System.getInt (getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS, -1); " –

2

Para restablecer el brillo al valor por defecto

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

Un valor de menos de 0, el valor predeterminado, los medios para usar la pantalla preferida brillo.

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

+0

¡Funciona muy bien! ¿Cómo es que esto no tiene más votos ascendentes? – avalancha

0

Yo uso esta en Android 17+ (probablemente funciona w/API inferiores)

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

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

Usos:

Para configurar la pantalla a MAX Brillo (por ejemplo, cuando se muestran un código de barras o algo así):

setScreenBrightnessTo(BRIGHTNESS_OVERRIDE_FULL);

para restablecer de nuevo a lo que el usuario tenía antes:

setScreenBrightnessTo(BRIGHTNESS_OVERRIDE_NONE);

Cuestiones relacionadas