1

当启用设备的自动亮度时,以下更改屏幕亮度的代码不起作用:

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

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

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

4

2 回答 2

2

免责声明:此代码有点“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);
于 2013-11-27T15:30:41.940 回答
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 中检查此逻辑。

于 2018-08-22T01:56:48.810 回答