Android 14 SPRD 下拉菜单中增加自动亮度调节按钮

为了在 Android 14 的下拉菜单中增加自动亮度调节按钮,可以按照以下步骤进行代码修改。

1. 添加图标资源

SystemUI 资源文件夹中添加自动亮度图标:

文件路径:

frameworks/base/packages/SystemUI/res/drawable/ic_settings_display_white.xml

文件内容:

<vector xmlns:android="http://schemas.android.com/apk/res/android"android:width="24dp"android:height="24dp"android:viewportWidth="24.0"android:viewportHeight="24.0"><pathandroid:pathData="M20.31,9V4.31H15.62L12.31,1L9,4.31H4.31V9L1,12.31L4.31,15.62V20.31H9L12.31,23.62L15.62,20.31H20.31V15.62L23.62,12.31L20.31,9ZM18.31,14.79V18.31H14.79L12.31,20.79L9.83,18.31H6.31V14.79L3.83,12.31L6.31,9.83V6.31H9.83L12.31,3.83L14.79,6.31H18.31V9.83L20.79,12.31L18.31,14.79ZM17.31,12.31C17.31,15.07 15.07,17.31 12.31,17.31V7.31C15.07,7.31 17.31,9.55 17.31,12.31Z"android:fillType="evenOdd"android:fillColor="?android:attr/colorPrimary"/>
</vector>
2. 更新字符串资源

strings.xml 中添加自动亮度调节的标题:

文件路径:

frameworks/base/packages/SystemUI/res/values/strings.xml
frameworks/base/packages/SystemUI/res/values-zh-rCN/strings.xml

strings.xml 中新增:

<string name="autobrightness_title">AutoBrightness</string>

strings.xml (zh-rCN) 中新增:

<string name="autobrightness_title">自动亮度调节</string>
3. 配置快速设置中的自动亮度 Tile

config.xml 中将自动亮度添加到快速设置面板的默认项目中:

文件路径:

frameworks/base/packages/SystemUI/res/values/config.xml

修改内容:

<string name="quick_settings_tiles_stock" translatable="false">internet,bt,flashlight,dnd,alarm,airplane,controls,wallet,rotation,battery,autobrightness,superbattery,cast,screenrecord,mictoggle,cameratoggle,location,hotspot,inversion,saver,dark,work,night,reverse,reduce_brightness,qr_code_scanner,color_correction,dream,font_scaling
</string>
4. 创建 AutoBrightnessTile 类

创建 AutoBrightnessTile.java 实现自动亮度 Tile 的逻辑:

文件路径:

frameworks/base/packages/SystemUI/src/com/android/systemui/qs/tiles/AutoBrightnessTile.java

文件内容:

package com.android.systemui.qs.tiles;import android.content.ContentResolver;
import android.content.Intent;
import android.provider.Settings;
import android.service.quicksettings.Tile;
import android.util.Log;
import android.view.View;
import androidx.annotation.Nullable;
import com.android.systemui.R;
import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import javax.inject.Inject;public class AutoBrightnessTile extends QSTileImpl<BooleanState> {public static final String TILE_SPEC = "autobrightness";@Injectpublic AutoBrightnessTile(QSHost host) {super(host);}@Overridepublic BooleanState newTileState() {BooleanState state = new BooleanState();state.handlesLongClick = true;return state;}@Overrideprotected void handleClick(@Nullable View view) {Log.i("AutoBrightnessTile", "Clicked on AutoBrightness tile");toggleBrightnessMode();refreshState();}private void toggleBrightnessMode() {ContentResolver resolver = mContext.getContentResolver();int currentMode = Settings.System.getInt(resolver, Settings.System.SCREEN_BRIGHTNESS_MODE, MODE_MANUAL);int newMode = (currentMode == MODE_MANUAL) ? MODE_AUTOMATIC : MODE_MANUAL;Settings.System.putInt(resolver, Settings.System.SCREEN_BRIGHTNESS_MODE, newMode);}private boolean isAutoBrightnessEnabled() {ContentResolver resolver = mContext.getContentResolver();int mode = Settings.System.getInt(resolver, Settings.System.SCREEN_BRIGHTNESS_MODE, MODE_MANUAL);return mode == MODE_AUTOMATIC;}@Overridepublic CharSequence getTileLabel() {return mContext.getString(R.string.autobrightness_title);}@Overrideprotected void handleUpdateState(BooleanState state, Object arg) {state.label = mContext.getString(R.string.autobrightness_title);state.value = isAutoBrightnessEnabled();state.contentDescription = state.label;state.state = state.value ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE;state.icon = ResourceIcon.get(R.drawable.ic_settings_display_white);}
}
5. 在 PolicyModule 中注册 Tile

