9

我正在尝试从小部件更新显示亮度,但我遇到了一些问题。

要更改亮度级别,我使用:

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

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

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

我读到WindowManager.LayoutParams lp = getWindow().getAttributes();应该使用它,但我正在使用 App Widget,因此无法调用 getWindow()。

4

3 回答 3

6

我有一个类似的问题,只是创建了一个没有 UI 的 Activity 来更改亮度,使用意图从 App Widget 运行它。

于 2010-12-06T12:26:30.393 回答
1

首先,在 LayoutParams 中要修改的值是screenBrightness。然后你必须做一个window.setAttributes来应用它。正如GeekYouUp所说,您可以进行虚拟活动来获取 Window 对象。

于 2010-12-06T12:36:43.200 回答
0

您可以在 RemoteView 中使用此代码吗?

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

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

于 2014-12-13T09:15:06.163 回答