android调节系统亮度的方法
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调节系统亮度的方法相关推荐
- android屏幕亮度权限,安卓支持将屏幕亮度设为0的方法。
前言,本文通过修改framework代码实现,单纯在app上是无法做到的,此外本文修改的是安卓9.0源码. 1.安卓app中通过代码修改屏幕亮度的方法. 可能需要的权限: 设置屏幕亮度: /** * ...
- android 激发亮度_如何使用有用的小脚本激发可怕的终端
android 激发亮度 by Vijayabharathi Balasubramanian 通过Vijayabharathi Balasubramanian 如何使用有用的小脚本激发可怕的终端 (H ...
- Android屏幕亮度适配
Android屏幕亮度适配 前言 最近由于接手了视频项目中的亮度调整功能,抽空总结了下Android亮度调节的方式,以及在如今系统定制化的情况下会遇到的坑. 亮度调节模式 查看官网说明,可以看到,目前 ...
- android源码下载方法 批量下载 基于windows os
安装win版的Gitbash, 在这里 http://msysgit.googlecode.com/files/Git-1.6.0.2-preview20080923.exe. 选择默认安装路径(否则 ...
- android屏幕密度高度,Android获取常用辅助方法(获取屏幕高度、宽度、密度、通知栏高度、截图)...
我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现.下面就分享一下Android中常用的一些辅助方法: 获取屏幕高度: /** * 获得屏幕高度 * @para ...
- android studio 如何提示方法的用法
方法/步骤1在 Eclipse中鼠标放上去就可以提示方法的用法,实际上Android Studio也可以设置的.如图 Preferences > Editor >Generan> S ...
- Android滑动冲突解决方法
Android滑动冲突解决方法 滑动冲突 首先讲解一下什么是滑动冲突.当你需要在一个ScrollView中嵌套使用ListView或者RecyclerView的时候你会发现只有ScrollView能够 ...
- android TextView 的setTextSize方法的使用
今天,简单讲讲android的TextView 的setTextSize方法的使用. 之前,我看代码时发现了这个函数,于是在网上查询了这个函数的用法,发现之前自己了解的不够全面,所以这里记录一下. 看 ...
- android颜色值的表示方法android:background=#FFFFFFFF的意思
android颜色值的表示方法 android:background="#FFFFFFFF"的意思 Android中的颜色值是通过红(Red).绿(Green).蓝(Blue)三原 ...
最新文章
- Spring--Redis入门集成配置
- sql a 表 若包含b表 则a 表 列显示_几道常见的SQL面试题,看你能答对几道?
- 85JS原生:数组4种去重方法
- Bw树:新硬件平台的B树(内存数据库中的b树索引)
- Java-NIO(三):直接缓冲区与非直接缓冲区
- 个人简介页面如何设计?集设网优秀案例给你灵感
- Java系统中如何拆分同步和异步
- 解决zabbix图形乱码
- erlang随机数问题
- 微信公众号新手运营指南——公众号后台常用功能介绍
- 使用APP inventor来制作一个属于自己的蓝牙串口软件
- 异常解决 java.lang.UnsupportedOperationException: Required method destroyItem was not overridden
- php神盾解密,解析php混淆加密解密的手段,如 phpjm,phpdp神盾,php威盾
- windows 7 开机启动提示bcd错误修复方法
- 程序员夏天穿格子衫,那么冬天穿什么?
- 【SpringMVC】DispatcherServlet重要组件之一MultipartResolver
- 深度分析NandFlash—硬件实现机制
- 基于RFID技术下的化工厂定位系统,包含化工厂人员定位解决方案-新导智能
- [附源码]SSM计算机毕业设计校园新闻管理系统JAVA
- c语言输出字母abcd,有字母ABCD,请用C语言编写程序,输出由该四个字母组成的字符串.要求如下:...