web-dev-qa-db-fra.com

changer la luminosité de l'écran par programmation dans android

Je souhaite modifier la luminosité de l'écran par programme dans Android . Pour l'instant, j'utilise ce code: 

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

Mais cet exemple de code fonctionne sur cupcake, pas sur les dernières versions. J'utilise la dernière version du SDK .. Quelle est la solution préférée pour les nouvelles versions Android?

36
Sri Sri

Que diriez-vous d'utiliser l'interface IHardwareService pour cela? Un exemple peut être trouvé dans ce tutorial .

Mise à jour: le lien vers le didacticiel fonctionne toujours, mais le code actuel est également disponible dans la réponse suivante.

1
Maurits Rijk

Ceci est possible en utilisant:

WindowManager.LayoutParams layout = getWindow().getAttributes();
layout.screenBrightness = 1F;
getWindow().setAttributes(layout);

Voir aussi: http://developer.Android.com/reference/Android/view/WindowManager.LayoutParams.html#screenBrightness

80
Tor-Morten

Vous devez ajouter des paramètres à Window avant sa création, sinon il lancera Java.lang.IllegalArgumentException: Window type can not be changed after the window is added.

Voir l'exemple avec un Android.app.Dialog.Dialog.

final Dialog dialog = new Dialog(this) {
            @Override
            public void onAttachedToWindow() {
                super.onAttachedToWindow();
                WindowManager.LayoutParams layout = getWindow()
                        .getAttributes();
                layout.screenBrightness = 1F;
                getWindow().setAttributes(layout);
            }
        };
        dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        dialog.show();

Veuillez noter que la valeur de la luminosité est comprise entre 0.0F et 1.0F.

4
AZ_

@kamal_tech_view: vous devez convertir la valeur layout.screenBrightness = valeur; flotter

2
hungtdo

Réponse trop tardive mais je veux m'améliorer.

J'ai essayé avec le code de Tor-morten mais c'est pour l'écran en particulier, je voulais changer n'importe où, j'ai rendu service pour ça.

Modifier la luminosité en fonction de la lumière ambiante dans Android

J'espère que cela sera utile aux autres.

1
Bhavesh Hirpara
final Dialog dialog = new Dialog(act);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog
                .setContentView(R.layout.menubase_brightness_control);
        dialog.setCanceledOnTouchOutside(true);

        SeekBar global_brightness_control = (SeekBar) dialog
                .findViewById(R.id.global_brightness_control);
        global_brightness_control.setMax(255);
        global_brightness_control.setProgress(Settings.System.getInt(
                con.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS));

        global_brightness_control
                .setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

                    public void onStopTrackingTouch(SeekBar seekBar) {
                        // TODO Auto-generated method stub

                    }

                    public void onStartTrackingTouch(SeekBar seekBar) {
                        // TODO Auto-generated method stub

                    }

                    public void onProgressChanged(SeekBar seekBar,
                                                  int progress, boolean fromUser) {
                        Settings.System
                                .putInt(con.getContentResolver(),
                                        Settings.System.SCREEN_BRIGHTNESS, progress);
                    }
                });

        dialog.show();
0
Jackson