我尝试定期切换屏幕亮度低和高(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”循环但没有运气。
希望尽快收到您的意见。
干杯,
答案 0 :(得分: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);
}
}
答案 1 :(得分:0)
您可以使用Handler and posting delayed tasks in runnables to it或by using a timer来解决此问题。 我会选择第二种方法,因为你需要的是重复任务而不是按顺序执行任务。