Android framework配置默认屏幕亮度值源码分析

1、概述

在Android中,config.xml文件用于配置各种系统设置和资源。对于屏幕亮度的配置,config.xml并不是直接用于设置屏幕亮度的地方,但它可以包含默认的系统设置和一些相关的参数。以下是如何在config.xml中配置一些与屏幕亮度相关的设置的详细步骤。

2、找到或创建config.xml

在Android系统源码中,config.xml通常位于以下路径:
frameworks/base/core/res/res/values/config.xml
如果项目中没有config.xml文件,可以在相应的路径下创建一个。

3、配置屏幕亮度相关参数

在config.xml中,可以定义与屏幕亮度相关的参数,例如默认亮度值、自动亮度调节参数等。以下是一个示例配置:

<?xml version="1.0" encoding="utf-8"?>
<!--
/*
** Copyright 2009, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
**     http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
--><!-- These resources are around just to allow their values to be customizedfor different hardware and product builds. -->
<resources><!-- Software blur is too slow on this device. --><bool name="config_sf_slowBlur">true</bool><!-- This device is not "voice capable"; it's data-only. --><bool name="config_voice_capable">true</bool><!-- This device does not allow sms service. --><bool name="config_sms_capable">true</bool><!-- Enable puk unlockscreen --><bool name="config_enable_puk_unlock_screen">true</bool><!-- An Array of "[Connection name],[ConnectivityManager.TYPE_xxxx],[associated radio-type],[priority],[restoral-timer(ms)],[dependencyMet]  --><!-- the 5th element "resore-time" indicates the number of milliseconds to delaybefore automatically restore the default connection.  Set -1 if the connectiondoes not require auto-restore. --><!-- the 6th element indicates boot-time dependency-met value. --><string-array translatable="false" name="networkAttributes"><item>"wifi,1,1,1,-1,true"</item><item>"mobile,0,0,0,-1,true"</item><item>"mobile_mms,2,0,2,60000,true"</item><item>"mobile_supl,3,0,2,60000,true"</item><item>"mobile_hipri,5,0,3,60000,true"</item><item>"mobile_fota,10,0,2,60000,true"</item><item>"mobile_ims,11,0,2,60000,true"</item><item>"mobile_cbs,12,0,2,60000,true"</item><item>"wifi_p2p,13,1,0,-1,true"</item><item>"eth,9,9,4,60000,true"</item></string-array><!-- An Array of "[ConnectivityManager connectionType],[# simultaneous connection types]"  --><string-array translatable="false" name="radioAttributes"><item>"1,1"</item><item>"0,1"</item><item>"9,1"</item></string-array><!-- 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">222</integer><!-- Default screen brightness setting.Must be in the range specified by minimum and maximum. --><integer name="config_screenBrightnessSettingDefault">115</integer><!-- Screen brightness used to dim the screen when the user activitytimeout expires.  May be less than the minimum allowed brightness settingthat can be set by the user. --><integer name="config_screenBrightnessDim">1</integer><!-- Whether a software navigation bar should be shown. NOTE: in the future this may beautodetected from the Configuration. --><bool name="config_showNavigationBar">false</bool><!-- If this is true, the screen will come on when you unplug usb/power/whatever. --><bool name="config_unplugTurnsOnScreen">true</bool><!--Sets the package names whose certificates should be used toverify location providers are allowed to be loaded.--><string-array name="config_locationProviderPackageNames" translatable="false"><item>com.google.android.location</item><item>com.android.location.fused</item></string-array><!--  Maximum number of supported users --><integer name="config_multiuserMaximumUsers">1</integer><!-- we don't want use hard menu key to unlock keyguard --> <bool name="config_disableMenuKeyInLockScreen">true</bool><!-- out side base package resource, we add it --><add-resource type="integer" name="config_immersive_mode_confirmation_panic" />  <add-resource type="integer" name="config_max_over_scroll" />  <integer name="config_immersive_mode_confirmation_panic">5000</integer><integer name="config_max_over_scroll">200</integer></resources>

在这里插入图片描述

4、部分参数解读

config_screenBrightnessSettingDefault:设置屏幕亮度的默认值。这个值会在系统初始化时使用,范围是0到255。

config_screenBrightnessSettingMinimum:设置屏幕亮度的最低值。这个值确保屏幕亮度不会低于这个值,范围是0到255。

config_screenBrightnessSettingMaximum:设置屏幕亮度的最高值。这个值确保屏幕亮度不会高于这个值,范围是0到255。

5、使用配置

这些配置会被系统服务(如PowerManagerService、DisplayManagerService)读取并应用,具体实现可以参考前面提到的服务类。

例如,在PowerManagerService中,可以读取配置并应用默认亮度值:

 public void systemReady(TwilightService twilight, DreamManagerService dreamManager) {synchronized (mLock) {mSystemReady = true;mDreamManager = dreamManager;PowerManager pm = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE);mScreenBrightnessSettingMinimum = pm.getMinimumScreenBrightnessSetting();mScreenBrightnessSettingMaximum = pm.getMaximumScreenBrightnessSetting();mScreenBrightnessSettingDefault = pm.getDefaultScreenBrightnessSetting();SensorManager sensorManager = new SystemSensorManager(mHandler.getLooper());// The notifier runs on the system server's main looper so as not to interfere// with the animations and other critical functions of the power manager.mNotifier = new Notifier(Looper.getMainLooper(), mContext, mBatteryStats,createSuspendBlockerLocked("PowerManagerService.Broadcasts"),mScreenOnBlocker, mPolicy);// The display power controller runs on the power manager service's// own handler thread to ensure timely operation.mDisplayPowerController = new DisplayPowerController(mHandler.getLooper(),mContext, mNotifier, mLightsService, twilight, sensorManager,mDisplayManagerService, mDisplayBlanker,mDisplayPowerControllerCallbacks, mHandler);mWirelessChargerDetector = new WirelessChargerDetector(sensorManager,createSuspendBlockerLocked("PowerManagerService.WirelessChargerDetector"));mSettingsObserver = new SettingsObserver(mHandler);mAttentionLight = mLightsService.getLight(LightsService.LIGHT_ID_ATTENTION);// Register for broadcasts from other components of the system.IntentFilter filter = new IntentFilter();filter.addAction(Intent.ACTION_BATTERY_CHANGED);mContext.registerReceiver(new BatteryReceiver(), filter, null, mHandler);filter = new IntentFilter();filter.addAction(Intent.ACTION_BOOT_COMPLETED);mContext.registerReceiver(new BootCompletedReceiver(), filter, null, mHandler);filter = new IntentFilter();filter.addAction(Intent.ACTION_DREAMING_STARTED);filter.addAction(Intent.ACTION_DREAMING_STOPPED);mContext.registerReceiver(new DreamReceiver(), filter, null, mHandler);filter = new IntentFilter();filter.addAction(Intent.ACTION_USER_SWITCHED);mContext.registerReceiver(new UserSwitchedReceiver(), filter, null, mHandler);filter = new IntentFilter();filter.addAction(Intent.ACTION_DOCK_EVENT);mContext.registerReceiver(new DockReceiver(), filter, null, mHandler);// Register for settings changes.final ContentResolver resolver = mContext.getContentResolver();resolver.registerContentObserver(Settings.Secure.getUriFor(Settings.Secure.SCREENSAVER_ENABLED),false, mSettingsObserver, UserHandle.USER_ALL);resolver.registerContentObserver(Settings.Secure.getUriFor(Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP),false, mSettingsObserver, UserHandle.USER_ALL);resolver.registerContentObserver(Settings.Secure.getUriFor(Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK),false, mSettingsObserver, UserHandle.USER_ALL);resolver.registerContentObserver(Settings.System.getUriFor(Settings.System.SCREEN_OFF_TIMEOUT),false, mSettingsObserver, UserHandle.USER_ALL);resolver.registerContentObserver(Settings.Global.getUriFor(Settings.Global.STAY_ON_WHILE_PLUGGED_IN),false, mSettingsObserver, UserHandle.USER_ALL);resolver.registerContentObserver(Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS),false, mSettingsObserver, UserHandle.USER_ALL);resolver.registerContentObserver(Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS_MODE),false, mSettingsObserver, UserHandle.USER_ALL);//--------------for hdmi timeout add by dzyresolver.registerContentObserver(Settings.System.getUriFor(Settings.System.HDMI_LCD_TIMEOUT),false, mSettingsObserver, UserHandle.USER_ALL);//-----------------end------------------// Go.readConfigurationLocked();updateSettingsLocked();mDirty |= DIRTY_BATTERY_STATE;updatePowerStateLocked();new Thread() {public void run() {boolean waitSuspendOK;while(true) {waitSuspendOK = false;try {Slog.d(TAG, "--- nativeWaitSuspendTimeout");nativeWaitSuspendTimeout();waitSuspendOK = true;} catch (IOException e) {Slog.e(TAG, "--- nativeWaitSuspendTimeout: " + e);}if (waitSuspendOK) {int status = -1;try {status = nativeGetChargingStatus();Slog.d(TAG, "--- charging status=" + status);}  catch (IOException e) {Slog.e(TAG, "--- nativeGetChargingStatus: " + e);}if (status != 1) {PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "suspend timeout to shutdownNormal");wl.acquire(5000);Slog.d(TAG, "--- shutdown now");shutdownNormal();}} else {try {Thread.sleep(500);} catch (InterruptedException e) {}}}}}.start();}}

在这里插入图片描述

6、总结

通过在config.xml中配置屏幕亮度相关的参数,可以为Android系统提供默认的亮度设置和自动亮度调节的参数。这些配置会在系统服务中被读取并应用,从而影响系统的亮度控制行为。通过这种方式,开发者可以灵活地配置和管理屏幕亮度,确保提供良好的用户体验。

觉得本文对您有用,麻烦点赞、关注、收藏,您的肯定是我创作的无限动力,谢谢!!!
在这里插入图片描述

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

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

相关文章

yolov9-pytorch 深度学习目标检测算法模型

YOLOv9 论文 https://arxiv.org/abs/2402.13616 模型结构 YOLOv9将可编程梯度信息 (PGI) 概念与通用 ELAN (GELAN)架构相结合而开发&#xff0c;代表了准确性、速度和效率方面的重大飞跃。 算法原理 Yolov9将可编程梯度信息&#xff08;PGI&#xff09;和GLEAN&#xff08…

Swagger3.0接口生成并导入YApi

一、引入依赖 <!--Swagger-UI API文档生产工具--><dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version></dependency><!--解决Swagger访问主页时的…

PHP实现企业微信素材上传与获取的完整指南与踩坑日记

企业微信作为一款专门为企业打造的即时通讯工具&#xff0c;提供了丰富的功能和接口&#xff0c;其中包括素材管理。素材管理在企业内部的沟通、分享和展示中起着重要的作用。本篇文章将介绍如何使用PHP语言对接企业微信素材上传和获取的功能。 ## 1. 准备工作 首先&#xff0…

课设--学生成绩管理系统(三)

欢迎来到 Papicatch的博客 文章目录 &#x1f349;报告目的 &#x1f349;总体设计 &#x1f348; 模块处理逻辑 &#x1f349;数据库设计 &#x1f348;总览表 &#x1f348;表设计 &#x1f34d;管理员信息表 &#x1f34d;课程基本信息表 &#x1f34d;课程扩展信息…

19.Docker跨宿主机容器之间的通信macvlan

Docker跨宿主机容器之间的通信macvlan&#xff0c;类似桥接网络模式 macvlan通信类型&#xff0c;设置IP地址只能手动指定&#xff08;–ip&#xff09;一台一台设置IP地址 默认一个物理网卡&#xff0c;只有一个物理mac地址&#xff0c;虚拟多个mac地址&#xff08;让人感觉是…

Vue62-配置代理-方式一

一、业务场景 有两个服务器&#xff1a; 二、可用的ajax请求 推荐使用&#xff1a;axios。 三、axios发送请求 报错原因&#xff1a;跨域&#xff0c;违背了同源策略&#xff1a;协议名&#xff0c;主机名&#xff0c;端口号&#xff01; 四、同源策略 4-1、跨域请求问题…

python5 正则表达式

Python中的正则表达式是一种强大的工具&#xff0c;用于在文本中搜索、匹配和处理特定模式的字符串。它们通过定义一种模式&#xff0c;使得可以轻松地搜索、替换、提取和验证文本数据&#xff0c;在Python中的正则表达式由re模块提供支持的。 正则表达式通常用于以下任务&…

UE4_材质_雨滴涟漪效果ripple effect_ben教程

学习笔记&#xff0c;不喜勿喷&#xff01;侵权立删&#xff0c;祝愿生活越来越好&#xff01; 雨水落下时会产生这些非常漂亮的同心环波纹&#xff0c;我们要做的第一件事是创建一个单个的圆环遮罩动画&#xff0c;我们希望环在开始的时候在中心很小&#xff0c;然后放大&…

音频基础知识和音频指标

音频基础知识 声音 声音&#xff08;sound)是由物体振动产生的声波。物体在一秒钟之内振动的次数叫做频率&#xff0c;单位是赫兹&#xff0c;字母Hz。人耳可以识别的声音频率在 20 Hz~20000 Hz之间&#xff1b; 声音三要素&#xff1a; 响度 响度&#xff0c;…

kaggle notebook和jupyter notebook读取csv

kaggle本地比赛用打开notebook的示例代码可以获取当前比赛的文件数据路径&#xff0c;进而后续直接复制读取 jupyter notebook读取csv 直接下载数据集到电脑上&#xff0c;并用本地路径读取就行。

无线备网,保障连锁零售数字化运营

为了提升运营效率、改进客户体验&#xff0c;零售商们不断引入新的数字化工具和平台&#xff0c;包括数字化收银、客流统计、客户关系管理系统等。现代化智慧零售的运营更加依赖于稳定、高效的网络连接&#xff0c;数字化网络不仅是提升运营效率和客户体验的关键&#xff0c;还…

HTML+CSS+PHP实现网页留言板功能(需要创建数据库)

话说前头&#xff0c;我这方面很菜滴。这是我网页作业的一部分。 1.body部分效果展示&#xff08;不包括footer&#xff09; 2、代码 2.1 leaving.php&#xff08;看到的网页&#xff09; <!DOCTYPE html> <html lang"en"> <head> <met…

分数限制下,选好专业还是选好学校

目录 1.概述 1.1.综合考虑 1.2.个人经验分享 2.专业解析 2.1. 计算机科学与技术 2.2. 英语 2.3. 法学 2.4.专业VS学校 2.5.建议 3.名校效应分析 3.1. 名校声誉&#xff08;品牌效应&#xff09; 3.2. 资源获取 3.3. 学术氛围 3.4. 就业优势 3.5.小结 4.好专业和…

【启明智显产品分享】Model4 工业级HMI芯片详解(三):高安全、防抄板

Model4 工业级HMI芯片详解系列专题&#xff08;三&#xff09;【高安全、防抄板】 随着物联网和智能设备的快速发展&#xff0c;设备安全认证的需求日益迫切。硬件安全认证和保护在确保设备和身份安全中发挥着不可替代的作用&#xff0c;需要与软件安全相结合&#xff0c;共同构…

vue修改node_modules打补丁步骤和注意事项_node_modules 打补丁

1、vue-pdf问题解决及patch-package简介&#xff1a;https://www.jianshu.com/p/d1887e02f8d6 2、使用“黑魔法”优雅的修改第三方依赖包&#xff1a;https://zhuanlan.zhihu.com/p/412753695 3、使用patch-package定制node_modules中的依赖包&#xff1a;https://blog.csdn.…

git使用摘樱桃的方式,实现特定需求进行提交合并

文章目录 先checkOut到主要的分支(需求提交到这) 然后双击点别的需求分支,对提交内容选定 进行摘樱桃操作 然后双击回到主要分支,会发现那2个提交内容代码已经在主要分支的本地里,选中其 右键选择Squash Commits进行合并 标注自己的需求标题提交名更改后, 最后进行push推送到…

defer+recover机制处理错误

问题&#xff1a;多个协程工作&#xff0c;其中一个协程出现panic&#xff0c;导致程序崩溃 解决办法&#xff1a;利用deferrecover捕获panic进行处理&#xff0c;即使协程出现错误&#xff0c;主线程仍然不受影响可以继续执行 package mainimport ("fmt""tim…

洛谷——P2824 排序

题目来源&#xff1a;[HEOI2016/TJOI2016] 排序 - 洛谷https://www.luogu.com.cn/problem/P2824 问题思路 本文介绍一种二分答案的做法&#xff0c;时间复杂度为&#xff1a;(nm)*log(n)*log(n).本题存在nlog(n)的做法&#xff0c;然而其做法没有二分答案的做法通俗易懂. 默认读…

gitlab升级16.11.3-ee

背景 这是事后一段时间补充记录的博客。 升级目的&#xff1a;修补漏洞CVE-2024-4835 未经认证的威胁攻击者能够利用该漏洞在跨站脚本 (XSS) 攻击中&#xff0c;轻松接管受害者账户。 gitlab版本为14.6.2-ee升级至16.11.3-ee 思路 翻阅文档找升级方法及升级版本路径。使用…

AI智能盒子助力打造垃圾发电AI应用标杆!

垃圾焚烧发电作为一种新型的垃圾处理方式&#xff0c;能将其转化为电能&#xff0c;实现资源的再利用&#xff0c;成为实现节能环保的重要方式之一。为有效落实环境、安全、健康及社会责任管理体系&#xff0c;知名垃圾发电投资运营商光大环保能源致力于广泛利用科技&#xff0…