2011-01-07 118 views
3
public void SetBright(float value) 
{ 
    Window mywindow = getWindow(); 

    WindowManager.LayoutParams lp = mywindow.getAttributes(); 

      lp.screenBrightness = value; 

      mywindow.setAttributes(lp); 
} 

我想調整屏幕亮度。但是當我嘗試使用這種方法時沒有任何反應。難道是因爲我使用KEEP_SCREEN_ON標誌?Android 2.2:調整屏幕亮度

回答

0

ScreenBrightness的值在0.0f1.0f之間,可能您的值太大。 我使用WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON標誌,也可以調整屏幕亮度

6

確保在設置屏幕亮度之前未啓用「自動亮度」。如果您使用的是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

只是注意,當你粘貼到你的這IDE,它抱怨'Settings.system ....'確保你的項目設置爲使用atleast android v 2.3.3,否則它不會編譯:) – Garbit 2012-02-10 14:08:20

0

調整亮度使用搜索條:

公共類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 +" %"); 
     } 
    }); 
} 

}

編碼快樂......