更改后亮度正常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.
时它会自动释放
好的。
终于解决了我的问题。
我创建了一个 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);
}
然后用活动扩展 class 并在 onCreate 方法中初始化 SharedPreferences。
br = getSharedPreferences("br", Activity.MODE_PRIVATE);
谢谢@0X0nosugar 的想法。
我试图通过使用开关在“全亮度”和“手机正常亮度”之间切换按钮 在我的主要 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.
时它会自动释放好的。 终于解决了我的问题。
我创建了一个 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); }
然后用活动扩展 class 并在 onCreate 方法中初始化 SharedPreferences。
br = getSharedPreferences("br", Activity.MODE_PRIVATE);
谢谢@0X0nosugar 的想法。