質問

Androidでプログラムで画面の輝度を変更したいと思います。現時点では、このコードを使用しています。

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

しかし、このサンプルコードは、最新のバージョンではなく、カップケーキで機能します。 SDKの最新バージョンを使用しています。新しいAndroidバージョンに適したソリューションは何ですか?

役に立ちましたか?

解決

これにiHardWarEServiceインターフェイスを使用してみませんか?これには例があります チュートリアル.

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

他のヒント

これは、以下を使用することで行うことができます。

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

参照:http://developer.android.com/reference/android/view/windowmanager.layoutparams.html#screenbrightness

パラメーションを追加する必要があります 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の間であることに注意してください。

@kamal_tech_view:値を変換する必要があります layout.screenbrightness = value; 浮かぶ

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

Tor-Mortenのコードを試してみましたが、特定の画面自体のためです。どこでも変更したかったので、そのためにサービスを提供しました。

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

それは他の人に役立つことを願っています。

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();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top