亮度调节:
1. 当前屏幕的亮度调节
2. 整个系统的亮度调节(需要申请系统权限)
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
注意:实现调节亮度,首先需要设置屏幕亮度条件模式未手动模式
public void setScrennManualMode() {
ContentResolver contentResolver = getContentResolver();
try {
int mode = Settings.System.getInt(contentResolver,
Settings.System.SCREEN_BRIGHTNESS_MODE);
if (mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
Settings.System.putInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE,
Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
}
} catch (Settings.SettingNotFoundException e) {
e.printStackTrace();
}
}
亮度范围:0-1
-1代表使用系统亮度 获取的值在0-255范围
有网友说不再0-1范围内的亮度会显示为当前的系统亮度,但个人实测超过这个范围的设置会导致系统亮度显示紊乱
//获取系统屏幕亮度
ContentResolver contentResolver = getContentResolver();
Settings.System.getInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS, defVal);
//设置系统屏幕亮度
Settings.System.putInt(contentResolver,Settings.System.SCREEN_BRIGHTNESS, value);
//设置当前界面屏幕亮度
private void setLight(Activity activity,int brightness){
WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
float light=0;
if(lp.screenBrightness==-1){
light=BaseApplication.getInstance().getDishbroadScrrenBrightness();
//自己设置的值
}else {
light=lp.screenBrightness+brightness/255.0f;
}
if(light>1){
light=1;
}else if(light<0){
light=0;
}
lp.screenBrightness = light;
activity.getWindow().setAttributes(lp);
}
获取的当前屏幕亮度可能随着手机品牌/型号变化而变化,不一定在0-255的范围内