Как изменить яркость со значениями датчика освещенности (люкс) в Android
У меня есть приложение, которое может изменять яркость системы и яркость окна с помощью 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");
}
}
Как изменить яркость после выбранной кнопки (которая будет предварительно установлена после нажатия) в зависимости от значения датчика освещенности?