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.pswp.cn/news/717507.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/717507.shtml
英文地址,請注明出處:http://en.pswp.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…