如何在Android代码中动态获取当前屏幕的亮度?

yua*_*kai 7 android

如何在Android代码中动态获取当前屏幕的亮度?

Mid*_* VP 13

嗨,要获得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();
}
Run Code Online (Sandbox Code Playgroud)

  • 不,它会读取当前亮度设置,而不是当前亮度. (5认同)
  • @greenoldman是的。当前的亮度可以通过`getWindow()。getAttributes()。screenBrightness`获取。但是,如果当前亮度<0,则意味着应用程序使用亮度的当前设置(可以通过当前答案中提供的方式加载) (2认同)

小智 5

这是不久前被问到的,但只是为了扩展小说的答案:

如果之前没有在代码中被覆盖,settings.screenBrightness 将返回 -1。这是正确的行为,因为将 screenBrightness 设置为 -1 会将亮度设置为当前系统亮度级别。

该系统亮度可以由用户随时更改,因此存储实际值可能没有太大用处,如果您只是尝试将亮度恢复到其原始值,因为实际值可能已“过时” ”。


fic*_*ion -1

根据此 - http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#screenBrightness

你可以通过以下方式改变亮度

WindowManager.LayoutParams settings = getWindow().getAttributes();
settings.screenBrightness = newValue;
getWindow().setAttributes(settings);
Run Code Online (Sandbox Code Playgroud)

另请参阅 Hamiora 答案以获取进一步解释。

  • 你好,浮动保存的亮度=settings.screenBrightness;无法获取当前亮度,但是否被应用程序覆盖,我尝试但总是从中得到-1.0f,因为我不覆盖它! (3认同)