我正在使用以下设置系统自动亮度模式和级别:
android.provider.Settings.System.putInt(y.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE, 0);
android.provider.Settings.System.putInt(y.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS, y.brightness1);
我可以打开和关闭自动亮度,并设置不同的级别。这些设置似乎应用正确——我可以进入设置——> 显示——> 亮度,我设置的任何设置实际上都正确显示。然而,实际屏幕并没有改变它的亮度。如果我只是点击显示设置中的 slider ,那么所有内容都会应用。
我应该提到我正在运行一个带有主要 Activity 的应用程序,并且这些设置正在 BroadcastReceiver 中应用。我确实尝试创建一个虚拟 Activity 并在那里测试了这些东西,但得到了相同的结果。
最佳答案
好的,在这里找到了答案: Refreshing the display from a widget?
基本上,必须制作一个处理亮度变化的透明 Activity 。帖子中没有提到的是你必须做的:
Settings.System.putInt(y.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE, 0);
Settings.System.putInt(y.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS, brightnessLevel);
然后做
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = brightness;
getWindow().setAttributes(lp);
如果您在应用更改后立即调用 finish(),亮度实际上永远不会改变,因为必须在应用亮度设置之前创建布局。所以我最终创建了一个有 300 毫秒延迟的线程,然后调用 finish()。
关于android - 无法在 Android 中以编程方式应用系统屏幕亮度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5032588/