Android亮度调整解析

本文详细介绍了Android亮度调整的要点,包括系统亮度和Activity亮度的调整,自动与手动模式的区别,以及亮度值的获取与范围。特别指出自动模式下亮度值的特殊性,并提醒开发者在调整Activity亮度后,系统亮度设置可能在该Activity内失效。同时,分享了如何监听系统亮度变化,以及在Android 6.0及以上系统中动态申请权限的方法,强调防止内存泄露的重要性。
摘要由CSDN通过智能技术生成

干货总结,Android亮度调整有一下一些知识点需要注意:

1、Android亮度调整,包括调整系统亮度和调整指定Activity亮度。

2、Android系统亮度模式有两种,自动模式和手动模式。

3、自动模式下和手动模式下获取系统亮度值的方式不一样,具体请看代码(谢谢老大指点,差点以为没办法获取自动模式下的亮度)。

4、系统亮度值的区间为[0, 255]。需要注意的是,自动亮度模式下,直接获取到的系统亮度值区间为[-1,1]。

5、这一点可能很多人没注意,调整过Activity亮度之后,系统亮度调整在当前Activity中会失效。

6、系统亮度变化值,可以通过监听系统属性值变化获得,具体看代码。

7、Android 6.0 及以上系统,对系统变量相关操作,需要硬编码动态申请权限。

8、动态监听系统亮度变化,注意防止内存泄露。


好了,干货,请看代码,看代码,看代码


一、工具类BrightnessUtils

public class BrightnessUtils {
 
    private static final String TAG = BrightnessUtils.class.getSimpleName();
    /**
     * 判断是否开启了自动亮度调节
     */
    public static boolean isAutoBrightness(Activity activity) {
        boolean automicBrightness = false;
        try {
            automicBrightness = Settings.System.getInt(activity.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
        } catch (Settings.SettingNotFoundException e){
            e.printStackTrace();
        }
        return automicBrightness;
    }

    /**
     * 获取屏幕的亮度
     */
    public static int getScreenBrightness(Activity activity) {
//        int nowBrightnessValue = 0;
//        ContentResolver resolver = activity.getContentResolver();
//        try {
//            nowBrightnessValue = android.provider.Settings.System.getInt(resolver, Settings.System.SCREEN_BRIGHTNESS);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return nowBrightnessValue;

        if(isAutoBrightness(activity)){
            return getAutoScreenBrightness(activity);
        }else{
            return getManualScreenBrightness(activity);
        }
    }

    /**
     * 获取手动模式下的屏幕亮度
     */
    public static int getManualScreenBrightness(Activity activity) {
        int nowBrightnessValue = 0;
        ContentResolver resolver = activity.getContentResolver();
        try {
            nowBrightnessValue = android.provider.Settings.System.getInt(resolver, Settings.System.SCREEN_BRIGHTNESS);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return nowBrightnessValue;
    }

    /**
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值