我想在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