我正在尝试更新小部件的显示亮度,但我有一些问题。

要改变亮度水平,我使用:

Settings.System.putInt(context.getContentResolver(),android.provider.Settings.System.SCREEN_BRIGHTNESS, 200);

这会修改显示设置(实际上在显示 - >亮度中,级别是正确的),但是显示的有效亮度不会更改。如果我锁定屏幕并解锁,亮度最终会更改为我设置的值。

我认为这是一个设置更新问题,那么在设置更改后如何立即更新显示设置?

我读了 WindowManager.LayoutParams lp = getWindow().getAttributes(); 应该使用,但我在应用程序小部件中工作,因此无法调用getwindow()。

有帮助吗?

解决方案

我也有一个类似的问题,只是创建了一个没有UI的活动来进行亮度更改,并使用了从应用程序窗口小部件运行它的意图。

其他提示

首先,在LayoutParams中修改的值是 屏幕界. 。然后,您必须做一个 窗口 应用它。作为 Geekyouup 说,您可以进行虚拟活动以获取窗户对象。

您可以在远程视图中使用此代码吗?

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);

当您从用户定义的类中设置手机屏幕亮度时,此代码可以正常工作 不扩展活动 但是您只需要上下文。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top