2011-10-09 74 views
7

如何獲取當前活動的屏幕亮度?Android中的屏幕亮度值

以下方法工作正常設定亮度爲最大致電setBrightness(100)

private void setBrightness(int brightness) { 
    WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); 
    layoutParams.screenBrightness = brightness/100.0f; 
    getWindow().setAttributes(layoutParams); 
} 

我試着去實現以下目標:

  1. 啓動活動和保存當前亮度值
  2. 將亮度設置爲最大值
  3. 將亮度重置爲初始v對某些事件有幫助

非常感謝!

+0

什麼是layoutParams.screenBrightness的設置前值? – ZelluX

回答

15

嘗試

int curBrightnessValue = android.provider.Settings.System.getInt(getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS); 

然後

WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); 
    layoutParams.screenBrightness = curBrightnessValue/100.0f; 
    getWindow().setAttributes(layoutParams); 
+1

非常感謝Michele!它通過圍繞與嘗試/ catch塊 – lukuluku

+0

@Michele:爲什麼運行第一行嗎?我寫了lint「int curBrightnessValue = ...」,但它不起作用。順便說一下,是否允許亮度? –

+0

@Michele謝謝,是的,我編輯你的陳述,它運行正確。 「final int level = Settings.System.getInt(getContentResolver(),android.provider.Settings.System.SCREEN_BRIGHTNESS,-1); 」 –

0

我用這個在Android 17+(可能適用W /低API)的

private void setScreenBrightnessTo(float brightness) { 
     WindowManager.LayoutParams lp = getActivity().getWindow().getAttributes(); 
     if (lp.screenBrightness == brightness) { 
      return; 
     } 

     lp.screenBrightness = brightness; 
     getActivity().getWindow().setAttributes(lp); 
    } 

用途:

要設置屏幕最大亮度(例如,當您展示條形碼或其他東西):

setScreenBrightnessTo(BRIGHTNESS_OVERRIDE_FULL);

要重置回無論用戶之前有:

setScreenBrightnessTo(BRIGHTNESS_OVERRIDE_NONE);