2010-12-06 11 views
9

Estoy intentando actualizar el brillo de la pantalla desde un widget, pero tengo algunos problemas.Actualizar Brillo de pantalla en Android después de cambiarlo programáticamente

Para cambiar el nivel de brillo, yo uso:

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

Esto modifica la configuración de pantalla (de hecho, en Pantalla-> Brillo el nivel es correcto), pero el brillo de la pantalla efectiva no se cambia. Si bloqueo la pantalla y la desbloqueo, el brillo finalmente cambia al valor que configuro.

Supongo que se trata de un problema de Actualización de la configuración, así que ¿cómo puede la configuración de la pantalla actualizarse inmediatamente después de cambiar la configuración?

He leído que WindowManager.LayoutParams lp = getWindow().getAttributes(); debería usarse pero estoy trabajando en un widget de aplicación para que no se pueda llamar a getWindow().

Respuesta

6

Tuve un problema similar y acabo de crear una actividad sin interfaz de usuario para realizar el cambio de brillo, con la intención de ejecutarlo desde el widget de la aplicación.

+0

¡Buena idea! ¿Creó una nueva clase Activity o la enlazó dentro del widget? – Mariux

+0

Ya que resolvió el problema, ¿puede escribir un código para explicarlo con claridad? Gracias GeekYouUp! – Mariux

+0

Intenté crear una actividad, pero el cambio de brillo solo se aplica a la actividad ... – Mariux

1

En primer lugar, el valor para modificar en LayoutParams es screenBrightness. Luego tendrá que hacer un window.setAttributes para aplicarlo. Como dijo GeekYouUp, puede realizar una actividad ficticia para obtener su objeto Window.

+0

¿Cómo puedo crear actividad ficticia? –

+0

como él dijo, usted crea una actividad, solo asociada a ninguna interfaz de usuario –

0

Se puede utilizar este código en tu RemoteView, finos trabajos

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

este código cuando se está configurando el brillo de la pantalla del teléfono desde el interior de una clase definida por el usuario que es no extender una actividad pero solo necesito el contexto.

Cuestiones relacionadas