美文网首页
Android 界面亮度设置

Android 界面亮度设置

作者: 果汁味Studio | 来源:发表于2021-01-19 15:40 被阅读0次

    业务上需要调节界面亮度,方便二维码扫描,记录一下。

    系统的亮度值默认区间是0-255,调节亮度有以下两种

    • 当前界面亮度
    • 系统亮度
    调节当前界面亮度

    退出当前界面时,亮度自动调节模式继续生效。

     /**
         * 设置当前界面亮度值
         *
         * @param activity
         * @param aimBrightness
         */
        public static void setCurrentScreenBrightness(Activity activity, @IntRange(from = 0, to = 255) int aimBrightness) {
            WindowManager.LayoutParams layoutParams = activity.getWindow().getAttributes();
            layoutParams.screenBrightness = Float.valueOf(aimBrightness / 255.0f);
            activity.getWindow().setAttributes(layoutParams);
        }
    
    调节系统亮度

    调节系统亮度时需要申请WRITE_SETTINGS权限( 注意6.0以后的权限申请

    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
    

    注意:只有为手动调节模式时,才能动态设置系统的亮度,所以需要提前对亮度模式进行操作,再进行亮度调节。

    通过Activity中的getContentResolver()方法得到ContentResolver实例,实现对系统的ContentProver的数据访问。
    Settings.System.SCREEN_BRIGHTNESS_MODE 获取当前屏幕亮度调节模式,其中

    • SCREEN_BRIGHTNESS_MODE_AUTOMATIC = 1 表示自动调节模式
    • SCREEN_BRIGHTNESS_MODE_MANUAL = 0 表示手动调节模式
      /**
         * 设置系统亮度
         *
         * @param activity
         * @param aimBrightness
         */
        public static void setSystemBrightness(Activity activity, @IntRange(from = 0, to = 255) int aimBrightness) {
            setToManualBrightness(activity);
            Uri uri = Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS);
            ContentResolver resolver = activity.getContentResolver();
            Settings.System.putInt(resolver, Settings.System.SCREEN_BRIGHTNESS, aimBrightness);
            activity.getContentResolver().notifyChange(uri, null);
        }
    
        /**
         * 设置为手动模式
         *
         * @return
         */
        public static void setToManualBrightness(@NonNull Context context) {
            ContentResolver resolver = context.getContentResolver();
            try {
                int brightMode = Settings.System.getInt(resolver, Settings.System.SCREEN_BRIGHTNESS_MODE);
                if (brightMode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
                    //设置为手动调节模式
                    Settings.System.putInt(resolver, Settings.System.SCREEN_BRIGHTNESS_MODE,
                            Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
                }
            } catch (Settings.SettingNotFoundException e) {
                e.printStackTrace();
            }
        }
    
    
    其他

    通过 Settings.System.SCREEN_BRIGHTNESS 获取当前屏幕亮度

     /**
         * 获取当前界面亮度值
         *
         * @param context
         * @return
         */
        public static int getCurrentScreenBrightness(@NonNull Context context) {
            ContentResolver resolver = context.getContentResolver();
            int currentBrightness = 0;
            try {
                currentBrightness = Settings.System.getInt(resolver, Settings.System.SCREEN_BRIGHTNESS);
            } catch (Settings.SettingNotFoundException e) {
                e.printStackTrace();
            }
            return currentBrightness;
        }
    

    参考文章

    相关文章

      网友评论

          本文标题:Android 界面亮度设置

          本文链接:https://www.haomeiwen.com/subject/lhlqzktx.html