2010-05-30 2 views
1

Android OS에서 화면 밝기를 변경하는 데는 최소한 세 가지 기술이 있습니다. 그 중 두 명은 더 이상 먹기가 힘들지 않으며 세 번째로 받아 들여지는 기술에는 분명히 버그가 있습니다.활동의 화면 밝기 증가

원 뷰 활동을 시작할 때 화면 밝기를 높이고 활동이 끝나면 밝기를 다시 사용자 설정으로 되돌리고 싶습니다. 버튼 없음, 두 번째보기 또는 두 번째 활동 없음. 시작시 밝기가 극도로 높아졌으며 활동이 끝나면 원래의 밝기 설정으로 돌아갑니다. 나는 소스 코드와 다양한 활동의 ​​여러 페이지에 코드

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

의 2 개 라인에서 범위를 찾은 WindowManager.LayoutParams를 사용하여 현재 기술의

의 예.

처음에는 누군가가 링크를 제공 할 수있는 화면 밝기를 최대화하는 간단한 예가 있습니까?

답변

2
당신이 무엇을 할 수

그것의 간단한 드래그 앤 드롭을 사용하여 XML에서 SeekBar를 만들거나이 mainActivity 클래스의 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" /> 

쓰기 할 수 있습니다 :

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

screen을 호출하기 전에 밝기 모드를 확인해야합니다. etime 모드는 자동 밝기로 선택되며이 경우 밝기는 변경되지 않습니다. 매니페스트 파일에서도 권한이 필요합니다.

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

전화 setOnSeekBarChangeListener 전에서 onCreate에서 함수를 넣고

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 

    } 
}