如何在Android中使用光传感器值(lux)更改亮度

时间:2019-01-15 15:30:43

标签: java android android-sensors brightness screen-brightness

我有一个应用程序,可以使用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");
    }

}

如何根据光传感器的值更改选定按钮(单击后将对其进行预设)后的亮度?

0 个答案:

没有答案