2010-05-30 3 views
1

Существует, по крайней мере, три разных способа изменения яркости экрана в ОС Android. Два из них больше не работают на пост-кекс, и у третьей принятой техники, очевидно, есть ошибка.Увеличение яркости экрана для активности

Я хотел бы увеличить яркость экрана в начале действия одного вида, а затем вернуть яркость к пользовательской настройке в конце действия. Нет кнопок, нет второго вида или второго действия. Просто макс. Яркость при запуске и возврат к первоначальной настройке яркости в конце действия.

Примеров текущего метода с использованием WindowManager.LayoutParams, что я расположен диапазоном от 2-х строк кода

WindowManager.LayoutParams lp = getWindow().getAttributes(); 
lp.screenBrightness = 100/100.0f; 
getWindow().setAttributes(lp); 

нескольких страниц исходного кода и многочисленных мероприятий.

Есть ли простой пример максимального яркости экрана при запуске, на который может быть предоставлена ​​ссылка?

ответ

2

Его простой, что вы можете сделать, это сделать SeekBar в XML с помощью перетаскивания или написать его XML

SeekBar 
    android:id="@+id/brightnesSseeker" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:max="255" 
    android:progress="255" /> 

в классе mainActivity сделать это:

brightnesSseeker = (SeekBar) findViewById(R.id.brightnesSseeker); 

    brightnesSseeker 
      .setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 
       public void onStopTrackingTouch(SeekBar seekBar) { 
        // Nothing handled here 
       } 

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

       public void onProgressChanged(SeekBar seekBar, 
         int progress, boolean fromUser) { 
        // Set the minimal brightness level 
        // if seek bar is 20 or any value below 
        if (progress <= 20) { 
         // Set the brightness to 20 
         screenBrightness(20); 
        } else { 
         // Set brightness variable based on the progress bar 
         screenBrightness(progress); 
        } 
        stobeVariable=progress*10; 
       } 
      }); 

, а затем написать простую функцию:

private void screenBrightness(double newBrightnessValue) { 
    /* 
    * WindowManager.LayoutParams settings = getWindow().getAttributes(); 
    * settings.screenBrightness = newBrightnessValue; 
    * getWindow().setAttributes(settings); 
    */ 
    WindowManager.LayoutParams lp = getWindow().getAttributes(); 
    float newBrightness = (float) newBrightnessValue; 
    lp.screenBrightness = newBrightness/(float) 255; 
    getWindow().setAttributes(lp); 
} 

Также проверьте режим яркости перед вызовом функции ScreenBrightness, потому что som etime режим выбран для автоматической яркости, и в этом случае яркость не изменится. Вам также нужно разрешение в файле манифеста.

<uses-permission android:name="android.permission.WRITE_SETTINGS" /> 

Вызов функции ниже в OnCreate перед тем setOnSeekBarChangeListener

void changeBrightnessMode(){ 

    try { 
     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); 
     } 


    } catch (Exception e) { 
     // do something useful 

    } 
}