Domanda

voglio cambiare la luminosità dello schermo a livello di codice in Android. Al momento io uso questo codice:

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

Ma questo codice di esempio funziona su cupcake, non sulle ultime versioni. Sto usando l'ultima versione del SDK .. Qual è la soluzione preferita per le versioni più recenti di Android?

È stato utile?

Soluzione

Come sull'utilizzo dell'interfaccia IHardwareService per questo? Un esempio può essere trovato in questo esercitazione .

Aggiornamento:. Collegamento esercitazione funziona ancora, ma il codice attuale è disponibile anche in risposta successiva

Altri suggerimenti

Questo è possibile farlo utilizzando:

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

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

È necessario aggiungere params per Window prima che venga creato altrimenti buttare java.lang.IllegalArgumentException: Window type can not be changed after the window is added.

Vedere l'esempio con 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();

Si prega di notare che il valore di luminosità è compresa tra 0.0f e 1.0F.

@kamal_tech_view: È necessario convertire il valore layout.screenBrightness = valore; di galleggiare

risposta in ritardo Troppo ma vogliono migliorare ..

Ho provato con il codice di Tor-morten ma è per particolari schermo stesso, volevo cambiare da nessuna parte, ho fatto il servizio per questo.

Change luminosità in base alla luce circostante android

La speranza, Sarà utile per gli altri.

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();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top