2013-06-10 2 views
4

그래서 시스템 밝기를 조정하는 코드가 있고 탐색 표시 줄을 올바르게 구현했지만 검색 표시 줄을 조정하면 화면 밝기가 변경되지 않습니다. 몇 가지 다른 게시물을 살펴본 결과 솔루션은 정말 빨리 열고 닫을 수있는 더미 클래스를 만드는 것으로 보입니다. 그래도 내가 그렇게하면, 시크 바가 움직이는 동안 화면이 끊임없이 상쾌해질 것이기 때문에 지연의 톤이있는 것처럼 느껴집니다. 라이브 업데이트 SeekBar로 화면 밝기

@Override 
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
    ContentResolver cr = getContentResolver(); 
    try{ 
    int brightness = Settings.System.getInt(cr,Settings.System.SCREEN_BRIGHTNESS); 
    Settings.System.putInt(cr, Settings.System.SCREEN_BRIGHTNESS, brightness); 
    WindowManager.LayoutParams lp = getWindow().getAttributes(); 
    lp.screenBrightness = brightness/255.0f; 
    getWindow().setAttributes(lp); 

    } 
    catch (Settings.SettingNotFoundException a) 
    { 

    } 
} 
@Override 
public void onStartTrackingTouch(SeekBar seekBar) { 
    //Toast.makeText(MainActivity.this, "Started Tracking Seekbar", Toast.LENGTH_SHORT).show(); 
} 
@Override 
public void onStopTrackingTouch(SeekBar seekBar) { 

} 

또한 새로 고침 또 다른 문제는 내가 카메라 미리보기가 화면이 밝기 제어를 실행하고 시간이 좀 걸릴 것 더미 화면로드 매번 카메라를 죽이고 더 지연을 증가하고 있다는 점이다

나는이 게시물을 보았지만 그것을 구현하는 방법을 알지 못했습니다. 내가 선호

I have a seekbar in my preferences to update screen brightness. Is there a way to refresh the UI to see the live change?

답변

3

를 사용하고 있지 않다 때문에 나는 지금 의도 한대로 작동하는 다음 코드를 사용하여 문제를 해결!

당신의 어떤 XML 파일 :

<SeekBar 
      android:id="@+id/seekBar1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_weight="1" 
      android:background="?android:attr/selectableItemBackground" 
      android:max="10" 
      android:progressDrawable="@drawable/progress" 
      android:scaleType="fitCenter" 
      android:thumb="@drawable/thumb" /> 

참고 :만큼 당신이 검색 막대에 필요한 속성을

@Override 
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) { 
    // TODO Auto-generated method stub 
    BackLightValue = (float)arg1/100; 

    WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); 
    layoutParams.screenBrightness = BackLightValue; 
    getWindow().setAttributes(layoutParams); 
} 
@Override 
public void onStartTrackingTouch(SeekBar arg0) { 
} 
@Override 
public void onStopTrackingTouch(SeekBar arg0) { 

    int SysBackLightValue = (int)(BackLightValue * 255); 
    android.provider.Settings.System.putInt(getContentResolver(), 
      android.provider.Settings.System.SCREEN_BRIGHTNESS, 
      SysBackLightValue); 
    } 
3

은 완벽하게 실행 내 다음 코드를 사용합니다. 당신의 어떤 활동 사용

는 방법에 따라 그 전화 :

private void setSeekbar() 
    { 
     seekBar = (SeekBar) findViewById(R.id.seekBar1); 
     seekBar.setMax(255); 
     float curBrightnessValue = 0; 

     try { 
       curBrightnessValue = android.provider.Settings.System.getInt(
       getContentResolver(), 
       android.provider.Settings.System.SCREEN_BRIGHTNESS); 
      } catch (SettingNotFoundException e) { 
      e.printStackTrace(); 
      } 

    int screen_brightness = (int) curBrightnessValue; 
    seekBar.setProgress(screen_brightness); 
    seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 
    int progress = 0; 

     @Override 
     public void onProgressChanged(SeekBar seekBar, int progresValue, 
       boolean fromUser) { 
      progress = progresValue; 

     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 
     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 
      android.provider.Settings.System.putInt(getContentResolver(), 
        android.provider.Settings.System.SCREEN_BRIGHTNESS, 
        progress); 
     } 
    }); 
    }