确保 AutoBrightnessTile 注册在 PolicyModule 中:

文件路径:

frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/PolicyModule.kt

修改内容:

--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/PolicyModule.kt
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/PolicyModule.kt
@@ -20,6 +20,7 @@ import com.android.systemui.qs.tiles.CameraToggleTileimport com.android.systemui.qs.tiles.DndTileimport com.android.systemui.qs.tiles.FlashlightTile
+import com.android.systemui.qs.tiles.AutoBrightnessTileimport com.android.systemui.qs.tiles.LocationTileimport com.android.systemui.qs.tiles.MicrophoneToggleTileimport com.android.systemui.qs.tiles.UiModeNightTile
@@ -52,6 +53,12 @@ interface PolicyModule {+    
+    /** Inject AutoBrightnessTile into tileMap in QSModule */
+    @Binds
+    @IntoMap
+    @StringKey(AutoBrightnessTile.TILE_SPEC)
+    fun bindAutoBrightnessTile(autobrightnessTile: AutoBrightnessTile): QSTileImpl<*>
6. 配置默认快速设置

在特定的 config.xml 覆盖文件中确保默认启用自动亮度:

文件路径:

vendor/partner_gms/unisoc_conf/overlay/gms_overlay_unisoc/frameworks/base/packages/SystemUI/res/values/config.xml

修改内容:

<string name="quick_settings_tiles_default" translatable="false">internet,bt,dnd,flashlight,rotation,battery,airplane,autobrightness,night,qr_code_scanner,screenrecord,cast,mictoggle,cameratoggle
</string>

以上步骤完成后,重新编译并安装系统镜像。此改动将会在 Android 14 的 SPRD 下拉菜单中增加自动亮度调节的快捷开关。

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

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

相关文章

Jenkins应用详解(Detailed Explanation of Jenkins Application)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

【LeetCode】【算法】5. 最长回文子串

LeetCode 5. 最长回文子串 题目描述 给你一个字符串s&#xff0c;找到 s 中最长的回文子串。 思路 思路&#xff1a;中心扩散法 遍历字符串s&#xff0c;对每一个字符用中心扩散法。确定好中点之后向两边扩散&#xff0c;若两边字符相同则len2。若遍历下来len>maxLen则记…

开源数据库 - mysql - mysql-server-8.4(gtid主主同步+ keepalived热切换)部署方案

前置条件 假设主从信息 mysqlhostport主192.168.1.13306从192.168.1.23306vip192.168.1.3 部署流程 导出测试环境表结构与数据 使用mysqldump ./mysqldump -ulzzc -p -S /tmp/mysql3306.sock --single-transaction --database lzzc > databaseLZZCxxxx.sql查看gtid号 …

【Python】计算机视觉应用:OpenCV库图像处理入门

计算机视觉应用&#xff1a;OpenCV库图像处理入门 在当今的数字化时代&#xff0c;计算机视觉&#xff08;Computer Vision&#xff09;已经渗透到各行各业&#xff0c;比如自动驾驶、智能监控、医疗影像分析等。而 Python 的 OpenCV 库&#xff08;Open Source Computer Visi…

【LeetCode】【算法】33. 搜索旋转排序数组

LeetCode 33. 搜索旋转排序数组 题目描述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k…

【C++】 list 与 string 基础与实现字符串操作

【C】使用 list 与 string 实现基础字符串操作 文章目录 一、字符串的基础操作1.1 - startsWith1.2 - endsWith1.3 - trim1.4 - indexOf1.5 - replaceAll 二、list 基础操作2.1 - 遍历2.1.1 - 使用迭代器访问2.1.2 - 使用基于范围的 for 循环遍历2.1.3 - 使用标准算法库遍历 2.…

ctfshow-web入门-反序列化(web260-web264)

目录 1、web260 2、web261 3、web262 4、web263 5、web264 1、web260 要求传入的内容序列化后包含指定内容即可&#xff0c;在 PHP 序列化中&#xff0c;如果键名或值包含 ctfshow_i_love_36D&#xff0c;那么整个序列化结果也会包含这个字符串。 payload&#xff1a; ?…

Python 爬虫运行状态监控:进度、错误与完成情况

Python 爬虫运行状态监控&#xff1a;进度、错误与完成情况 在进行大规模数据爬取时&#xff0c;监控爬虫的运行状态至关重要。通过实时监控&#xff0c;可以了解爬虫的工作进度、出现的错误以及任务完成情况。这样可以及时发现并解决问题&#xff0c;确保数据抓取任务顺利进行…

Flutter错误: uses-sdk:minSdkVersion 16 cannot be smaller than version 21 declared

前言 今天要做蓝牙通信的功能&#xff0c;我使用了flutter_reactive_ble这个库&#xff0c;但是在运行的时候发现一下错误 Launching lib/main.dart on AQM AL10 in debug mode... /Users/macbook/Desktop/test/flutter/my_app/android/app/src/debug/AndroidManifest.xml Err…

除了易我数据恢复,这10个数据恢复软件也能点亮数据找回的希望之光。

易我数据恢复工具具有广泛的系统兼容性&#xff0c;并且里面功能丰富&#xff0c;操作简单&#xff0c;能够完成多种数据恢复操作&#xff0c;是一款比较专业的数据恢复软件。如果大家在为数据丢失而烦恼的话&#xff0c;我可以推荐几款好用的数据恢复软件给大家。 1、福昕数据…

P8680 [蓝桥杯 2019 省 B] 特别数的和

题目描述 小明对数位中含有 2、0、1、9 的数字很感兴趣&#xff08;不包括前导 0&#xff09;&#xff0c;在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40&#xff0c;共 28 个&#xff0c;他们的和是 574。 请问&#xff0c;在 1 到 n 中&#xff0c;所有这样的数的…

Vue Cli 脚手架目录文件介绍

小试牛刀 //vetur高亮; vuetab 快速生成 <template><div class"box">我是个盒子<button click"fn">按钮</button></div> </template><script> export default {methods:{fn(){alert("Hello Vue")}} …

使用Matlab神经网络工具箱

在Matlab中&#xff0c;我们可以使用神经网络工具箱来创建和训练神经网络。以下是一些示例&#xff1a; 1.创建一个简单的神经网络并进行训练&#xff1a; 1.% 创建一个3个输入&#xff0c;2个隐藏节点&#xff0c;1个输出节点的神经网络 2.net feedforwardnet(10,10,train…

在公司中,如何表现出自己的高情商,学会这三句话就可以了

在职场中&#xff0c;高情商的重要性不言而喻。它能帮助你更好地处理人际关系&#xff0c;提升团队协作效率&#xff0c;还能让你在职场上获得更多的机会。 在职场中&#xff0c;适时地给予同事、上级和下属赞美、感谢和鼓励&#xff0c;能够拉近彼此的距离&#xff0c;增强团…

cache(五)Write-through,Write-back,Write-allocate,No-write-allocate

这张图总结了缓存系统中写操作策略的不同方法&#xff0c;主要讨论了在**写命中&#xff08;write-hit&#xff09;和写未命中&#xff08;write-miss&#xff09;**情况下应该采取的操作策略。 1. 多个数据副本的存在 缓存系统通常有多个级别&#xff0c;例如 L1 缓存、L2 缓…

商品规格递归拼接

创建实体类 Data public class Shopping {private String name;private List<String> children; } 测试 public static void main(String[] args) {ArrayList<Shopping> shoppings new ArrayList<>();Shopping shopping new Shopping();shopping.setName…

大模型基础: 从零开始训练一个最小化的Transformer聊天机器人

这里将介绍如何从零开始&#xff0c;使用Transformer模型训练一个最小化的聊天机器人。该流程将尽量简化&#xff0c;不依赖预训练模型&#xff0c;并手动实现关键步骤&#xff0c;确保每一步都容易理解。 1. 环境准备 首先&#xff0c;确保安装了必要的Python库。我们只需要基…

Android中寻找 package 包名

在 Android 应用开发中&#xff0c;AndroidManifest.xml 文件扮演着至关重要的角色。它不仅定义了应用的基本信息&#xff0c;如权限、组件声明等&#xff0c;还包含了一个非常重要的属性——package。本文将详细介绍 package 属性的作用及其与 Gradle 配置之间的关系。 packa…

推荐一款3D建模软件:Agisoft Metashape Pro

Agisoft Metashape Pro是一款强大的多视点三维建模设计辅助软件&#xff0c;Agisoft Metashape是一款独立的软件产品&#xff0c;可对数字图像进行摄影测量处理&#xff0c;并生成3D空间数据&#xff0c;用于GIS应用&#xff0c;文化遗产文档和视觉效果制作&#xff0c;以及间接…

Docker--Docker是什么和对Docker的了解

Docker 的本质 Docker的本质是LXC&#xff08;Linux容器&#xff09;之类的增强版&#xff0c;它本身不是容器&#xff0c;而是容器的易用工具。 Docker通过虚拟化技术&#xff0c;将代码、依赖项和运行环境打包成一个容器&#xff0c;并利用隔离机制来使得容器之间互相独立、…