admin管理员组文章数量:1516870
公司有个需求,弹出对话框,设置当前屏幕亮度是最大亮度的90%,对话框消失,恢复到原来亮度。有一种特殊情况,就是在弹出对话框的界面打开之后,用户手动调节了亮度,需要在界面中监听亮度变化
工具类代码:
publicclassScreenUtil{/**
* 判断是否开启了自动亮度调节
*/publicstaticbooleanisAutoBrightness(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
*/publicstaticintgetScreenBrightness(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
*/publicstaticvoidsetBrightness(Activity activity,int brightness){
WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
lp.screenBrightness = Float.valueOf(brightness)*(1f/255f);
activity.getWindow().setAttributes(lp);}/**
* 停止自动亮度调节
*
* @param activity
*/publicstaticvoidstopAutoBrightness(Activity activity){
Settings.System.putInt(activity.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE,
Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);}/**
* 开启亮度自动调节
*
* @param activity
*/publicstaticvoidstartAutoBrightness(Activity activity){
Settings.System.putInt(activity.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE,
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);}/**
* 保存亮度设置状态
* 不保存,只能在当前的activity中有作用
* @param resolver
* @param brightness
*/publicstaticvoidsaveBrightness(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);}}对话框中相应的代码
privateint currentBrightness=0;//获得当前屏幕亮度privateboolean isAutoBrightness=false;//记录屏幕是否开启自动调节.......//对话框显示的时候,设置亮度为最大亮度的90%setBrightness90();this.setOnDismissListener(newOnDismissListener(){@OverridepublicvoidonDismiss(){//对话框消失的时候,还原亮度setDefaultBrightness();}});....../**
* 设置屏幕亮度为最大亮度的90%
*/privatevoidsetBrightness90(){
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 就设置最大亮度是165
brightness=165;}else{//其余大部分手机最大亮度是255
brightness=255;}
ScreenUtil.setBrightness(mContext,(int)(brightness*0.9));}/**
* 还原屏幕亮度
*/privatevoidsetDefaultBrightness(){if(isAutoBrightness){
ScreenUtil.startAutoBrightness(mContext);}
ScreenUtil.setBrightness(mContext, currentBrightness);}publicvoidsetCurrentBrightnessAndAutoBrightness(int currentBrightness,boolean autoBrightness){this.currentBrightness = currentBrightness;
isAutoBrightness = autoBrightness;}弹出对话框的界面
/**
* 监听屏幕亮度变化
*/private ContentObserver mBrightnessObserver =newContentObserver(newHandler()){@OverridepublicvoidonChange(boolean selfChange){if(!qrCodeWindow.isShowing()){//不显示对话框,根据系统设置调节屏幕亮度
ScreenUtil.setBrightness(IDCardOneCodeActivity.this,ScreenUtil.getScreenBrightness(IDCardOneCodeActivity.this));}else{//显示对话框,不根据系统调节变化亮度,先设置当前亮度和是否自动调节亮度配置,等对话框消失以后,设置亮度为调整后的亮度
qrCodeWindow.setCurrentBrightnessAndAutoBrightness(ScreenUtil.getScreenBrightness(IDCardOneCodeActivity.this),
ScreenUtil.isAutoBrightness(IDCardOneCodeActivity.this));}}};@OverrideprotectedvoidonResume(){super.onResume();getContentResolver().registerContentObserver(
Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS),true,
mBrightnessObserver);}@OverrideprotectedvoidonDestroy(){super.onDestroy();getContentResolver().unregisterContentObserver(
mBrightnessObserver);}版权声明:本文标题:Adobe Flash Player亮度调教指南:从入门到精通 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/biancheng/1773233433a3277127.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论