6

整个问题都在标题中,所以我想尽可能强调:

  • 我对当前值感兴趣(不是它的当前设置)

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

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

这是相关的代码:

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。每时每刻。

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

我在输出中添加了时钟以确保我的读数在滴答作响。他们是。

4

2 回答 2

1

如果你grep -r "SCREEN_BRIGHTNESS" *android/system/frameworks(android 源代码)中这样做,你会发现:BrightnessController.java 用于控制亮度。也许你可以把这门课当作灵感。

于 2012-08-03T11:49:15.467 回答
0

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

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

当亮度设置为零时,华硕平板电脑似乎显示暗屏。kindle 火很暗,退到锁屏后面。

于 2012-08-10T15:16:19.400 回答