Android的屏幕亮度好像在2.1+的时候提供了自动调节的功能,所以,如果当开启自动调节功能的时候, 我们进行调节好像是没有一点作用的,这点让我很是无语,结果只有进行判断,看是否开启了屏幕亮度的自动调节功能。

/**
     * 判断是否开启了自动亮度调节
     *
     * @param aContext
     * @return
     */
    public static boolean isAutoBrightness(ContentResolver aContentResolver) {
        boolean automicBrightness = false;
        try {
            automicBrightness = Settings.System.getInt(aContentResolver,
                    Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
        } catch (SettingNotFoundException e) {
            e.printStackTrace();
        }
        return automicBrightness;
    }

然后就是要觉得当前的亮度了,这个就比较纠结了:

/**
     * 获取屏幕的亮度
     *
     * @param activity
     * @return
     */
    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;
    }

那如何修改屏幕的亮度呢?

/**
     * 设置亮度
     *
     * @param activity
     * @param brightness
     */
    public static void setBrightness(Activity activity, int brightness) {
        // Settings.System.putInt(activity.getContentResolver(),
        // Settings.System.SCREEN_BRIGHTNESS_MODE,
        // Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
        WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
        lp.screenBrightness = Float.valueOf(brightness) * (1f / 255f);
        activity.getWindow().setAttributes(lp);

}

那么,能设置了,但是为什么还是会出现,设置了,没反映呢?

嘿嘿,那是因为,开启了自动调节功能了,那如何关闭呢?这才是最重要的:

/**
     * 停止自动亮度调节
     *
     * @param activity
     */
    public static void stopAutoBrightness(Activity activity) {
        Settings.System.putInt(activity.getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS_MODE,
                Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
    }

能开启,那自然应该能关闭了哟哟,那怎么关闭呢?很简单的:

/**
     * 开启亮度自动调节
     *
     * @param activity
     */
    public static void startAutoBrightness(Activity activity) {
        Settings.System.putInt(activity.getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS_MODE,
                Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
    }

至此,应该说操作亮度的差不多都有了,结束!

哎,本来认为是应该结束了,但是悲剧得是,既然像刚才那样设置的话,只能在当前的activity中有作用,一段退出的时候,会发现毫无作用,悲剧,原来是忘记了保存了。汗!

/**
     * 保存亮度设置状态
     *
     * @param resolver
     * @param brightness
     */
    public static void saveBrightness(ContentResolver resolver, int brightness) {
        Uri uri = android.provider.Settings.System
                .getUriFor("screen_brightness");
        android.provider.Settings.System.putInt(resolver, "screen_brightness",
                brightness);
        // resolver.registerContentObserver(uri, true, myContentObserver);
        resolver.notifyChange(uri, null);
    }

YY滴,这回该差不多了吧,汗!

ANDROID 背光调节相关推荐

  1. android 9.0背光调节流程

    1.背光服务框架 如下图是背光框架层图 2.UML时序图 这里主要标出的是各个服务或者框架层之间连接的api,中间会省略一些调用流程. 如下图,PowerManagerService会监听Settin ...

  2. Android原生调节屏幕背光流程

    Android 5.1调节背光流程 版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. https://mp.csdn.net/mdeditor/ ...

  3. android的背光调节

    android的背光调节是利用pwm波形进行调节的,源码在 drivers\video\backlight\pwm_bl.c

  4. 和菜鸟一起学android4.0.3源码之lcd屏幕背光调节

    周六的中午还是依旧来了公司,本来也没有打算来的,既然来了,那就把上次遗留下来的一些问题给解决吧,把android下的pwm调lcd背光给总结下吧.关于android的背光,是用pwm波来控制的,通过占 ...

  5. android 背光控制,Android P背光策略分析(一)

    本文主要讲述android 9.0系统对背光的处理,文章分为三点讲述: 1.背光的初始化 2.手动背光调节 3.自动背光调节 一.初始化 1.1 服务的启动(DisplayManagerService ...

  6. Android背光系统实现

    (一)Lights应用层 SystemUI--系统应用,其主要功能:状态栏信息显示.通知面板.截图/壁纸/屏保服务等: 代码: packages/apps/Settings/src/com/andro ...

  7. 下拉菜单中自动亮度调节P 上背光调节

    P 上背光调节: https://blog.csdn.net/FightFightFight/article/details/85797336 frameworks\base\packages\Sys ...

  8. android 背光驱动

    --作者: 赖玉平(peter lai)aulyp@163.com ANDROID里,自带的背光亮度调节,会调用哪个接口? 会调用 /sys/class/leds/lcd-backlight/brig ...

  9. Android7.0背光调节

    涉及类: 一.简述 Android屏幕背光属于Android系统中display模块,display是从Power中分出来的,所以和Power有着密不可分的关系.背光调节中,又可以分为手动调节和自动调 ...

最新文章

  1. linux vg 镜像,Linux下载_Linux系统各种版本ISO镜像下载(redhat,centos,oracle,ubuntu,openSUSE)...
  2. ASP.NET Core on K8S深入学习(7)Dashboard知多少
  3. 1003 阶乘后面0的数量
  4. 点击网页跟踪php代码的工具,使用ltrace工具跟踪PHP库函数调用的方法
  5. 谈谈Groovy闭包
  6. SSH pts 虚拟终端
  7. C#.Net工作笔记005---c#中list合并去重_以及单纯合并_值类型list去重
  8. 这几款 JVM 故障诊断处理工具,你还不会?
  9. c语言命令行参数怎么输入_C语言程序设计——这个函数原型你看懂了吗
  10. SpringBoot+MyBatis启动报错java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
  11. [转]可爱的 Python:: 使用 itertools 模块中的组合函数
  12. hive 窗口函数 应用场景与实战详解
  13. 仿真的硬件选型原则:CPU
  14. 软考计算机硬件工程师考试大纲,2016年软考信息安全工程师考试大纲
  15. STM32单片机课程自学知识点整理 - 指南版
  16. Leetcode 781 森林中的兔子
  17. Crystal Reports(水晶报表)安装及拉(PULL)模式/推(PUSH)模式的使用
  18. 计算机画画教程,【推荐】初学者电脑画画教程
  19. c语言 文件加密与解密
  20. [ Linux RK ] 更改网卡名字|CSDN创作打卡

热门文章

  1. tyvj p1004 滑雪
  2. 高校教师工资管理系统java_基于jsp+Spring+mybatis的SSM简单院校教师工资管理系统...
  3. APD保护电路优化设计
  4. java.lang.NoClassDefFoundError:无法初始化类XXX
  5. C语言输入若干个学生成绩,输出平均成绩和低于60分的学生成绩
  6. vb中randomize和rnd函数的使用区别
  7. 完整学习笔记之Android基础(详版)
  8. 赠书福利|说出来你可能不信,这本书或许可以「预测」未来
  9. c语言中不正确的浮点型常量,c语言中float a=1;对吗?,c语言的问题。float a=1,*b=a,*c=...
  10. 大数据主要有什么用,入行大数据,需要学哪个专业?