У меня есть приложение, которое может изменять системную яркость и яркость окна с помощью 5 разных кнопок (от самых темных до самых ярких). Когда я выбираю кнопку «Темный», значения равны 0f * 255 (максимальное значение для яркости) или «Низкий свет», значения равны 0,25f * 255 и т. Д.
Как только яркость выбрана кнопкой, я бы хотел управлять яркостью с помощью датчика освещенности. Поэтому, когда я выбираю «Темный», я хочу изменить яркость «внутри» этой кнопки - со значением люкс, скажем, 0-30, где 30 - это максимум = 1 (самый яркий для только темной кнопки), а 15 - это половина яркости. , И если я выберу «Низкое освещение», значение люкса может быть 30-60, где 30 - самая низкая для этой кнопки, а 60 - самая яркая, и так далее.
Значение яркости должно быть достаточно точным для выбранной кнопки, но все же немного изменить яркость в зависимости от значения люкс с интервалом, который подключен к кнопке.
Я знаю, что мне нужно использовать какой-то процент, чтобы значения менялись в зависимости от люкс и яркости, но я не знаю, как использовать значение люкс с кнопками.
Код ниже для изменения яркости экрана и кнопок
public void changeScreenBrightness(float brightness) {
mBrightness = brightness;
try {
if (rbSystemCheck) {
if (!Settings.System.canWrite(this)) {
Intent i = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
startActivity(i);
} else {
Settings.System.putInt(contentResolver,
Settings.System.SCREEN_BRIGHTNESS, (int) (mBrightness * 255));
}
} else if (rbWindowCheck) {
WindowManager.LayoutParams mLayoutParams = window.getAttributes();
mLayoutParams.screenBrightness = mBrightness;
window.setAttributes(mLayoutParams);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void onClick(View v) {
if (v == btnDark) {
changeScreenBrightness(0f);
tvCurrentPreset.setText("Preset = Dark");
} else if (v == btnLowLight) {
changeScreenBrightness(0.25f );
tvCurrentPreset.setText("Preset = Low light");
} else if (v == btnBright) {
changeScreenBrightness(0.5f);
tvCurrentPreset.setText("Preset = Bright");
} else if (v == btnVeryBright) {
changeScreenBrightness(0.75f);
tvCurrentPreset.setText("Preset = Very bright");
} else if (v == btnInsanelyBright) {
changeScreenBrightness(1f);
tvCurrentPreset.setText("Preset = Insanely bright");
}
}
Как изменить яркость после выбранной кнопки (которая будет предварительно установлена после нажатия) в зависимости от значения датчика освещенности?