1

画面の明るさを定期的に (1 秒) 低くしたり高くしたりしようとしましたが、次のコードが機能すると思いました。

SystemClock.sleep(1000);
params.screenBrightness = 0;
getWindow().setAttributes(params);


SystemClock.sleep(1000);
params.screenBrightness = 1;
getWindow().setAttributes(params);

これらのコードを試しましたが、2 番目のコード (コードを拡張した場合は最後のコード) しか完了しません (つまり、明るさ = 1)。私はそれについて疑っているので、変数 int i = 0 を配置し、次に各スリープ関数の後に i++ を配置すると、結局 i = 2 が表示されます (文字列を表示することによって)。Androidは合計を行うと思いますが、画面は最後の設定に反応するだけで、中間コマンドには反応しません。それがなぜなのか、どうすれば画面の明るさを切り替えることができるのか分かりますか?

「for」ループも使用しようとしましたが、うまくいきません。

コメントをお待ちしております。

乾杯、

4

2 に答える 2

5

1秒おきに画面を明るくしたり暗くしたりする理由がわかりません...しかし、時間遅延でコードを実行したい場合は、ハンドラーとランナブルの使用を検討してください。

import android.view.WindowManager.LayoutParams;
public class Example extends Activity {
    private LayoutParams mAttributes;
    private Handler mHandler = new Handler();
    private Window mWindow;

    private Runnable onEverySecond = new Runnable() {
        public void run() {
            if(mAttributes.screenBrightness != LayoutParams.BRIGHTNESS_OVERRIDE_FULL)
                mAttributes.screenBrightness = LayoutParams.BRIGHTNESS_OVERRIDE_FULL;
            else
                mAttributes.screenBrightness = LayoutParams.BRIGHTNESS_OVERRIDE_OFF;

            mWindow.setAttributes(mAttributes);
            mHandler.postDelayed(onEverySecond, 1000);
        }
    };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mWindow = getWindow();
        mAttributes = mWindow.getAttributes();

        mHandler.post(onEverySecond);
    }
}
于 2012-08-31T17:51:02.377 に答える
0

ハンドラーを使用して実行可能ファイルに遅延タスクを投稿するか、タイマーを使用して解決できます。タスクを順番に実行するのではなく、タスクを繰り返す必要があるため、2 番目のアプローチを使用します。

于 2012-08-31T17:53:25.003 に答える