2011-10-09 37 views
7

Làm thế nào để bạn có được độ sáng màn hình hiện tại của hoạt động?Giá trị độ sáng màn hình trong Android

phương pháp sau hoạt động tốt cho việc thiết lập độ sáng đến tối đa bằng cách gọi setBrightness(100):

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

Im cố gắng để đạt được những điều sau đây:

  1. Bắt đầu hoạt động và lưu các giá trị độ sáng hiện tại
  2. Đặt độ sáng thành tối đa
  3. Đặt lại độ sáng cho v ban đầu alue trên các sự kiện nhất định

Rất cám ơn!

+0

giá trị của layoutParams.screenBrightness trước khi thiết lập là gì? – ZelluX

Trả lời

15

Hãy thử

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

và sau đó

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

cảm ơn rất nhiều Michele! nó hoạt động hoàn toàn tốt bằng cách bao quanh nhiệm vụ với khối try/catch – lukuluku

+0

@Michele: tại sao chạy dòng đầu tiên? Tôi đã viết lint "int curBrightnessValue = ..." nhưng nó không hoạt động. Theo cách này, có quyền cho độ sáng không? –

+0

@Michele cảm ơn, vâng tôi đã chỉnh sửa tuyên bố của bạn và nó chạy đúng sự thật. "final int level = Settings.System.getInt (getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS, -1); " –

2

Để thiết lập lại độ sáng mặc định giá trị

WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); 
layoutParams.screenBrightness = -1f; 
getWindow().setAttributes(layoutParams); 

Một giá trị nhỏ hơn 0, mặc định, có nghĩa là sử dụng màn hình ưa thích độ sáng.

Tham khảo http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#screenBrightness

+0

Hoạt động tuyệt vời! Làm thế nào điều này không có nhiều upvotes? – avalancha

0

tôi sử dụng này trên Android 17+ (Có lẽ làm việc w/API thấp)

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

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

Công dụng:

Để thiết lập màn hình để MAX Brightness (ví dụ như khi bạn hiển thị Mã vạch hoặc nội dung nào đó):

setScreenBrightnessTo(BRIGHTNESS_OVERRIDE_FULL);

để thiết lập lại trở lại bất cứ điều gì người dùng đã có trước:

setScreenBrightnessTo(BRIGHTNESS_OVERRIDE_NONE);

Các vấn đề liên quan