4

明るさを変更したいので、次の方法を使用できます。

public static void SetBright(int brightness, Context context) {
    if (isAutoBrightness(context)) {
        stopAutoBrightness(context);
    }
    WindowManager.LayoutParams lp = ((Activity) context).getWindow()
            .getAttributes();
    lp.screenBrightness = Float.valueOf(brightness) * (1f / 255f);
    ((Activity) context).getWindow().setAttributes(lp);
}

渡すアクティビティが必要ですSetBright(int brightness, Context context);

しかし今、私はSetBright(int brightness, Context context)Brocastreceiverでメソッドを呼び出さなければなりません。onReceive(Context context、Intent intent)メソッドでコンテキストを使用できますが、アプリを終了すると機能しません。

アクティビティを使用する代わりに、明るさを変更するために使用できる別の方法はありますか?

4

3 に答える 3

4

ダミーアクティビティを開始し、brightness(255の場合は0から1の範囲-1)を使用してウィンドウパラメータを設定します。50、100、500ミリ秒のタイマーを実行します。その後、アクティビティを終了します。

TimerTask finishTask = new TimerTask() {

        @Override
        public void run() {
            BrightActivity.this.finish();
            timer.cancel();
            if (timer != null) {
                timer = null;
            }
        }
    };
    timer.schedule(finishTask,Constants.BRIGHTNESS_REFRESH_DELAY);
于 2012-11-02T08:54:39.747 に答える
1

主に画面の更新時間に500ミリ秒を使用しましたが、Galaxys3では機能しません。しかし、1000は大丈夫です。したがって、画面の更新時間はデバイスに依存する可能性があります。

于 2012-11-15T10:45:11.767 に答える
0

保存したい場合は、明るさを設定した後にこれを試してください:

public static void saveBrightness(Context context, int brightness) {
   ContentResolver resolver= context.getContentResolver();
    Uri uri = android.provider.Settings.System
            .getUriFor("screen_brightness");
    android.provider.Settings.System.putInt(resolver, "screen_brightness",
            brightness);
    resolver.notifyChange(uri, null);
}
于 2012-05-21T15:51:39.807 に答える