设置屏幕亮度,并且监听屏幕亮度变化
公司有个需求,弹出对话框,设置当前屏幕亮度是最大亮度的90%,对话框消失,恢复到原来亮度。有一种特殊情况,就是在弹出对话框的界面打开之后,用户手动调节了亮度,需要在界面中监听亮度变化
工具类代码:
public class ScreenUtil
{/*** 判断是否开启了自动亮度调节*/public static boolean isAutoBrightness(Context context){ContentResolver resolver = context.getContentResolver();boolean automicBrightness = false;try{automicBrightness = Settings.System.getInt(resolver, Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;}catch (Settings.SettingNotFoundException e){e.printStackTrace();}return automicBrightness;}/*** 获取屏幕的亮度** @param activity* @return*/public static int getScreenBrightness(Activity activity) {int nowBrightnessValue = 0;ContentResolver resolver = activity.getContentResolver();try {nowBrightnessValue = 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) {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 = Settings.System.getUriFor("screen_brightness");Settings.System.putInt(resolver, "screen_brightness",brightness);// resolver.registerContentObserver(uri, true, myContentObserver);resolver.notifyChange(uri, null);}}
对话框中相应的代码
private int currentBrightness=0;//获得当前屏幕亮度private boolean isAutoBrightness=false;//记录屏幕是否开启自动调节.......
//对话框显示的时候,设置亮度为最大亮度的90%setBrightness90();this.setOnDismissListener(new OnDismissListener(){@Overridepublic void onDismiss(){//对话框消失的时候,还原亮度setDefaultBrightness();}});
....../*** 设置屏幕亮度为最大亮度的90%*/private void setBrightness90(){currentBrightness = ScreenUtil.getScreenBrightness(mContext);isAutoBrightness = ScreenUtil.isAutoBrightness(mContext);if(isAutoBrightness){ScreenUtil.stopAutoBrightness(mContext);}String model = Build.MODEL;int brightness =0;if ("ALP-AL00".equals(model)){//如果是华为Mate 10 就设置最大亮度是165brightness=165;}else {//其余大部分手机最大亮度是255brightness=255;}ScreenUtil.setBrightness(mContext, (int) (brightness*0.9));}/*** 还原屏幕亮度*/private void setDefaultBrightness(){if(isAutoBrightness){ScreenUtil.startAutoBrightness(mContext);}ScreenUtil.setBrightness(mContext, currentBrightness);}public void setCurrentBrightnessAndAutoBrightness(int currentBrightness,boolean autoBrightness){this.currentBrightness = currentBrightness;isAutoBrightness = autoBrightness;}
弹出对话框的界面
/*** 监听屏幕亮度变化*/private ContentObserver mBrightnessObserver = new ContentObserver(new Handler()) {@Overridepublic void onChange(boolean selfChange) {if(!qrCodeWindow.isShowing()){//不显示对话框,根据系统设置调节屏幕亮度ScreenUtil.setBrightness(IDCardOneCodeActivity.this,ScreenUtil.getScreenBrightness(IDCardOneCodeActivity.this));}else{//显示对话框,不根据系统调节变化亮度,先设置当前亮度和是否自动调节亮度配置,等对话框消失以后,设置亮度为调整后的亮度qrCodeWindow.setCurrentBrightnessAndAutoBrightness(ScreenUtil.getScreenBrightness(IDCardOneCodeActivity.this),ScreenUtil.isAutoBrightness(IDCardOneCodeActivity.this));}}};@Overrideprotected void onResume(){super.onResume();getContentResolver().registerContentObserver(Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS), true,mBrightnessObserver);}@Overrideprotected void onDestroy(){super.onDestroy();getContentResolver().unregisterContentObserver(mBrightnessObserver);}
设置屏幕亮度,并且监听屏幕亮度变化相关推荐
- Android 修改系统屏幕亮度及监听
效果 修改系统屏幕亮度这种操作还是挺常见的,一般在多媒体开发中都多少会涉及到. emmm 效果图好像看不出来变化..不过不是很重要.. 操作拆解 上图中可以看到,分别有加减按钮和seekbar来控制亮 ...
- js 监听屏幕转动orientationchange 获取横屏状态window.orientation 监听屏幕旋转完成 苹果手机屏幕多次旋转之后window获取的尺寸不对
监听屏幕转动 // 监听屏幕转动 window.addEventListener('orientationchange',function(){// 这个时候屏幕的尺寸数据还没有变化var orien ...
- android 屏幕方向监听,Android如何监听屏幕旋转
背景 关于个人,前段时间由于业务太忙,所以一直没有来得及思考并且沉淀点东西:同时组内一个个都在业务上能有自己的思考和总结,在这样的氛围下,不由自主的驱使周末开始写点东西,希望自己除了日常忙于业务,可以 ...
- Flutter中获取监听屏幕方向、锁定屏幕方向
文章目录 获取当前屏幕的方向 实时监听屏幕方向的改变 锁定屏幕方向 锁定方向,禁止App随着设备的方向改变 锁定启动图的方向 默认效果 Android配置 IOS配置 动态改变Flutter的屏幕方向 ...
- react 监听屏幕旋转的判断
1.例子使用场景 屏幕旋转后 重新设置悬浮球的位置 this.getDirection() window.addEventListener('resize', this.getDirection) / ...
- android 手机监听屏幕锁屏,用户解锁
用到的场景很多,自己发挥 ,废话不多说直接上代码: private classScreenBroadcastReceiverextendsBroadcastReceiver{privateString ...
- 监听屏幕 android.intent.action.USER_PRESENT
在做解锁监听程序时,一开始采用监听屏幕SCREEN_ON和SCREEN_OFF这两个action. 但奇怪的是,这两个action只能通过代码动态的形式注册,才能被监听到,使用AndroidManif ...
- android 触摸监听重写_Android监听屏幕的滑动事件
实现监听屏幕上下左右滑动事件 前段时间为了实现这个功能在网上找了很多教程,发现很多教程都是很大的篇幅,对于像我这种一点都不了解的人GestureListener的人来说可能很难理解,动不动就是几百行代 ...
- android 监听屏幕是否锁屏
今天,简单讲讲如何监听手机屏幕是否锁屏. 实现方法:1)通过BroadcastReceiver接收广播Intent.ACTION_SCREEN_ON和Intent.ACTION_SCREEN_OFF可 ...
- touch事件总结,监听屏幕点击事件
Touch对象--MDN TouchEvent--MDN 一.问题背景 click事件在移动端的300毫秒延迟问题 当需要监听诸如左滑.右滑之类的事件 二.知识点概括 1. 事件类型 touchsta ...
最新文章
- pytorch 获取模型参数_剑指TensorFlow,PyTorch Hub官方模型库一行代码复现主流模型...
- 单网段DHCP服务器的架设
- 实验Matlab数值运算,MATLAB数值实验一(数据的插值运算及其应用完整版
- 开源团队协作 TMS 2.4.0 版本发布
- JS中调用本地Winform程序并传递参数
- Cambridge center for digital innovation at judge business school
- Sqoop 1.99.3 hadoop-1.2.1 安装配置
- 给opentaps添加定制的表和字段
- 小米出招黑科技,5S或成全球首款”Under glass“指纹识别手机
- 10_隐马尔科夫模型HMM2_统计学习方法
- 计算机编码中进制的区别,计算机中的进制和编码(转载)
- 从U盘安装windows/linux操作系统
- python3编码(encode,decode)
- 基于matlab深度学习的水果图像识别算法
- vue注册了却没有使用的错误: component has been registered but not used
- 90后HTTP 的爱情故事
- 复旦大学计算机学院教师简介,复旦大学计算机科学技术学院导师教师师资介绍简介-危辉...
- leetcode 169(简单)题解:给定一个大小为 *n* 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 *⌊ n/2 ⌋* 的元素。
- framework初始化错误,面试大厂应该注意哪些问题?隔壁都馋哭了
- cuda8.0+ubuntu14.04+GTX970驱动 安装
热门文章
- 树莓派4B安装配置LibreELEC并连接到三星电视
- js采集图片批量下载
- 什么是ISBN码及如何制作
- mysql数据库自动备份软件SQLBackupAndFTP简介(图文)
- PS证件照更改背景颜色
- 苹果电脑语音听写的问题(电话中间加-,或者想要大写应该怎么设置呢)
- sdk寄存器地址linux,S32K SDK使用详解之PinSettings组件配置与使用详解(S32K1xx PORT 和GPIO模块)...
- 全自动高清录播服务器,全自动高清录播服务器 高清录播系统
- Hi3519av100 编译kernel
- 游戏或制图用的计算机配置单,自己组装电脑配置单6000元左右适合PS制图与吃鸡游戏的电脑配置推荐...