屏幕亮度Brightness

源码部分

设置-显示-亮度百分比

packages\apps\Settings\src\com\android\settings\display\BrightnessLevelPreferenceController.javaprivate void updatedSummary(Preference preference) {if (preference != null) {preference.setSummary(NumberFormat.getPercentInstance().format(getCurrentBrightness()));}
}private double getCurrentBrightness() {final int value;if (isInVrMode()) {value = convertLinearToGamma(System.getInt(mContentResolver,System.SCREEN_BRIGHTNESS_FOR_VR, mMaxBrightness),mMinVrBrightness, mMaxVrBrightness);} else {value = convertLinearToGamma(Settings.System.getInt(mContentResolver,System.SCREEN_BRIGHTNESS, mMinBrightness),mMinBrightness, mMaxBrightness);}return getPercentage(value, 0, GAMMA_SPACE_MAX);
}private double getPercentage(double value, int min, int max) {if (value > max) {return 1.0;}if (value < min) {return 0.0;}return (value - min) / (max - min);
}

convertLinearToGamma()非线性计算转化

frameworks\base\packages\SettingsLib\src\com\android\settingslib\display\BrightnessUtils.javapublic static final int convertLinearToGamma(int val, int min, int max) {// For some reason, HLG normalizes to the range [0, 12] rather than [0, 1]final float normalizedVal = MathUtils.norm(min, max, val) * 12;final float ret;if (normalizedVal <= 1f) {ret = MathUtils.sqrt(normalizedVal) * R;} else {ret = A * MathUtils.log(normalizedVal - B) + C;}return Math.round(MathUtils.lerp(0, GAMMA_SPACE_MAX, ret));
}

BrightnessDialog及其控制

