2012-03-07 1 views
2

안녕하세요. 웹의 모든 솔루션을 사용해 보았지만 아무 것도 작동하지 않았습니다. 방아쇠를 클릭하면 전체 화면이 팝업되는 오버레이 (서비스)가 있습니다. 오버레이에서 몇 가지 바로 가기, 볼륨 컨트롤 및 밝기 조절 기능을 사용했습니다. 요점은 내가 무엇을해도 밝기가 화면을 즉시 바꿀 수는 없다는 것입니다 (화면을 켜고 끌 필요가 있습니다).Android에서 밝기 설정 - 지금까지 아무 것도 작동하지 않았습니다.

이 밝기 슬라이더가 업데이트 될 때 내가 부르는 :

당신이 아닌 다른 화면을 끄고 경우 작동
@Override 
      public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) { 

       int value = (int)(arg1*255.0/100); 
       int V=-1; 
       try { 
        V=android.provider.Settings.System.getInt(getContext().getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS); 
       } catch (SettingNotFoundException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       System.out.println("V="+V+"brightness="+value); 
       //android.provider.Settings.System.putInt(getContext().getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC); 
       android.provider.Settings.System.putInt(getContext().getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS, value); 
       android.provider.Settings.System.putInt(getContext().getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); 
//    Intent intent= new Intent(getContext(), Bright.class); 
//    Bundle b=new Bundle(); 
//    b.putFloat("lvl", (float)(arg1*0.01)); 
//    intent.putExtras(b); 
//    //intent.putExtra("lvl", (float)(arg1*0.01)); 
//    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
//    getContext().startActivity(intent); 
      } 
     }); 

. 클래스가 서비스 (NO하여 GetWindow()을 사용할 수는)이기 때문에, 나는 또한 위의 해결 방법의 불행하게도 아무도

WindowManager.LayoutParams lp = getWindow().getAttributes(); 
lp.screenBrightness=0.9f; 
getWindow().setAttributes(lp); 

가 보인다 (또한 웹에서 발견) 코드를 호출하는 가짜 활동을 산란의 트릭을 시도 내 경우 엔 전혀 작동하지 않아. WindowManager는 아무 것도하지 않는 것 같습니다. 아마도 내 앱이 구현 된 방식 일 것입니다. ("클래식"창이 아닌 시스템 오버레이)

어쨌든 갑자기 슬라이드의 설정> 밝기 창을 배경에서 열었을 때 슬라이더가 작동하기 시작했습니다. 이렇게하면 슬라이더가 두 줄만 설정하여 시스템 밝기를 직접 제어 할 수 있습니다.

android.provider.Settings.System.putInt (getContext(). getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS, value); android.provider.Settings.System.putInt (getContext(). getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);

이렇게하면 배경에 "어떤 프로세스"가있을 때 밝기 조절이 매우 쉬워집니다 (반드시 그러해야합니다!). 아무도 내가 이해하려고 노력할 수있게 도와 줄 수 있습니까? 동일한 효과를 얻을 수있는 방법은 무엇입니까? 커맨드 라인을 사용하여 밝기 창을 단순히 시작하는 것이 좋겠지 만 (만약 내가 알고 있다면) 분명히 더 미묘한 해결책을 원할 것입니다.

당신의 의견을 알려주십시오.

환호

에마

답변

2

사용이, 그것을 작동합니다 :

final WindowManager.LayoutParams window_params=getWindow().getAttributes(); 
window_params.screenBrightness=1f; 
getWindow().setAttributes(window_params); 

screenBrightness는 0.0f를하고 1.0F 타협이다.

// 죄송합니다. 이미이 코드를 사용해 봤습니다. 난 오버레이 애플 리케이션과 함께 일한 적이 없어 그래서 당신을 도울 수 없다.

+1

IT WORKS! "WindowManager.LayoutParams"전에 "final"을 추가 한 후에 작업을 시작했지만 다시 꺼냈다가 여전히 작동했습니다. 내가 재부팅하고 지금은 "최종"또는없이 작동합니다. 이것은 단지 우연의 일치입니까, 아니면 "최종적인"결과가 실제로 달라졌습니까? 어쨌든 많이 고마워! – Lele

+0

(당신은 10f에 대해 맞았습니다. 실수로 거기에 놓았지만 실제로 0과 1 사이의 값을 사용했습니다. 지금 코드를 업데이트했습니다. 건배! – Lele