启用自动亮度时更改屏幕亮度

时间:2013-11-27 15:03:58

标签: android screen-brightness

启用设备的自动亮度时,以下代码无法更改屏幕亮度:

Window w = getWindow();
WindowManager.LayoutParams lp = w.getAttributes();

lp.screenBrightness=0.09f;
getWindow().setAttributes(lp);

如何更改此代码以处理自动亮度?

2 个答案:

答案 0 :(得分:1)

声明: 这段代码有点'hackish',可能不适用于所有Android版本和所有Android手机,可能不是最好的代码练习。如果您的设备爆炸,或者下雨等,我不承担任何责任:)

话虽这么说,你可能想暂时禁用自动生成:

Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);

然后重新启用它:

Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);

答案 1 :(得分:0)

以下代码在Android0上完美运行。

   private void setBrightness(Activity activity, int brightness) {
            WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
            lp.screenBrightness = Float.valueOf(brightness) * (1f / 255f);
            activity.getWindow().setAttributes(lp);
        }

可以认为窗口属性的优先级高于自动亮度。

您可以在PowerManagerService.java-> updateDisplayPowerStateLocked中检查此逻辑。