【问题标题】:Brightness always returns 255 when auto brightness is on in Android在 Android 中开启自动亮度时,亮度始终返回 255
【发布时间】:2013-01-09 02:53:01
【问题描述】:

当我的手机(HTC Desire HD (2.3.3))开启自动亮度时,我的亮度为 255。

我的代码

int value = Settings.System.getInt(c.getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS);

自动亮度开启时如何获取亮度级别?

试过

我试过了,在获得亮度之前,我正在设置manual 模式。但是当我将模式设置为 manual 时亮度为 0。

Settings.System.putInt(getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS,
                Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);

当我的手机自动亮度为on时,如何获取亮度级别?

【问题讨论】:

标签: android brightness screen-brightness


【解决方案1】:

在自动亮度的情况下,您需要传递不同的键

float brightness = android.provider.Settings.System.getInt(getContentResolver(),
                    "screen_auto_brightness_adj");

它应该返回从-1到+1的值

【讨论】:

  • android 5 (lollipop) 中没有这样的设置,所以会抛出异常。它也没有在Settings.System 中列为常量。你确定它工作(工作)?
【解决方案2】:
WindowManager.LayoutParams oLayOutParam = use from an activity getWindow().getAttributes();

oLayOutParam.screenBrightness 是亮度的值。

【讨论】:

  • 我可以在我的活动运行时执行此操作。实际上,我实施了一项服务,您可以通过摇动从任何地方改变亮度。我无法从服务中获得窗口。 WindowManager.LayoutParams oLayOutParam = getWindow().getAttributes(); 将以浮动形式返回。仅限于活动本身。一旦活动完成,它将被回滚。
  • 您可以随时从服务启动一个活动,然后在读取亮度后立即完成它,您也可以使用上述 API 设置亮度。
  • 类似线程stackoverflow.com/questions/5032588/…你需要有透明的活动。
  • 我已经尝试过这个..查看我的实现,但在 fakeactivity 完成时不会改变亮度..stackoverflow.com/questions/14101669/…
  • 所以不要完成那个活动告诉android使用标志保留它,你可以尝试像alwaysRetainTaskState这样的东西。你也可以放一些定时器任务来保持活动看起来很忙。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-20
相关资源
最近更新 更多