1

我尝试定期(1s)切换屏幕亮度低和高,我认为这段代码应该可以工作:

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


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

我已经尝试过这些代码,但它只完成了第二个(或者如果我扩展代码,则为最后一个)(即亮度 = 1)。由于我对此表示怀疑,所以我在每个睡眠函数之后放置了一个变量 int i = 0,然后是 i++,它毕竟向我显示 i = 2(通过显示字符串)。我认为 Android 做了总和,但我的屏幕只对最后一个设置做出反应,而不是对中间命令作出反应。您知道为什么会这样吗?如何切换屏幕亮度?

我也尝试使用“for”循环,但没有运气。

希望尽快收到您的意见。

干杯,

4

2 回答 2

5

我不知道你为什么要每隔一秒使屏幕变亮和变暗......但是如果你想在时间延迟上运行代码,请考虑使用 Handler 和 Runnable:

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

您可以使用Handler 并在可运行文件中向其发布延迟任务,或者使用计时器来解决这个问题。我会选择第二种方法,因为您需要的是重复任务而不是按顺序执行任务。

于 2012-08-31T17:53:25.003 回答