Как изменить яркость со значениями датчика освещенности (люкс) в Android - PullRequest
0 голосов
/ 15 января 2019

У меня есть приложение, которое может изменять системную яркость и яркость окна с помощью 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");
    }

}

Как изменить яркость после выбранной кнопки (которая будет предварительно установлена ​​после нажатия) в зависимости от значения датчика освещенности?

...