Question

Je veux changer la luminosité de l'écran par programme dans Android. En ce moment 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 petit gâteau, et non sur les dernières versions. J'utilise la dernière version du SDK .. Quelle est la meilleure solution pour les nouvelles versions Android?

Était-ce utile?

La solution

Comment l'utilisation de l'interface IHardwareService pour cela? Un exemple peut être trouvé dans cette tutoriel .

Mise à jour:. Lien tutoriel fonctionne toujours, mais le code réel est également disponible dans la prochaine réponse

Autres conseils

Il est possible de le faire 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

Vous devez ajouter params à Window avant qu'il ne soit créé sinon il va jeter 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();

S'il vous plaît noter que la valeur de luminosité est entre 0.0f et 1.0F.

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

Trop réponse tardive mais qui veulent améliorer ..

J'ai essayé avec le code de Tor-morten mais il est pour l'écran lui-même en particulier, je voulais changer quelque part, je fait un service pour cela.

changement de luminosité en fonction de la lumière ambiante dans les applications

L'espoir, il sera utile aux autres.

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();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top