2011-01-07 2 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

화면 밝기가 0.0f에서 1.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

+0

WindowManager.LayoutParams를 사용하여 화면 밝기를 설정하면 "자동 밝기"가 활성화 된 경우에도 작동합니다. 설명서에 설명 된 것처럼 "screenBrightness를 사용하여 사용자의 화면 밝기를 무시할 수 있습니다". Android 4.1 및 4.4에서 테스트되었습니다. – AnAurelian

+0

고마워요 많은 젠체 .. –

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

}

해피 코딩 확장

공용 클래스 ...