android调节系统亮度的方法

Android系统允许APP直接调节当前屏幕亮度,但是却不能直接调节系统亮度,这需要询问用户和申请权限,比较麻烦。不过并不是没有解决办法,我们可以修改框架层的代码绕开这个步骤。这里提供一种使用广播的方式直接调节系统亮度的办法。

思路:
在应用层设置一个广播,把我们改变的亮度值发送出去。在框架层设置一个接收器,接收应用层发送过来的亮度值,然后通过调用设置亮度的方法改变系统亮度,这样我们就直接的改变系统亮度了,无需做其他工作。

--------------------实现------------------------

第一步:
找到控制亮度的frameworks/base/packages/SystemUI/src/com/android/systemui/settings/BrightnessController.java文件,然后注册一个接收器,这里放在BrightnessController类的构造方法里,能通过上下文context调用接收器,在创建对象时注册接收器。

 public BrightnessController(Context context, ToggleSlider control) {mContext = context;……//注册接收器context.registerReceiver(brightnessReceiver, new IntentFilter("com.my.setBrightness"));}

第二步
在BrightnessController类里,添加设置和保存亮度的方法。

 /***设置亮度值和保存亮度状态*/private void setBackBrightness(Context context,int brightnessValues){Log.i(TAG,"setBackBrightness");setBrightness(brightnessValues);saveBrightness(context, brightnessValues);}/*** 保存亮度设置状态,然后退出也能保持设置状态*/private void saveBrightness(Context context, int brightness){Log.i(TAG,"saveBrightness");ContentResolver resolver = context.getContentResolver();Uri uri = android.provider.Settings.System.getUriFor("screen_brightness");Settings.System.putInt(resolver, "screen_brightness", brightness);resolver.notifyChange(uri, null);}

其中setBrightness(brightnessValues)方法是调用系统原有的设置亮度的方法。

private void setBrightness(int brightness) {mDisplayManager.setTemporaryBrightness(brightness);}

第三步
在BrightnessController类里,通过广播接收亮度值和调节亮度

/***使用广播接收器接收上层发送过来的数据作为调节系统亮度的值*/private final BroadcastReceiver brightnessReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {setBackBrightness(context,intent.getIntExtra("brightnessValues",0));}};

第四步
在应用层,也就是APP的活动里发送广播,注意广播和接收器的action,发送和接收数据方法的key必须要一致。

//发送广播
private void sendBroadcast(int values){Intent intent = new Intent("com.my.setBrightness");intent.putExtra("brightnessValues",values);sendBroadcast(intent);}

android调节当前屏幕亮度的方法:
https://blog.csdn.net/jppipai/article/details/121028574?spm=1001.2014.3001.5501

android调节系统亮度的方法相关推荐

  1. android屏幕亮度权限,安卓支持将屏幕亮度设为0的方法。

    前言,本文通过修改framework代码实现,单纯在app上是无法做到的,此外本文修改的是安卓9.0源码. 1.安卓app中通过代码修改屏幕亮度的方法. 可能需要的权限: 设置屏幕亮度: /** * ...

  2. android 激发亮度_如何使用有用的小脚本激发可怕的终端

    android 激发亮度 by Vijayabharathi Balasubramanian 通过Vijayabharathi Balasubramanian 如何使用有用的小脚本激发可怕的终端 (H ...

  3. Android屏幕亮度适配

    Android屏幕亮度适配 前言 最近由于接手了视频项目中的亮度调整功能,抽空总结了下Android亮度调节的方式,以及在如今系统定制化的情况下会遇到的坑. 亮度调节模式 查看官网说明,可以看到,目前 ...

  4. android源码下载方法 批量下载 基于windows os

    安装win版的Gitbash, 在这里 http://msysgit.googlecode.com/files/Git-1.6.0.2-preview20080923.exe. 选择默认安装路径(否则 ...

  5. android屏幕密度高度,Android获取常用辅助方法(获取屏幕高度、宽度、密度、通知栏高度、截图)...

    我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现.下面就分享一下Android中常用的一些辅助方法: 获取屏幕高度: /** * 获得屏幕高度 * @para ...

  6. android studio 如何提示方法的用法

    方法/步骤1在 Eclipse中鼠标放上去就可以提示方法的用法,实际上Android Studio也可以设置的.如图 Preferences > Editor >Generan> S ...

  7. Android滑动冲突解决方法

    Android滑动冲突解决方法 滑动冲突 首先讲解一下什么是滑动冲突.当你需要在一个ScrollView中嵌套使用ListView或者RecyclerView的时候你会发现只有ScrollView能够 ...

  8. android TextView 的setTextSize方法的使用

    今天,简单讲讲android的TextView 的setTextSize方法的使用. 之前,我看代码时发现了这个函数,于是在网上查询了这个函数的用法,发现之前自己了解的不够全面,所以这里记录一下. 看 ...

  9. android颜色值的表示方法android:background=#FFFFFFFF的意思

    android颜色值的表示方法 android:background="#FFFFFFFF"的意思 Android中的颜色值是通过红(Red).绿(Green).蓝(Blue)三原 ...

最新文章

  1. Spring--Redis入门集成配置
  2. sql a 表 若包含b表 则a 表 列显示_几道常见的SQL面试题,看你能答对几道?
  3. 85JS原生:数组4种去重方法
  4. Bw树:新硬件平台的B树(内存数据库中的b树索引)
  5. Java-NIO(三):直接缓冲区与非直接缓冲区
  6. 个人简介页面如何设计?集设网优秀案例给你灵感
  7. Java系统中如何拆分同步和异步
  8. 解决zabbix图形乱码
  9. erlang随机数问题
  10. 微信公众号新手运营指南——公众号后台常用功能介绍
  11. 使用APP inventor来制作一个属于自己的蓝牙串口软件
  12. 异常解决 java.lang.UnsupportedOperationException: Required method destroyItem was not overridden
  13. php神盾解密,解析php混淆加密解密的手段,如 phpjm,phpdp神盾,php威盾
  14. windows 7 开机启动提示bcd错误修复方法
  15. 程序员夏天穿格子衫,那么冬天穿什么?
  16. 【SpringMVC】DispatcherServlet重要组件之一MultipartResolver
  17. 深度分析NandFlash—硬件实现机制
  18. 基于RFID技术下的化工厂定位系统,包含化工厂人员定位解决方案-新导智能
  19. [附源码]SSM计算机毕业设计校园新闻管理系统JAVA
  20. c语言输出字母abcd,有字母ABCD,请用C语言编写程序,输出由该四个字母组成的字符串.要求如下:...

热门文章

  1. C#switch case语句
  2. 如何使用facenet详解_facenet在比赛中的应用
  3. conda切换清华源
  4. 如何在程序中获得其他程序的 图标?
  5. 8583报文的使用和解析
  6. 大数据毕设 - 深度学习安全帽佩戴检测系统(python OpenCV yolov5)
  7. 天天说流程?你真的会画吗?一文掌握如何绘制高效的流程图
  8. 用turtle画正方形螺旋线(条件)
  9. 哪款无线蓝牙运动耳机比较好、口碑最好的蓝牙运动耳机
  10. [Unity教程]Unity官方教程资源一览及其说明