Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中以编程方式更改屏幕亮度_Android_Screen Brightness - Fatal编程技术网

在android中以编程方式更改屏幕亮度

在android中以编程方式更改屏幕亮度,android,screen-brightness,Android,Screen Brightness,我想在android中以编程方式更改屏幕亮度。 目前,我使用以下代码: WindowManager.LayoutParams lp = getWindow().getAttributes(); float brightness=1.0f; lp.screenBrightness = brightness; getWindow().setAttributes(lp); 但此示例代码适用于纸杯蛋糕,而不是最新版本。我正在使用最新版本的SDK。。较新Android版本的首选解决方案是什么?使用IHa

我想在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);
另见:

回答太晚,但希望改进

我尝试了Tor morten的代码,但它是针对特定屏幕本身的,我想在任何地方进行更改,我为此提供了服务


希望对其他人有用。

@kamal\u tech\u view:您必须转换值布局。屏幕亮度=值;要浮动,必须在创建
窗口之前将参数添加到
窗口,否则它将抛出
java.lang.IllegalArgumentException:添加窗口后无法更改窗口类型。

查看带有
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之间。

Wow,一个可接受的答案*和*一个否决票。也许选民会愿意解释他为什么这样做?我认为他这样做是因为你的答案只包含了一个指向解决方案的链接。Stackoverflow旨在直接收集示例和解决方案,链接到源代码只是次要的。如果你的链接死了,你的答案就完全死了。如果android界面发生了变化,你的答案中有一个解释和链接,我可以编辑你的答案以反映api的变化。教程链接就像死了一样。。找不到source@tutorial.DV,这不应是可接受的答案,答案中应包含示例代码。更不用说你正在谈论隐藏的API。但是亮度值没有得到保存,以便下次设备从电源关闭中醒来时使用。。。如何持续保存它,不仅是一个窗口,而且应该是所有窗口????float prevBrightness=布局。屏幕亮度;将获得当前的亮度。将其保存在OnSaveInstanceSaved()或SharedReferenceLayout.screenBrightness=-1中;或者任何负值都会将屏幕亮度设置回以前的首选亮度。此外,在最新的android SDK(5.0版)上,您需要在首次启动时配置权限请求对话框。否则,它将无法在某些设备上工作,例如三星s7,在显示对话框时可能会重复增加亮度
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();