web-dev-qa-db-ja.com

androidでプログラムで画面の明るさを変更する

Androidでプログラムで画面の明るさを変更したい。現時点では、このコードを使用します。

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

ただし、このサンプルコードは、最新バージョンではなく、cupcakeで動作します。 SDKの最新バージョンを使用しています。新しいAndroid=バージョンの推奨ソリューションは何ですか?

36
Sri Sri

このためにIHardwareServiceインターフェイスを使用してはどうですか?例はこの tutorial にあります。

更新:チュートリアルリンクは引き続き機能しますが、実際のコードは次の回答でも入手できます。

1
Maurits Rijk

これは、次を使用して実行できます。

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

参照: http://developer.Android.com/reference/Android/view/WindowManager.LayoutParams.html#screenBrightness

80
Tor-Morten

作成する前にWindowにパラメーターを追加する必要があります。追加しないと、Java.lang.IllegalArgumentException: Window type can not be changed after the window is added.がスローされます。

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

輝度値は0.0F〜1.0Fであることに注意してください。

4
AZ_

@kamal_tech_view:値を変換する必要がありますlayout.screenBrightness = value; float

2
hungtdo

回答が遅すぎますが、改善したいです。

私はTor-mortenのコードを試してみましたが、それは特定のスクリーン自体のためであり、どこでも変更したかったので、そのためのサービスを作りました。

Androidの周囲の光に応じて明るさを変更する

希望、それは他の人に役立つでしょう。

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
Jayesh Kalkani