【发布时间】:2015-06-19 21:41:35
【问题描述】:
如何在Android代码中动态获取当前屏幕的亮度?
【问题讨论】:
-
你有办法得到它吗?
标签: android
如何在Android代码中动态获取当前屏幕的亮度?
【问题讨论】:
标签: android
你好要获取android系统的当前亮度级别,你可以使用这个代码:
try {
float curBrightnessValue=android.provider.Settings.System.getInt(
getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS);
} catch (SettingNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
【讨论】:
getWindow().getAttributes().screenBrightness检索。但是,如果当前亮度
getInt() 方法返回 Int 值。但亮度存储为浮点数。最好使用getFloat()
The screen backlight brightness between 0 and 255.
这是不久前提出的,但只是为了扩展小说的答案:
settings.screenBrightness 如果之前没有在代码中被覆盖,将返回 -1。这是正确的行为,因为将 screenBrightness 设置为 -1 会将亮度设置为当前系统亮度级别。
这个系统亮度可以由用户随时更改,所以存储实际值可能没有多大用处,如果你只是想将亮度恢复到原来的值,因为实际值可能是“过时了”。
【讨论】:
你可以读取这个系统文件的内容
/sys/class/leds/lcd-背光/亮度
此值为当前屏幕亮度,范围 0-255
【讨论】:
据此 - http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#screenBrightness
你可以改变亮度
WindowManager.LayoutParams settings = getWindow().getAttributes();
settings.screenBrightness = newValue;
getWindow().setAttributes(settings);
另请参阅 Hamiora 答案以获得进一步解释。
【讨论】:
savedBrightness settings.screenBrightness 的范围从 0f 到 1f,而系统设置的值从 0 到 255)