如何读取Android屏幕亮度/暗淡的实时,当前值?

时间:2012-08-02 15:16:38

标签: android screen brightness

整个问题都在标题中,所以我想强调一下:

  • 我对当前值感兴趣(不在当前设置中)

  • 我对实际值感兴趣(所以如果屏幕的亮度现在低于之前的一秒,那么值也应该更低)

可悲的是,尽管阅读了很多帖子,但我不知道答案。我写了一点实用工具,每一秒都显示时间和亮度。并且它不起作用 - 因为当手机(LG L5与Android 4.0)自动降低亮度(屏幕变暗,并且毫无疑问)时,值保持相同

以下是相关的代码:

try
{
  float sys_brightness = android.provider.Settings.System
                         .getFloat(getContentResolver(),
                                   android.provider.Settings
                                   .System.SCREEN_BRIGHTNESS);

  WindowManager.LayoutParams lp = getWindow().getAttributes();  
  float dim = lp.dimAmount;
  float scr_brightness = lp.screenBrightness;
  boolean dim_changed = (lp.flags & WindowManager.LayoutParams
                                    .DIM_AMOUNT_CHANGED)>0;  

  textView.setText(String.format("%02d:%02d:%02d", hours, minutes, seconds)+" "
                   +String.format("%02f, %02f, %02f", sys_brightness,dim,scr_brightness)
                   +" "+Boolean.toString(dim_changed));
}
catch (SettingNotFoundException ex)
{
  textView.setText("excepton");
}

对于记录,值为 - 92,1.0,-1.0,false。一直以来。

问题 - 如何读取当前的真实亮度/暗淡值?

我为输出添加了时钟以确定,我的读数正在滴答作响。他们是。

2 个答案:

答案 0 :(得分:1)

如果你在grep -r "SCREEN_BRIGHTNESS" *(android源代码)中执行android/system/frameworks,你会发现:BrightnessController.java用于控制亮度。也许你可以用这个课程作为灵感。

答案 1 :(得分:0)

以下代码段产生一个从0到1不等的浮点数,它似乎与亮度相对应。

WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
Float darkness = layoutParams.screenBrightness;

当亮度设置为零时,似乎华硕平板电脑显示昏暗的屏幕。点燃的火很暗,在锁屏后面撤退。