我试图在' 全亮度'之间切换。和' 手机正常亮度'在我的主要活动中使用使用切换按钮。 我使用以下代码成功处理了亮度切换:
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);
}
问题是,
切换到“完全亮度”后,当我更改活动时,亮度会恢复正常。 现在,我如何跟踪亮度设置'来自' 主要活动'并将其应用于应用程序的其他活动?
N.B。 我不想改变系统亮度。亮度只会在使用应用程序时发生变化。
先谢谢。
答案 0 :(得分:1)
确定。 终于解决了我的问题。
我创建了一个具有使用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);
}
然后使用活动扩展类并在onCreate方法中初始化SharedPreferences。
br = getSharedPreferences("br", Activity.MODE_PRIVATE);
感谢@ 0X0nosugar的想法。
答案 1 :(得分:0)
如果您想让它超出您的活动效果,您需要持有SCREEN_BRIGHT_WAKE_LOCK
。您在上面使用的方法适用于前景窗口,当您的活动消失后不再适用。
注意Android在使用唤醒锁时通常会皱眉,因为它很容易搞砸并且不会释放它们,浪费设备电池。他们推荐使用窗口参数版本,因为当用户离开活动时它会自动释放。