Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何读取Android屏幕亮度/暗度的真实当前值?_Android_Screen_Brightness - Fatal编程技术网

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

如何读取Android屏幕亮度/暗度的真实当前值?,android,screen,brightness,Android,Screen,Brightness,整个问题都在标题中,所以我想尽可能强调: 我对当前值感兴趣(不在当前设置中) 我对真实值感兴趣(因此,如果屏幕亮度现在低于一秒前,该值也应该更低) 遗憾的是,尽管我读了很多帖子,但我不知道答案。我写了一个小实用程序,每一秒都显示时间和亮度。而且它不起作用——因为当手机(搭载安卓4.0的LG L5)自动降低亮度时(屏幕变暗,毫无疑问),亮度值保持不变 以下是相关代码: try { float sys_brightness = android.provider.Settings.System

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

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

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

遗憾的是,尽管我读了很多帖子,但我不知道答案。我写了一个小实用程序,每一秒都显示时间和亮度。而且它不起作用——因为当手机(搭载安卓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。一直如此

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


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

如果您在
android/system/frameworks
(android源代码)中执行
grep-r“SCREEN\u BRIGHTNESS”*
,您将发现:BrightnessController.java,用于控制亮度。也许你可以用这个类作为灵感。

下面的代码片段生成一个介于0到1之间的浮点数,它似乎对应于亮度

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

当亮度设置为零时,华硕平板电脑似乎显示出暗淡的屏幕。KindleFire相当暗,退到锁屏后面

我认为你把亮度和背光混淆了。“自动降低亮度”->这是电源管理调整背光以节省能源。它和亮度没有任何关系。@wojci,我想你会把手机屏幕的照明方式(不是每个屏幕都需要回写)和特定手机的设置方式搞混了。但另一方面,如果安卓也有同样的困惑。。。我会检查的。我也有同样的问题,当我在昏暗或全亮度下使用唤醒锁定屏幕昏暗时,我试图改变行为,有什么想法会对我有很大帮助吗?你知道吗?我对阅读屏幕感兴趣brightness@Kmanc,说实话,我不记得了,但我对此表示怀疑。Android上的系统级编程是如此痛苦,以至于在我放弃了两个实用程序之后,它不值得我花时间。非常感谢。不过我运气不好,我检查了
IPowerManager
的功能,并且有
setBacklightBrightness
metod,但没有对应的功能可以将此值读回:-(.现在,我开始浏览Android源代码,也许会有一些东西浮出水面。这是一个AIDL接口-可以用于RPC。这看起来像你的问题:。我已经发现任何地方都没有
GetBackgroundBrightness
,所以这是一条死胡同。但是
PowerManagerService中有一个有趣的方法
isScreenBright
,现在我正在努力获取它的一个实例。您的代码正是我所发布的,它工作不正常。它返回理论值,即应该设置的亮度,而不是实际设置的值(对于物理屏幕)。