我想通过点击按钮来调整屏幕亮度,所以当背景为白色时,屏幕亮度应该是最大的,同时如果背景是黑色,屏幕亮度应该是最小的,但是我得到一个错误:NullPointerException ...这里是我的代码:
public void lamp2(boolean mode){
if(mode){
r.setBackgroundColor(Color.WHITE);
btn.setText("Turn OFF");
btn.setTextColor(Color.RED);
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = 90 / 100.0f;
getWindow().setAttributes(lp);
this.mode = true;
}
else if(!mode){
r.setBackgroundColor(Color.BLACK);
btn.setText("Turn ON");
btn.setTextColor(Color.GREEN);
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = 100 / 100.0f;
getWindow().setAttributes(lp);
this.mode = false;
}
}
把这些线放到最大
WindowManager.LayoutParams params = getWindow().getAttributes();
params.screenBrightness = 1.0f;
getWindow().setAttributes(params);
把这些线放到最低限度
WindowManager.LayoutParams params = getWindow().getAttributes();
params.screenBrightness = 0.1f;
getWindow().setAttributes(params);
如果要管理活动的亮度,则必须在onResume(或onCreate)方法中使用以下代码:
此代码在调用时会更改屏幕的亮度,但不会更改系统的亮度参数(这是一种很好的做法)。当您的活动被销毁(完成)时,亮度将恢复正常。您的清单中无需请求许可,也不需要在退出应用程序时设置亮度值。简而言之,您在管理屏幕亮度时使用此代码。
override fun onCreate(savedInstanceState: Bundle?) {
handleScreenBrightness()
super.onCreate(savedInstanceState)
}
private fun handleScreenBrightness() {
val params = window.attributes
params.screenBrightness = 1.0f// 0.0 - 1.0
window.attributes = params
window.addFlags(WindowManager.LayoutParams.FLAGS_CHANGED)
}