No se puede aplicar el brillo de la pantalla del sistema mediante programación en Android

Estoy usando lo siguiente para configurar el modo de brillo automático del sistema y el nivel:

android.provider.Settings.System.putInt(y.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE, 0); android.provider.Settings.System.putInt(y.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS, y.brightness1); 

Puedo cambiar auto-brighess y desactivar, y establecer diferentes niveles. Los ajustes parecen aplicarse correctamente – Puedo ir a Ajustes -> Pantalla -> Brillo, y cualquier ajuste que establezco se muestra realmente correctamente. Sin embargo, la pantalla real no está cambiando su brillo. Si simplemente toco el control deslizante en Configuración de pantalla, todo se aplica.

Debo mencionar que estoy ejecutando una aplicación con una actividad principal, y estos ajustes se aplican en BroadcastReceiver. Intenté crear una actividad ficticia y probé la materia allí, pero conseguí los mismos resultados.

OK, encontró la respuesta aquí: ¿ Refrescar la pantalla de un widget?

Básicamente, tiene que hacer una actividad transparente que procesa el cambio de brillo. Lo que no se menciona en el post es que usted tiene que hacer:

 Settings.System.putInt(y.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE, 0); Settings.System.putInt(y.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS, brightnessLevel); 

entonces hazlo

 WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.screenBrightness = brightness; getWindow().setAttributes(lp); 

Y si llama a finish () justo después de aplicar los cambios, el brillo nunca cambiará porque el diseño debe crearse antes de que se apliquen los ajustes de brillo. Así que terminé creando un hilo que tenía un retraso de 300ms, luego llamado finish ().

Estoy haciendo algo similar con el brillo de la pantalla en una de mis aplicaciones, y lo estoy haciendo a través del WindowManager y funciona. Estoy usando el siguiente código para obtener el brillo de la pantalla actual (y guardarlo para más tarde) y ponerlo a full:

  WindowManager.LayoutParams lp = getWindow().getAttributes(); previousScreenBrightness = lp.screenBrightness; float brightness = 1; lp.screenBrightness = brightness; getWindow().setAttributes(lp); 

He creado un método estático en mi clase de aplicación que invoco desde todos mis métodos Activity.onResume ().

 MyApplication extends Application { ... public static void setBrightness(final Activity context) { // get the content resolver final ContentResolver cResolver = context.getContentResolver(); // get the current window final Window window = context.getWindow(); try { // get the current system brightness int brightnessLevel = System.getInt(cResolver,System.SCREEN_BRIGHTNESS); // get the current window attributes LayoutParams layoutpars = window.getAttributes(); // set the brightness of this window layoutpars.screenBrightness = brightnessLevel / (float) 255; // apply attribute changes to this window window.setAttributes(layoutpars); } catch (SettingNotFoundException e) { // throw an error cuz System.SCREEN_BRIGHTNESS couldn't be retrieved Log.e("Error", "Cannot access system brightness"); e.printStackTrace(); } } } MyActivity extends Activity { ... public void onResume() { super.onResume(); Log.d(TAG, "onResume()"); MyApplication.setBrightness(this); } } 

Utilice la respuesta dada por " user496854 " anterior
Si está tomando max screenBrightness = 255 entonces mientras hace

WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.screenBrightness = brightness; getWindow().setAttributes(lp);
Divide screenBrightness por 255 como

WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.screenBrightness = brightness/(float)255; getWindow().setAttributes(lp);

  • Lista de llamadas del sistema Linux de Linux
  • Hacer una aplicación de sistema desinstalable
  • No se puede mostrar la barra del sistema Android después de ocultar
  • Cómo crear aplicaciones de sistema en android
  • Anular el botón de volumen predeterminado del sistema en todo el mundo
  • Android: Crear nuevo permiso del sistema a través del código fuente de AOSP.
  • Android: cómo montar el sistema de archivos en RW desde mi APK? (Arraigado, por supuesto)
  • Actualizar el proveedor de Android.
  • ¿Cómo puedo comprobar si una aplicación es una aplicación que no es de sistema en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.