9

ウィジェットからディスプレイの明るさを更新しようとしていますが、いくつか問題があります。

明るさのレベルを変更するには、次を使用します。

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

これにより、表示設定が変更されます(実際には、[表示]-> [明るさ]レベルは正しいです)が、ディスプレイの有効な明るさは変更されません。画面をロックしてロックを解除すると、最終的に明るさが設定した値に変わります。

これは設定の更新の問題だと思いますが、設定の変更後すぐに表示設定を更新するにはどうすればよいですか?

使用する必要があることを読みWindowManager.LayoutParams lp = getWindow().getAttributes();ましたが、アプリウィジェットで作業しているため、getWindow()を呼び出すことができません。

4

3 に答える 3

6

同様の問題が発生し、明るさの変更を行うUIのない​​アクティビティを作成し、アプリウィジェットから実行するインテントを使用しました。

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

このコードは、アクティビティを拡張していないがコンテキストのみが必要なユーザー定義クラス内から電話画面の明るさを設定している場合にうまく機能します。

于 2014-12-13T09:15:06.163 に答える