Android 2.2: настройка яркости экрана - PullRequest
3 голосов
/ 07 января 2011
    public void SetBright(float value) 
{
    Window mywindow = getWindow();

    WindowManager.LayoutParams lp = mywindow.getAttributes();

            lp.screenBrightness = value;

            mywindow.setAttributes(lp);
}

Я хочу настроить яркость экрана.Но ничего не происходит, когда я пытаюсь использовать этот метод.Может быть потому, что я использую флаг KEEP_SCREEN_ON?

Ответы [ 3 ]

7 голосов
/ 23 февраля 2011

Убедитесь, что «Автояркость» не включена перед настройкой яркости экрана. Это можно сделать вручную в меню «Настройки»> «Дисплей» или с помощью кода, если вы используете Android 2.2 или более позднюю версию SDK.

Что-то вроде:

int brightnessMode = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE);
if (brightnessMode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
    Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
}

WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
layoutParams.screenBrightness = 0.5F; // set 50% brightness
getWindow().setAttributes(layoutParams);

Убедитесь, что значение находится в диапазоне от 0,0F до 1,0F. Значение -1.0F использует яркость по умолчанию, сохраненную в настройках. В документации «Значение по умолчанию меньше 0 означает использование предпочтительной яркости экрана. От 0 до 1 регулирует яркость от темной до полной яркости».

0 голосов
/ 07 мая 2014

Настройка яркости с помощью панели поиска:

открытый класс AndroidBrightnessActivity расширяет активность {

private SeekBar brightbar;
private int brightness;
private ContentResolver cResolver;
private Window window;
TextView txtPerc;
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    brightbar = (SeekBar) findViewById(R.id.brightbar);
    txtPerc = (TextView) findViewById(R.id.txtPercentage);
    cResolver = getContentResolver();
    window = getWindow();
    brightbar.setMax(255);
    brightbar.setKeyProgressIncrement(1);

    try
    {
        brightness = System.getInt(cResolver, System.SCREEN_BRIGHTNESS);
    }
    catch (SettingNotFoundException e)
    {
        Log.e("Error", "Cannot access system brightness");
        e.printStackTrace();
    }
    brightbar.setProgress(brightness);
    brightbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
    {
        public void onStopTrackingTouch(SeekBar seekBar)
        {
            System.putInt(cResolver,System.SCREEN_BRIGHTNESS,brightness);
            LayoutParams layoutpars = window.getAttributes();
            layoutpars.screenBrightness = brightness / (float)255;
            window.setAttributes(layoutpars);
        }

        public void onStartTrackingTouch(SeekBar seekBar)
        {
            //Nothing handled here
        }

        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
        {
            if(progress<=20)
            {
              brightness=20;
            }
            else
            {
                brightness = progress;
            }
            float perc = (brightness /(float)255)*100;
            txtPerc.setText((int)perc +" %");
        }
    });   
}

}

Happy Coding ...

0 голосов
/ 07 января 2011

Значение screenBrightness между 0.0f и 1.0f, возможно, ваше значение слишком велико. Я использую флаг WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, а также могу настроить яркость экрана

...