更新Android上的亮度在编程中更改之后
-
09-10-2019 - |
题
我正在尝试更新小部件的显示亮度,但我有一些问题。
要改变亮度水平,我使用:
Settings.System.putInt(context.getContentResolver(),android.provider.Settings.System.SCREEN_BRIGHTNESS, 200);
这会修改显示设置(实际上在显示 - >亮度中,级别是正确的),但是显示的有效亮度不会更改。如果我锁定屏幕并解锁,亮度最终会更改为我设置的值。
我认为这是一个设置更新问题,那么在设置更改后如何立即更新显示设置?
我读了 WindowManager.LayoutParams lp = getWindow().getAttributes();
应该使用,但我在应用程序小部件中工作,因此无法调用getwindow()。
解决方案
我也有一个类似的问题,只是创建了一个没有UI的活动来进行亮度更改,并使用了从应用程序窗口小部件运行它的意图。
其他提示
您可以在远程视图中使用此代码吗?
Settings.System.putInt(context.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, brightness);
// This makes the new screen brightness effective
WindowManager.LayoutParams layoutParams = ((Activity)context).getWindow().getAttributes();
float b = brightness/255.0f;
if(b == 0.0)
b = 0.01f;
layoutParams.screenBrightness = b;
((Activity)context).getWindow().setAttributes(layoutParams);
当您从用户定义的类中设置手机屏幕亮度时,此代码可以正常工作 不扩展活动 但是您只需要上下文。
不隶属于 StackOverflow