동영상 플레이어에서 화면 밝기를 조정하는 버튼 부분을 구현하고 있습니다.

 

그런데,

 

Window window = getWindow();
WindowManager.LayoutParams lparam = getWindow().getAttributes();
lparam.screenBrightness = 밝기 값;
window.setAttributes(lparam);

으로는, 밝기 값을 원하는 float로 지정은 할 수 있지만, 현재 밝기를 얻을 수는 없더군요.

 

그래서 방법을 약간 우회했습니다.

 

255단계 밝기를 얻어서 255로 나눠서 float로 저장했습니다.

 

float brightness = Settings.System.getFloat(
getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS, -1);
brightness /= 255;

그래서 저 brightness를 lparam.screenBrightness에 넣었습니다만, 안타깝게도, getFloat으로는 현재 설정의 밝기만을 얻어오더군요.

 

즉, WindowManager로 밝기를 조정한 뒤에 저 명령을 다시 사용할 경우, 처음 밝기만을 불러옵니다.

 

그래서 또 꼼수를 썼습니다.

 

 Window window = getWindow();
WindowManager.LayoutParams lparam = getWindow().getAttributes();
float brightness = Settings.System.getFloat( getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, -1);
brightness /= 255;
if (brightness <= filepath.nowbrightness) {
 filepath.nowbrightness += 0.2f;
 if (filepath.nowbrightness >= 1.0f) {
  filepath.nowbrightness = 1.0f;
  }
 } else if (brightness > filepath.nowbrightness) {
 brightness += 0.2f;
 filepath.nowbrightness = brightness;
 if (filepath.nowbrightness >= 1.0f) {
  filepath.nowbrightness = 1.0f;
  }
}
lparam.screenBrightness = filepath.nowbrightness;
window.setAttributes(lparam);


filepath.nowbrightness는 filepath 클래스에 전역변수 사용을 위해 지정해놓은 float 변수입니다.

 

뛰어난 개발자분들이니 이해 하셨겠지만, 설명하자면 fliepath.nowbrightness(디폴트 0.1f)와 비교해서 클때 작을때 처리를 다르게 한 것입니다.

 

처리한 결과가 1.0f보다 크거나 같으면 다시 filepath.nowbrightness를 1.0f로 바꿔었구요.

 

이렇게 하니, 버튼 누를때마다 0.2f씩 잘 증가합니다.

 

그런데 밝기를 줄일때는 이 논리가 안통하더군요;;

 

혹시 이점에 관련해서, 밝기 줄일때는 어떻게 해야하는가, 그리고 혹시 설정에서 말고 WindowManager로 설정한 밝기를 포함해 순수한 '현재 밝기'를 구하는 방법을 아시는 분은 도와주시면 감사드리겠습니다.

 

즉, 현재 설정에서의 밝기가 아닌, 현재 표시되고 있는 디스플레이의 밝기. 이걸 얻어오고 싶습니다.

 

그게 안된다면, 밝기 줄일때의 논리를 어떻게 짜야할지... 이것이 너무 어렵습니다ㅠㅠ;;