Android 12 设置默认的屏幕亮度百分比

1、安卓每个版本的更新, 其核心代码也会随之更新,本次为Android 12 版本默认屏幕亮度的修改。

其中涉及的核心代码主要有:

packages\apps\Settings\src\com\android\settings\display\BrightnessLevelPreferenceController.java
frameworks\base\services\core\java\com\android\server\power\PowerManagerService.java
frameworks/base/res/res/values/config.xml

2、设置默认亮度的主要方法代码

在BrightnessLevelPreferenceController中处理:

 public class BrightnessLevelPreferenceController extends AbstractPreferenceController implementsPreferenceControllerMixin, LifecycleObserver, OnStart, OnStop {private ContentObserver mBrightnessObserver =new ContentObserver(new Handler(Looper.getMainLooper())) {@Overridepublic void onChange(boolean selfChange) {updatedSummary(mPreference);}};public BrightnessLevelPreferenceController(Context context, Lifecycle lifecycle) {super(context);if (lifecycle != null) {lifecycle.addObserver(this);}PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);mMinBrightness = powerManager.getBrightnessConstraint(PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM);mMaxBrightness = powerManager.getBrightnessConstraint(PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM);mMinVrBrightness = powerManager.getBrightnessConstraint(PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM_VR);mMaxVrBrightness = powerManager.getBrightnessConstraint(PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM_VR);mContentResolver = mContext.getContentResolver();mDefaultBacklight = powerManager.getBrightnessConstraint(PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_DEFAULT);}

在PowerManager得到相应的值:

  private void updatedSummary(Preference preference) {if (preference != null) {preference.setSummary(NumberFormat.getPercentInstance().format(getCurrentBrightness()));}}private double getCurrentBrightness() {final int value;if (isInVrMode()) {value = convertLinearToGammaFloat(System.getFloat(mContentResolver,System.SCREEN_BRIGHTNESS_FOR_VR_FLOAT, mMaxBrightness),mMinVrBrightness, mMaxVrBrightness);} else {value = convertLinearToGammaFloat(Settings.System.getFloat(mContentResolver,System.SCREEN_BRIGHTNESS_FLOAT, mDefaultBacklight),mMinBrightness, mMaxBrightness);}return getPercentage(value, GAMMA_SPACE_MIN, 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);}

public final class PowerManagerService extends SystemServiceimplements Watchdog.Monitor {@VisibleForTestingPowerManagerService(Context context, Injector injector) {super(context);mContext = context;......// Save brightness values:// Get float values from config.// Store float if valid// Otherwise, get int values and convert to float and then store.final float min = mContext.getResources().getFloat(com.android.internal.R.dimen.config_screenBrightnessSettingMinimumFloat);final float max = mContext.getResources().getFloat(com.android.internal.R.dimen.config_screenBrightnessSettingMaximumFloat);final float def = mContext.getResources().getFloat(com.android.internal.R.dimen.config_screenBrightnessSettingDefaultFloat);final float doze = mContext.getResources().getFloat(com.android.internal.R.dimen.config_screenBrightnessDozeFloat);final float dim = mContext.getResources().getFloat(com.android.internal.R.dimen.config_screenBrightnessDimFloat);if (min == INVALID_BRIGHTNESS_IN_CONFIG || max == INVALID_BRIGHTNESS_IN_CONFIG|| def == INVALID_BRIGHTNESS_IN_CONFIG) {mScreenBrightnessMinimum = BrightnessSynchronizer.brightnessIntToFloat(mContext.getResources().getInteger(com.android.internal.R.integer.config_screenBrightnessSettingMinimum),PowerManager.BRIGHTNESS_OFF + 1, PowerManager.BRIGHTNESS_ON,PowerManager.BRIGHTNESS_MIN, PowerManager.BRIGHTNESS_MAX);mScreenBrightnessMaximum = BrightnessSynchronizer.brightnessIntToFloat(mContext.getResources().getInteger(com.android.internal.R.integer.config_screenBrightnessSettingMaximum),PowerManager.BRIGHTNESS_OFF + 1, PowerManager.BRIGHTNESS_ON,PowerManager.BRIGHTNESS_MIN, PowerManager.BRIGHTNESS_MAX);mScreenBrightnessDefault = BrightnessSynchronizer.brightnessIntToFloat(mContext.getResources().getInteger(com.android.internal.R.integer.config_screenBrightnessSettingDefault),PowerManager.BRIGHTNESS_OFF + 1, PowerManager.BRIGHTNESS_ON,PowerManager.BRIGHTNESS_MIN, PowerManager.BRIGHTNESS_MAX);} else {mScreenBrightnessMinimum = min;mScreenBrightnessMaximum = max;mScreenBrightnessDefault = def;}..}

其中它是通过config中实现的:

