Android でディスプレイの明るさをプログラムで変更した後に更新する
-
09-10-2019 - |
質問
ウィジェットからディスプレイの明るさを更新しようとしていますが、いくつか問題があります。
明るさレベルを変更するには、次を使用します。
Settings.System.putInt(context.getContentResolver(),android.provider.Settings.System.SCREEN_BRIGHTNESS, 200);
これによりディスプレイ設定が変更されますが (実際には、「表示」->「明るさ」のレベルは正しいです)、ディスプレイの実効的な明るさは変更されません。画面をロックしてロックを解除すると、最終的に明るさが設定した値に変わります。
これは設定の更新の問題だと思いますが、設定を変更した後、ディスプレイ設定をすぐに更新するにはどうすればよいですか?
それを読みました WindowManager.LayoutParams lp = getWindow().getAttributes();
を使用する必要がありますが、アプリウィジェットで作業しているため、getWindow() を呼び出すことができません。
解決
私も同様の問題を抱えており、明るさを変更するための UI を持たないアクティビティを作成し、インテントを使用してアプリウィジェットから実行しました。
他のヒント
まず、LayoutParamsで変更する値は次のとおりです スクリーンブライトネス. 。その後、しなければなりません window.setattributes それを適用するために。として geekyouup 言った、あなたはあなたのウィンドウオブジェクトを取得するためにダミーアクティビティを作ることができます。
このコードを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);
このコードは、ユーザー定義のクラス内から電話画面の明るさを設定するときに機能します。 アクティビティを拡張していません ただし、コンテキストのみが必要です。
所属していません StackOverflow