本部分代码地址:

屏幕亮度的知识点
  • Android系统的屏幕亮度取值范围是0-255,数据是int型;
  • 屏幕亮度的模式有两种,如下:
字段 解释
Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL 手动调节模式 0
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC 自动调节模式 1

设置屏幕亮度的常见方法如下

  • 获取当前屏幕亮度:获取到的是0-255范围内的值;
privateintgetCurrentScreenBrightness(Context context){int currentBrightness =0;
    ContentResolver contentResolver = context.getContentResolver();try{
        currentBrightness = Settings.System.getInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS);}catch(Settings.SettingNotFoundException e){
        e.printStackTrace();}return currentBrightness;}
  • 获取当前屏幕亮度模式:返回值是0(手动调节模式)或者1(自动调节模式);
privateintgetCurrentScreenBrightnessMode(Context context){int screenBrightnessMode =0;
    ContentResolver contentResolver = context.getContentResolver();try{
        screenBrightnessMode = Settings.System.getInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE);}catch(Settings.SettingNotFoundException e){
        e.printStackTrace();}return screenBrightnessMode;}
  • 设置屏幕调节模式:需要先获取android.permission.WRITE_SETTINGS这个权限,然后才能设置屏幕调节模式,否则会报错:was not granted this permission: android.permission.WRITE_SETTINGS。0-手动调节模式,1-自动调节模式;
//清单文件中申请权限;<uses-permission android:name="android.permission.WRITE_SETTINGS"/>//6.0以后需要动态申请系统的权限;privatevoidrequestPermission(int mode){if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){if(!Settings.System.canWrite(this)){
            Intent intent =newIntent(android.provider.Settings.ACTION_MANAGE_WRITE_SETTINGS);
            intent.setData(Uri.parse("package:"+this.getPackageName()));
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);this.startActivity(intent);}else{//有了权限,具体的操作;setScreenMode(this, mode);}}}//具体的操作屏幕亮度;privatevoidsetScreenMode(Context context,int mode){
    ContentResolver contentResolver =getContentResolver();
    Settings.System.putInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE, mode);}
  • 设置当前页面的屏幕亮度,但是并不会影响系统的屏幕亮度,也就是说设置了当前页面的屏幕亮度,系统的屏幕亮度还是先前的数值,需要申请权限android.permission.CHANGE_CONFIGURATION,否则不会执行调节屏幕亮度;
////清单文件中申请权限;<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>privatevoidsetCurrentBrightness(Activity activity,int brightness){
    WindowManager.LayoutParams layoutParams = activity.getWindow().getAttributes();
    layoutParams.screenBrightness = Float.valueOf(brightness)*(1f/255f);
    activity.getWindow().setAttributes(layoutParams);}
  • 设置系统的屏幕亮度,直接影响系统的屏幕亮度。和设置亮度模式一样,需要先获取android.permission.WRITE_SETTINGS这个权限,然后才能设置屏幕调节模式,否则会报错:was not granted this permission: android.permission.WRITE_SETTINGS。;
//还是需要在6.0以上的手机上申请android.permission.WRITE_SETTINGS权限;if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){if(!Settings.System.canWrite(this)){
        Intent intent =newIntent(android.provider.Settings.ACTION_MANAGE_WRITE_SETTINGS);
        intent.setData(Uri.parse("package:"+this.getPackageName()));
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);this.startActivity(intent);}else{//有了权限,具体的操作;setSystemBrightness(this,200);}}//具体设置系统的屏幕亮度;                privatevoidsetSystemBrightness(Context context,int brightness){
    ContentResolver contentResolver = context.getContentResolver();
    Uri uri = android.provider.Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS);
    android.provider.Settings.System.putInt(contentResolver,Settings.System.SCREEN_BRIGHTNESS,brightness);
    contentResolver.notifyChange(uri,null);}
个人微信联系方式:Kang_01123,从事安卓开发,希望一起前行,一起进阶