更改后亮度正常activity

Brightness goes normal after changing activity

我试图通过使用开关在“全亮度”和“手机正常亮度”之间切换按钮 在我的主要 activity 中。 我使用此代码成功处理了亮度切换:

switchButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean bChecked) {
            if (bChecked) {
                getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
                WindowManager.LayoutParams params = getWindow().getAttributes();
                params.screenBrightness = 1.0f;
                getWindow().setAttributes(params);
            } else {
                getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
                WindowManager.LayoutParams params = getWindow().getAttributes();
                params.screenBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE;
                getWindow().setAttributes(params);
            }
        }
    });

    if (switchButton.isChecked()) {
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        WindowManager.LayoutParams params = getWindow().getAttributes();
        params.screenBrightness = 1.0f;
        getWindow().setAttributes(params);
    } else {
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        WindowManager.LayoutParams params = getWindow().getAttributes();
        params.screenBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE;
        getWindow().setAttributes(params);
    }

问题是,

切换到'full Brightness'后,当我更改activity时,亮度正常。 现在,我如何跟踪“main activity”中的“亮度设置”并将其应用于其他活动应用程序?

N.B. 我不想更改系统亮度。亮度只会在使用该应用程序时发生变化。

提前致谢。

如果你想让它的效果超出你的 activity,你需要持有 SCREEN_BRIGHT_WAKE_LOCK。您上面使用的方法适用于前景window,当您activity消失时不再适用。

注意 Android 通常不赞成使用唤醒锁,因为它很容易搞砸而不释放它们,从而浪费设备电池。他们推荐 window 参数版本,原因多种多样,当用户离开 activity.

时它会自动释放

好的。 终于解决了我的问题。

  1. 我创建了一个 class 具有使用 SharedPreferences 处理状态的亮度控制逻辑。 代码:

     if (br.getString("set", "").equals("1")) {
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        WindowManager.LayoutParams params = getWindow().getAttributes();
        params.screenBrightness = 1.0f;
        getWindow().setAttributes(params);
    } else {
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        WindowManager.LayoutParams params = getWindow().getAttributes();
        params.screenBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE;
        getWindow().setAttributes(params);
    }
    
  2. 然后用活动扩展 class 并在 onCreate 方法中初始化 SharedPreferences。

     br = getSharedPreferences("br", Activity.MODE_PRIVATE);
    

谢谢@0X0nosugar 的想法。