 public float getBrightnessConstraint(int constraint) {switch (constraint) {case PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM:return mScreenBrightnessMinimum;case PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM:return mScreenBrightnessMaximum;case PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_DEFAULT:return mScreenBrightnessDefault;case PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_DIM:return mScreenBrightnessDim;case PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_DOZE:return mScreenBrightnessDoze;case PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM_VR:return mScreenBrightnessMinimumVr;case PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM_VR:return mScreenBrightnessMaximumVr;case PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_DEFAULT_VR:return mScreenBrightnessDefaultVr;default:return PowerManager.BRIGHTNESS_INVALID_FLOAT;}}

3、修改代码的位置:

   --- a/frameworks/base/res/res/values/config.xml+++ b//frameworks/base/res/res/values/config.xml@@ -28,5 +28,5 @@<item name="config_screenBrightnessSettingMaximumFloat" format="float" type="dimen">1.0</item><!-- Default screen brightness setting set.Set this to 0.4 for Default brightness Float.-->-    <item name="config_screenBrightnessSettingDefaultFloat" format="float" type="dimen">0.3</item>+    <item name="config_screenBrightnessSettingDefaultFloat" format="float" type="dimen">0.4</item></resources>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/717507.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣706:设计哈希映射

题目&#xff1a; 不使用任何内建的哈希表库设计一个哈希映射&#xff08;HashMap&#xff09;。 实现 MyHashMap 类&#xff1a; MyHashMap() 用空映射初始化对象void put(int key, int value) 向 HashMap 插入一个键值对 (key, value) 。如果 key 已经存在于映射中&#x…

【GPU驱动开发】- mesa编译与链接过程详细分析

前言 不必害怕未知&#xff0c;无需恐惧犯错&#xff0c;做一个Creator&#xff01; 一、总体框架图 暂时无法在飞书文档外展示此内容 二、Mesa API 处理 OpenGL 函数调用 Mesa API 负责实现 OpenGL 和其他图形 API 的函数接口。Mesa API 表是一个重要的数据结构&#xf…

c# 获得进程的标题

使用 System.Diagnostics.Process 类来获取所有 Internet Explorer 进程的标题。以下是如何做到这一点的代码示例&#xff1a; using System; using System.Diagnostics;class Program {static void Main(){foreach (Process process in Process.GetProcessesByName("iex…

数据中台的演进与实践——构建企业的数字核心_光点科技

数据中台&#xff0c;一个在近年来被频繁提及的概念&#xff0c;已经成为众多企业数字化转型的核心组成部分。然而&#xff0c;尽管它的重要性被业界广泛认可&#xff0c;对于数据中台的深入理解和有效实践仍然是许多企业面临的挑战。在本文中&#xff0c;我们将从数据中台的演…

从租完ecs云服务器 使用docker建立用户 全过程

一 登录root用户 ssh root公网ip 输入密码&#xff0c;若没有密码可以前往阿里云设置服务器root密码 二 创建新用户 并赋予 新用户sudo权限 adduser $USER usermod -aG sudo $USER 三 Ubuntu安装docker sudo apt-get remove docker docker-engine docker.io containerd ru…

蓝桥杯:门牌制作

题目 小蓝要为一条街的住户制作门牌号。 这条街一共有2020 位住户&#xff0c;门牌号从1 到2020 编号。 小蓝制作门牌的方法是先制作0 到9 这几个数字字符&#xff0c;最后根据需要将字符粘贴到门牌上&#xff0c;例如门牌1017 需要依次粘贴字符1、0、1、7&#xff0c;即需要1…

反向代理原理

反向代理是一种网络应用架构模式&#xff0c;主要用于将对一个或多个后端服务器的请求进行转发、负载均衡和缓存&#xff0c;以提高系统的安全性、性能和可靠性。 其原理如下&#xff1a; 1. 客户端向反向代理发送请求。 2. 反向代理服务器接收请求&#xff0c;并根据预设的规…

基于window安装Elasticsearch详细教程

目录 一、安装Java环境1.1 Java版本选择 二、下载和安装ES2.1 下载地址2.2 文件目录 3、启动服务3.1 以管理员身份打开cmd3.2 首次登录会有密码&#xff0c;需要记住3.3 访问 一、安装Java环境 1.1 Java版本选择 官网地址&#xff1a;https://www.elastic.co/cn/support/matr…

9个接口性能优化方案,RT从9000ms到180ms

昨天接到生产 SkyWalking 链路监控告警: 服务的百分位数响应时间在过去的 10 分钟内超过 2000 毫秒的次数达到 3 次。 经过不断的优化&#xff0c;将接口从 9000ms 优化到 180ms&#xff0c;先看结果 优化前&#xff1a; 优化后&#xff1a; 废话不多我们开始 一、定位性能差的…

Maven实战(2)之搭建maven私服

一, 背景: 如果使用国外镜像,下载速度比较慢; 如果使用阿里云镜像,速度还算OK,但是假如网速不好的时候,其实也是比较慢的; 如果没有网的情况下更加下载不了. 二, 本地仓库、个人/公司私服、远程仓库关系如下: 三, 下载安装nexus私服 略

Notepad3:告别Windows记事本,轻松进行文本编辑

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、什么是Notepad3&#xff1f;①Notepad3②核…

openGauss学习笔记-234 openGauss性能调优-系统调优-资源负载管理-资源管理准备-设置控制组

文章目录 openGauss学习笔记-234 openGauss性能调优-系统调优-资源负载管理-资源管理准备-设置控制组234.1 背景信息234.2 前提条件234.3 操作步骤234.3.1 创建子Class控制组和Workload控制组234.3.2 更新控制组的资源配额234.3.3 删除控制组 234.4 查看控制组的信息 openGauss…

第八节 龙晰Anolis 8.8 安装 DDE 桌面环境

一、前言 最小化安装的龙晰 Anolis OS 8.8 是不带图形化界面的&#xff0c;只能使用命令行&#xff0c;有些时候需要用到桌面环境&#xff0c;而DDE (Deepin Desktop Enviroment) 就是很好的桌面环境&#xff0c;它是指龙晰 Anolis 所搭载的中国自主桌面环境&#xff0c;用起来…

客户快递信息管理系统——导入文件识别存储

客户快递信息管理系统背景&#xff1a; 目前不少公司都提供网购服务&#xff0c;为了将商品快递给客户&#xff0c;就必须保存和管理客户的姓名、电话号码、邮寄地址等信息。为此&#xff0c;本项目要求完成一个小型客户快递信息管理系统&#xff0c;完成对客户快递信息的建立…

C++构造函数析构函数

构造和析构函数用于管理对象的初始化和清理工作&#xff0c;确保对象的正确生命周期管理。以下是其重要特性&#xff1a; 构造函数不能是虚函数 从存储空间角度&#xff1a; 虚函数是需要通过虚函数表和虚指针来调用的&#xff0c;如果用虚函数实现构造函数&#xff0c;而对象…

【算法沉淀】刷题笔记:并查集 带权并查集+实战讲解

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《数据结构与算法&#xff1a;初学者入门指南》&#x1f4d8;&am…

Day13:信息打点-JS架构框架识别泄漏提取API接口枚举FUZZ爬虫插件项目

目录 JS前端架构-识别&分析 JS前端架构-开发框架分析 前端架构-半自动Burp分析 前端架构-自动化项目分析 思维导图 章节知识点 Web&#xff1a;语言/CMS/中间件/数据库/系统/WAF等 系统&#xff1a;操作系统/端口服务/网络环境/防火墙等 应用&#xff1a;APP对象/API接…

QML学习之Text

文本显示是界面开发中的重要内容&#xff0c;在Qt Quick模块中提供了 Text 项来进行文本的显示&#xff0c;其中可以使用 font 属性组对文本字体进行设置&#xff1a; font.bold&#xff1a;是否加粗&#xff0c;取值为true或false font.capitalization&#xff1a;大写策略&a…

01.20 校招 实习 内推 面经

绿*泡*泡VX&#xff1a; neituijunsir 交流*裙 &#xff0c;内推/实习/校招汇总表格 1、校招 | 中兴微电子2024届校园招聘 校招 | 中兴微电子2024届校园招聘 2、长城汽车2024大学生开放日上大分&#xff01; 长城汽车2024大学生开放日上大分&#xff01; 3、校招 | 江淮汽…

java程序员的金三银四求职宝典(二)

程序员的金三银四求职宝典 随着春天的脚步渐近&#xff0c;对于许多程序员来说&#xff0c;一年中最繁忙、最重要的面试季节也随之而来。金三银四&#xff0c;即三月和四月&#xff0c;被广大程序员视为求职的黄金时期。在这两个月里&#xff0c;各大公司纷纷开放招聘&#xf…