# BrightnessDialog
frameworks\base\packages\SystemUI\src\com\android\systemui\settings\BrightnessDialog.javafinal ImageView icon = findViewById(R.id.brightness_icon);
final ToggleSliderView slider = findViewById(R.id.brightness_slider);
mBrightnessController = new BrightnessController(this, icon, slider);
# BrightnessDialog控制
frameworks\base\packages\SystemUI\src\com\android\systemui\settings\BrightnessController.java@Override
public void onChanged(ToggleSlider toggleSlider, boolean tracking, boolean automatic,int value, boolean stopTracking) {updateIcon(mAutomatic);if (mExternalChange) return;if (mSliderAnimator != null) {mSliderAnimator.cancel();}final int min;final int max;final int metric;final String setting;if (mIsVrModeEnabled) {metric = MetricsEvent.ACTION_BRIGHTNESS_FOR_VR;min = mMinimumBacklightForVr;max = mMaximumBacklightForVr;setting = Settings.System.SCREEN_BRIGHTNESS_FOR_VR;} else {metric = mAutomatic? MetricsEvent.ACTION_BRIGHTNESS_AUTO: MetricsEvent.ACTION_BRIGHTNESS;min = mMinimumBacklight;max = mMaximumBacklight;setting = Settings.System.SCREEN_BRIGHTNESS;}final int val = convertGammaToLinear(value, min, max);if (stopTracking) {MetricsLogger.action(mContext, metric, val);}setBrightness(val);if (!tracking) {AsyncTask.execute(new Runnable() {public void run() {Settings.System.putIntForUser(mContext.getContentResolver(),setting, val, UserHandle.USER_CURRENT);}});}for (BrightnessStateChangeCallback cb : mChangeCallbacks) {cb.onBrightnessLevelChanged();}
}
private void updateSlider(int val, boolean inVrMode) {final int min;final int max;if (inVrMode) {min = mMinimumBacklightForVr;max = mMaximumBacklightForVr;} else {min = mMinimumBacklight;max = mMaximumBacklight;}if (val == convertGammaToLinear(mControl.getValue(), min, max)) {// If we have more resolution on the slider than we do in the actual setting, then// multiple slider positions will map to the same setting value. Thus, if we see a// setting value here that maps to the current slider position, we don't bother to// calculate the new slider position since it may differ and look like a brightness// change to the user even though it isn't one.return;}final int sliderVal = convertLinearToGamma(val, min, max);animateSliderTo(sliderVal);
}

亮度参数配置

默认亮度、自动亮度开关

frameworks\base\packages\SettingsProvider\res\values\defaults.xml<!-- Default screen brightness, from 0 to 255.  102 is 40%. -->
<integer name="def_screen_brightness">102</integer>
<bool name="def_screen_brightness_automatic_mode">false</bool>

最大亮度、最小亮度

frameworks\base\core\res\res\values\config.xml<!-- Minimum screen brightness setting allowed by the power manager.The user is forbidden from setting the brightness below this level. -->
<integer name="config_screenBrightnessSettingMinimum">10</integer><!-- Maximum screen brightness allowed by the power manager.The user is forbidden from setting the brightness above this level. -->
<integer name="config_screenBrightnessSettingMaximum">255</integer><!-- Default screen brightness setting.Must be in the range specified by minimum and maximum. -->
<integer name="config_screenBrightnessSettingDefault">102</integer>

adb命令控制亮度

查看亮度值

adb shell
$ cd /sys/class/leds/lcd-backlight
$ ls
$ brightness device max_brightness power subsystem trigger uevent
$ cat brightness
# 获取亮度是否为自动获取
C:\Users\Administrator>adb shell settings get system screen_brightness_mode
1
# 获取当前亮度值
C:\Users\Administrator>adb shell settings get system screen_brightness
30
# 更改亮度值(亮度值在0—255之间整数)
C:\Users\Administrator>adb shell settings put system screen_brightness 150

Android系统屏幕亮度调节Brightness相关推荐

  1. android系统屏幕亮度调节

    在$SDK/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java中修改,PhoneWi ...

  2. android+系统屏幕亮度,android 设置系统屏幕亮度

    android 设置系统屏幕亮度 权限 /** * 获得当前屏幕亮度的模式 * SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 为自动调节屏幕亮度 * SCREEN_BRIGHT ...

  3. 安卓屏幕亮度调节brightness

    这个包写在项目的modules中,参考gitHub上的example,代码块是自己改的ts写法,react新人,对hooks的理解很浅薄,欢迎各位大神指导 /*** Sample React Nati ...

  4. Android 修改系统屏幕亮度

    [toc] Android系统的亮度值取值范围在0~255,数据类型是int型. 下面分两步介绍: 介绍关于系统亮度的一些常用的方法 结合一个案例说说 一.系统亮度常用的方法 1. 获得当前屏幕亮度的 ...

  5. Android 屏幕亮度调节

    亮度调节: 1. 当前屏幕的亮度调节 2. 整个系统的亮度调节(需要申请系统权限) <uses-permission android:name="android.permission. ...

  6. Android 修改系统屏幕亮度及监听

    效果 修改系统屏幕亮度这种操作还是挺常见的,一般在多媒体开发中都多少会涉及到. emmm 效果图好像看不出来变化..不过不是很重要.. 操作拆解 上图中可以看到,分别有加减按钮和seekbar来控制亮 ...

  7. android 系统亮度,android 设置系统屏幕亮度

    android 设置系统屏幕亮度 权限 /** * 获得当前屏幕亮度的模式 * SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 为自动调节屏幕亮度 * SCREEN_BRIGHT ...

  8. Ubuntu16.04/16.10下缺失brightness设置,解决屏幕亮度调节的问题

    Ubuntu16.04/16.10下缺失brightness设置,解决屏幕亮度调节的问题 2017-07-20 10:09:22 HedWater 阅读数 8011更多 分类专栏: Linux 版权声 ...

  9. window7系统电脑屏幕亮度调节

    转自:微点阅读  https://www.weidianyuedu.com window7电脑怎么调亮度 导语:电脑屏幕的亮度调节,对预防眼疲劳.节省电源都有起到一定作用,那么在win7系统中,电脑屏 ...

  10. 笔记本win7系统屏幕亮度无法调节解决措施

    电脑屏幕亮度会影响到眼睛视力,我们都会将屏幕亮度调节至最佳状态,或者让屏幕亮度自动调节,在前面也与大家分享过一款屏幕亮度调节软件,通过该软件可以快速的设置屏幕亮度,最近有用户在笔记本win7系统中遇到 ...

最新文章

  1. h5现实手机管理系统_webflash,后台管理系统
  2. python输入三行数据_3行Python代码就能获取海量数据?
  3. 用Python实现磁盘IO操作全攻略,让数据流动起来!
  4. 网站左角悬浮图双十一抢红包活动代码
  5. MacBook配置快捷轻量的C/C++环境
  6. 机器学习中为什么需要梯度下降_机器学习 —— 多元梯度下降
  7. Vue之单文件组件的数据传递,axios请求数据及路由router
  8. 苹果手机速度慢_安卓手机用户也想体验一下MagSafe充电器?还是算了吧!
  9. Android Gradle 指定 Module 打包
  10. 适配器模式之迭代器模式
  11. gitlab推送企业微信几种方式汇总
  12. R语言错误的提示(中英文翻译)
  13. cin/cou效率太慢?试一下 ios::sync_with_stdio(false);
  14. 私密聊天加密聊天伪装界面聊天软件产品UI分析,qiaoyu5,feige5
  15. 安卓手机如何设置http代理?
  16. 初创的云平台公司是否需要设立运维岗
  17. 数据结构(C语言) 实验---图及其应用
  18. 整个canvas玩一玩,做一个简单的水印相机小程序
  19. Hibernate新官网下载源码及支持jar
  20. Elasticsearch CCR源码分析(补充)

热门文章

  1. 了解 InfoPath 2007十大优势
  2. amd r7 2700u linux,锐龙r72700u相当于 r72700u相当于什么水平?
  3. C语言实验——拍皮球 1184
  4. datagrid的deleteRow使用
  5. Android 网络请求框架浅解析
  6. Python面向对象编程-类和实例
  7. 不怕汗水与晃动的运动耳机推荐,六款专业的运动耳机
  8. Tensorflow 中文语音识别
  9. 进一步限塑!洲际酒店集团与联合利华达成合作,旗下酒店将提供大瓶装洗护用品替换一次性小包装 | 美通社头条...
  10. 计算机图形学一:变换矩阵-Transformation Matrices