【问题标题】:How to get current screen's brightness in Android code dynamiclly?如何在Android代码中动态获取当前屏幕的亮度?
【发布时间】:2015-06-19 21:41:35
【问题描述】:

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

【问题讨论】:

标签: android


【解决方案1】:

你好要获取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();
}

【讨论】:

  • 不,它读取的是当前亮度设置,而不是当前亮度。
  • @greenoldman 这是真的。当前亮度可通过getWindow().getAttributes().screenBrightness检索。但是,如果当前亮度
  • getInt() 方法返回 Int 值。但亮度存储为浮点数。最好使用getFloat()
  • @Jimmer 不,因为它返回 The screen backlight brightness between 0 and 255.
  • @MuhammedRefaat,Android 可以自动改变亮度(提示:dim)。
【解决方案2】:

这是不久前提出的,但只是为了扩展小说的答案:

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

这个系统亮度可以由用户随时更改,所以存储实际值可能没有多大用处,如果你只是想将亮度恢复到原来的值,因为实际值可能是“过时了”。

【讨论】:

  • 这个答案应该会得到更多的选票,因为它可能是大多数人想要的。
【解决方案3】:

你可以读取这个系统文件的内容

/sys/class/leds/lcd-背光/亮度

此值为当前屏幕亮度,范围 0-255

【讨论】:

    【解决方案4】:

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

    你可以改变亮度

    WindowManager.LayoutParams settings = getWindow().getAttributes();
    settings.screenBrightness = newValue;
    getWindow().setAttributes(settings);
    

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

    【讨论】:

    • 嗨,浮动已保存亮度 = settings.screenBrightness;无法获取当前亮度但是否被应用程序覆盖,我尝试过但总是从中获得-1.0f,因为我没有覆盖它!
    • @yuankai 你应该进行额外的检查。如果您的savedBrightness settings.screenBrightness 的范围从 0f 到 1f,而系统设置的值从 0 到 255)
    猜你喜欢
    • 2017-04-04
    • 2012-07-31
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 2022-06-20
    相关资源
    最近更新 更多