在android中以编程方式更改屏幕亮度

Sri*_*Sri 37 android screen-brightness

我想在android中以编程方式更改屏幕亮度.目前我使用此代码:

WindowManager.LayoutParams lp = getWindow().getAttributes();
float brightness=1.0f;
lp.screenBrightness = brightness;
getWindow().setAttributes(lp);
Run Code Online (Sandbox Code Playgroud)

但是这个示例代码适用于蛋糕,而不是最新版本.我使用的是最新版本的SDK.对于较新的Android版本,首选解决方案是什么?

Tor*_*ten 80

这可以通过使用:

WindowManager.LayoutParams layout = getWindow().getAttributes();
layout.screenBrightness = 1F;
getWindow().setAttributes(layout);
Run Code Online (Sandbox Code Playgroud)

另请参阅:http: //developer.android.com/reference/android/view/WindowManager.LayoutParams.html#screenBrightness

  • layout.screenBrightness = -1; 或任何负值将屏幕亮度设置回原来的优先级. (6认同)
  • 但亮度值没有得到保存,以便下一次设备从关机状态唤醒...如何保持它不仅一个窗口,但它应该适合所有人..... ???? (4认同)
  • float prevBrightness = layout.screenBrightness; 将获得当前的亮度.将其保存在onSaveInstancedSaved()或sharedPreference中 (3认同)

Mau*_*ijk 1

为此使用 IHardwareService 接口怎么样?在本教程中可以找到一个示例。

更新:教程链接仍然有效,但实际代码也可以在下一个答案中找到。

  • 我认为他这样做是因为您的答案只包含解决方案的链接。Stackoverflow 旨在直接收集示例和解决方案,链接到来源只是次要的。如果您的链接已失效,那么您的答案就完全失效了。如果 android 接口发生变化,并且您有一个示例、解释和答案中的链接,我可以编辑您的答案以反映 api 更改。 (51认同)
  • DV,这不应该是接受的答案,示例代码应该在答案中。更不用说您正在与隐藏的 API 交谈。 (6认同)
  • 教程链接就像死了一样..找不到来源@tutorial。 (2认同)