40

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

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

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

4

6 に答える 6

81

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

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

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

于 2010-10-05T11:38:48.820 に答える
1

このためにIHardwareServiceインターフェースを使用するのはどうですか?このチュートリアルに例があります。

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

于 2010-09-17T17:53:45.017 に答える
1

遅すぎる答えですが、改善したい..

Tor-mortenのコードで試してみたのですが、特定の画面そのもののためで、どこでも変更したかったので、そのためのサービスを作りました。

Androidで周囲の光に応じて明るさを変える

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

于 2013-01-25T06:58:46.620 に答える
0
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();
于 2016-04-15T06:20:27.397 に答える