2011-01-07 207 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 +" %"); 
     } 
    }); 
} 

}

编码快乐......