在Android应用中有很多情况下,都需要去设置屏幕的亮度,比如说小说APP就需要设置亮度,因为夜晚小看小说高亮度情况下会比较刺眼
在修改前,我们需要获得屏幕亮度
private int getsystemlight(Context context) {
ContentResolver contentResolver = context.getContentResolver();
return Settings.System.getInt(contentResolver,
Settings.System.SCREEN_BRIGHTNESS, 255);//系统亮度为0~255
}
第一种方式:修改APP界面屏幕亮度,不会影响其他APP
先初始化window,用window.getAttributes()初始化WindowManager.LayoutParams,然后调用screenBrightness来设置APP屏幕内的亮度,但是仅限于APP内
private void setApplight(int lightvalue) {
Window window = getWindow();
WindowManager.LayoutParams layoutparams = window.getAttributes();
layoutparams.screenBrightness = lightvalue/ 255.0f;
window.setAttributes(layoutparams );
}
第二种方式:修改系统Settings 中屏幕亮度,影响所有APP
先申请修改Settings的权限
然后要用户允许App使用相关操作,用startActivityForResult申请Settings.ACTION_MANAGE_WRITE_SETTINGS,然后在onActivityResult中判断用户是否允许,允许则执行相关操作
ContentResolver contentResolver = context.getContentResolver();
Settings.System.putInt(contentResolver,
Settings.System.SCREEN_BRIGHTNESS, birghtessValue);
在实际应用中,第一种方案适用于小说类APP,因为只需要对自己应用内负责,第二种方案适用于全局APP,即对于全局的亮度有需求的APP