2009-12-27 6 views
3

밤에 사용할 수있는 Android 애플리케이션을 개발 중입니다. 그러므로 버튼의 백라이트를 꺼야합니다. 어떻게해야합니까? 내 자신의 휴대 전화에서 백라이트가 잠시 후에 꺼 지지만, Motorola Droid에서는 이런 일이 발생하지 않는다고 생각합니다.버튼의 백라이트를 끕니다.

화면을 켜기 위해 대기 시간을 사용하고 있습니다. 다른 깃발을 사용해야합니까, 아니면 어떻게해야합니까?

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, WAKE_LOCK_TAG); 
mWakeLock.acquire(); 

대단히 감사합니다. 죄송합니다 -

// Kaloer

+0

이 문제에 대한 해결책을 찾았습니까? 메신저도 버튼의 백라이트를 끕니다. –

+1

예, 또는 안드로이드 2.2의 새로운 기능이었습니다. 여기 좀 봐 http://stackoverflow.com/questions/2892160/uimodemanager-nightmode-froyo – Kaloer

답변

0

AFAIK는 버튼의 백라이트를 제어 할 API가 없다!

+0

좋아 .. 대답 주셔서 감사합니다 :) 2.236에서 – Kaloer

+0

그것은 api를 가지고 – pengwang

+0

@pengwang, 목록에서 붙여 넣을 수있는 링크를 붙여 넣기 이 API에? – greenoldman

4

가 해킹입니다 :이 주로 코멘트 링크에 ​​대답했다 오래된 질문이지만,이 질문을 통해 오는 다른 사람에게 명확하게하는 것을 볼

private void setDimButtons(boolean dimButtons) { 
    Window window = getWindow(); 
    LayoutParams layoutParams = window.getAttributes(); 
    float val = dimButtons ? 0 : -1; 
    try { 
     Field buttonBrightness = layoutParams.getClass().getField(
       "buttonBrightness"); 
     buttonBrightness.set(layoutParams, val); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    window.setAttributes(layoutParams); 
} 
+1

이것을 "해킹"이라고 부를지는 모르겠습니다. 그것은 반성입니다. – gobernador

+1

그게 재미 있어요. 서비스처럼'getWindow()'에 접근하는 방법이 있나요? – faizal

1

, 여기에 내 자신의 대답.

는 그것은 내장의 API 8. (doc)

float android.view.WindowManager.LayoutParams.buttonBrightness 



이 내 애플 리케이션 중 하나에서 사용하고 무엇을 다소 수정/단순화 된 버전 (관련이없는 코드 제외)되기 때문이다. 내부 클래스는 지원하지 않는 이전 플랫폼에서 시작될 때 충돌을 방지해야합니다.

private void nightMode() { 
    Window win = getWindow(); 
    LayoutParams lp = win.getAttributes(); 
    if (prefs.getBoolean("Night", false)) 
     changeBtnBacklight(lp, LayoutParams.BRIGHTNESS_OVERRIDE_OFF); 
    else changeBtnBacklight(lp, LayoutParams.BRIGHTNESS_OVERRIDE_NONE); 
    win.setAttributes(lp); 
} 

private void changeBtnBacklight(LayoutParams lp, float value) { 
    if (Integer.parseInt(Build.VERSION.SDK) >= 8) { 
     try { 
      new BtnBrightness(lp, value); 
     } catch (Exception e) { 
      Log.w(TAG, "Error changing button brightness"); 
      e.printStackTrace(); 
     } 
    } 
} 

private static class BtnBrightness { 
    BtnBrightness(LayoutParams lp, float v) { 
     lp.buttonBrightness = v; 
    } 
} 
+0

서비스와 같이 활동 외부에서'getWindow()'에 접근하는 방법이 있습니까? – faizal

관련 문제