我有一个应用程序,可以使用5个不同的按钮(从最暗到最亮)更改系统亮度和窗口亮度。当我选择按钮“暗”时,值为0f * 255(亮度的最大值)或“弱光”时值为0.25f * 255,依此类推。
使用按钮选择亮度后,我想用光传感器控制亮度。因此,当我选择“暗”时,我想在此按钮“内”更改亮度-使用勒克斯值,例如0-30,其中30为最大值= 1(仅暗按钮为最亮),而15为亮度的一半。而且,如果我选择“低光”,则lux值可以为30-60,其中此按钮的最低值为30,最亮的为60,依此类推。
表示亮度应与所选按钮相当准确,但仍需根据lux值和连接到该按钮的intervall来稍微改变亮度。
我知道我必须使用某种百分比来使值随lux和亮度变化,但是我不知道如何通过按钮使用lux值。
下面用于更改屏幕亮度和按钮的代码
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");
}
}
如何根据光传感器的值更改选定按钮(单击后将对其进行预设)后的亮度?