Android13_SystemUI下拉框新增音量控制条

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

Android13_SystemUI下拉框新增音量控制条

  • 一、必备知识
  • 二、源码分析对比
    • 1.brightness模块分析对比
    • 2.statusbar/phone 对应模块对比
      • 对比初始化类声明
      • 对比构造方法
  • 三、源码修改
  • 四、相关资源

一、必备知识

  • 在Android12 版本上面已经完成了功能的实现,目前是在Android13
    版本实现此功能,可以参考上一篇文章相关的必备基础知识和实现方式Android12实现SystemUI下拉框新增音量控制条
  • 在Android12 基础上对比实现方式,来实现Android13 版本上面的功能

二、源码分析对比

源码对比Android12,

  • 音量条功能实现本身是参考下拉框已知的brightness 模块开发,所以需要对brightness模块熟悉;
  • SystemUI下拉QS、QQS这些组件包括其它组件是怎么添加到系统里面去,怎么展示的,这个逻辑很重要,也需要和Android12 对比下

1.brightness模块分析对比

Android12源码地址:http://xrefandroid.com/android-12.0.0_r34/xref/frameworks/base/packages/SystemUI/src/com/android/systemui/settings/brightness/
在这里插入图片描述
Android13源码地址:http://xrefandroid.com/android-13.0.0_r83/xref/frameworks/base/packages/SystemUI/src/com/android/systemui/settings/brightness/
在这里插入图片描述
每个类的定义和作用已经在Android12 中分析过,这里最大的一个类改名了,改的很有意义:
BrightnessSlider.java -> BrightnessSliderController.java ,控制类就是控制类,见名知义!

2.statusbar/phone 对应模块对比

Android13 中 CentralSurfacesImpl 类 替代了StatusBar 类。

对比初始化类声明

如下:一个用继承实现基本功能,一个用接口实现功能

StatusBar.java  public class StatusBar extends SystemUI implements DemoMode,ActivityStarter, KeyguardStateController.Callback,OnHeadsUpChangedListener, CommandQueue.Callbacks,ColorExtractor.OnColorsChangedListener, ConfigurationListener,StatusBarStateController.StateListener,LifecycleOwner, BatteryController.BatteryStateChangeCallback,ActivityLaunchAnimator.Callback {public static final boolean MULTIUSER_DEBUG = false;CentralSurfacesImpl.java public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {CentralSurfaces.java 
public interface CentralSurfaces extends Dumpable, ActivityStarter, LifecycleOwner {

对比构造方法

如下,构造方法的描述都是一摸一样的,这两个类核心功能一致的,初始化功能和SystemUI入口
在这里插入图片描述
在这里插入图片描述
找到了初始化地方,音量条实现方式参考Android12 版本,此功能就很容易实现了。

三、源码修改

详细说明如下,参考修改文件和新增文件即可完成功能,实现需求
修改文件:
vendor/mediatek/proprietary/packages/apps/SystemUI/AndroidManifest.xml
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/classifier/Classifier.java
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/qs/QSAnimator.java
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/qs/QSPanel.java
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/qs/QSPanelController.java
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderController.java
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java新增文件:
vendor/mediatek/proprietary/packages/apps/SystemUI/res/drawable-hdpi/icon_volume_test.png
vendor/mediatek/proprietary/packages/apps/SystemUI/res/drawable-mdpi/icon_volume_test.png
vendor/mediatek/proprietary/packages/apps/SystemUI/res/drawable-xhdpi/icon_volume_test.png
vendor/mediatek/proprietary/packages/apps/SystemUI/res/drawable-xxhdpi/icon_volume_test.png
vendor/mediatek/proprietary/packages/apps/SystemUI/res/drawable-xxxhdpi/icon_volume_test.png
vendor/mediatek/proprietary/packages/apps/SystemUI/res/drawable/volume_progress_drawable.xml
vendor/mediatek/proprietary/packages/apps/SystemUI/res/drawable/volume_progress_full_drawable.xml
vendor/mediatek/proprietary/packages/apps/SystemUI/res/layout/quick_settings_volume_dialog.xml
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/settings/volume/VolumeController.java
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/settings/volume/VolumeSliderController.java
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/settings/volume/VolumeSliderView.java
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/util/ApplicationContextProvider.kt
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/util/ContextProvider.java
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/util/SoundUtils.kt

具体实现方式对比Android12 ,实现参考方式一模一样。

四、相关资源

RK Android12 SystemUI SystemUI源码方便调试
源码在线调试平台
RK/MTK Android13版本可参考修改源码

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

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

相关文章

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使…

树莓派3B串口通信

树莓派3B串口通信 文章目录 树莓派3B串口通信一、串口的基本认知1.1 关于电器标准和协议:RS232RS422RS485 1.2 关于串口的电平:UARTRS232电平TTL电平 1.3 串口通信引脚接线:1.4 串口的通信协议: 二、树莓派串口通信开发2.1 树莓派…

TensorRT-For-YOLO-Series项目:实现yolov10模型的python-tensorrt推理(对比int8与fp16推理差异)

项目地址:https://github.com/Linaom1214/TensorRT-For-YOLO-Series/tree/cuda-python 算法支持状态: 2024.6.16 Support YOLOv9, YOLOv10, changing the TensorRT version to 10.0 2023.8.15 Support cuda-python 2023.5.12 Update 2023.1.7 support YO…

观趋势 谋发展 2024 SSHT上海智能家居展有哪些创新呈现?

引言:大数跨境发布的《2024全球智能家居市场洞察报告》显示,智能家居市场正迎来快速增长,预计从2024年的1215.9亿美元增长至2032年的6332.0亿美元,复合年增长率为22.9%。 近年来,随着物联网、AI等底层技术的飞速进步&…

kubernetes微服务之ingress-nginx

目录 1 ingress-nginx 介绍 2 Ingress-nginx 的工作原理 3 使用 Ingress-nginx 的步骤 4 部署 ingress : 4.1 开启ipvs 模式 4.2 下载部署文件 4.3 上传镜像到harbor 4.4 修改文件中镜像地址,与harbor仓库路径保持一致 4.5 检查是否running 4.6 将ingress的命名…

轻松上手,高效产出:音频剪辑工具年度精选

不知道你有没有拍vlog记录生活的习惯,有时候视频里穿插进自己的声音能让视频更加丰富贴上自己的标签。这次我们一起探讨当下有哪些好用的在线音频剪辑工具。 1.FOXIT音频剪辑 链接直达>>https://www.foxitsoftware.cn/audio-clip/ 这个工具是一款专业的音…

Java 数据类型详解:基本数据类型与引用数据类型

在 Java 编程语言中,数据类型主要分为两大类:基本数据类型和引用数据类型。理解这两种类型的区别、使用场景及其转换方式是学习 Java 的基础。本文将深入探讨这两类数据类型的特点,并展示自动类型转换、强制类型转换以及自动拆箱和封箱的使用…

虚拟现实辅助工程技术助力多学科协同评估

在当今高速发展的经济环境中,制造业面临着多重挑战,包括提高产品性能、压缩设计周期、实现轻量化设计和降低成本。为了有效应对这些挑战,多学科协同评估成为缩短研发周期和提升研制质量的关键手段。 传统的多学科评估面临着数据孤立与融合困难…

《‌黑神话:‌悟空》‌游戏攻略‌

时光荏苒,岁月如梭,不知不觉已经来到了2024年的9月份了。 ‌突然想写一篇关于《‌黑神话:‌悟空》‌的游戏攻略‌。 在《‌黑神话:‌悟空》‌这款以中国古代名著《‌西游记》‌为背景的动作角色扮演游戏中,‌玩家将扮…

LeetCode 热题 100 回顾9

干货分享,感谢您的阅读!原文见:LeetCode 热题 100 回顾_力code热题100-CSDN博客 一、哈希部分 1.两数之和 (简单) 题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标…

【redis】redis的特性和主要应用场景

文章目录 redis 的特性在内存中存储数据可编程的扩展能力持久化集群高可用快 redis 的应用场景实时数据存储缓存消息队列 redis 的特性 redis 的一些特性(优点)成就了它 在内存中存储数据 In-memory data structures MySQL 主要是通过“表”的方式来…

JavaEE-HTTPHTTPS

目录 HTTP协议 一、概念 二、http协议格式 http请求报文 http响应报文 URL格式 三、认识方法 四、认识报头 HTTP响应中的信息 HTTPS协议 对称加密 非对称加密 中间人攻击 解决中间人攻击 HTTP协议 一、概念 HTTP (全称为 "超⽂本传输协议") 是⼀种应⽤…

Mysql中的锁机制详解

一、概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。 在数据库中,除了传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供需要用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决…

一文讲懂Spring Event事件通知机制

目录 一 什么是spring event 二 怎么实现spring event 一 什么是spring event 我不会按照官方的解释来说什么是spring event,我只是按照自己的理解来解释,可能原理上会和官方有偏差,但是它的作用和功能就是这个,我更加偏向于从他…

详解React setState调用原理和批量更新的过程

1. React setState 调用的原理 setState目录 1. React setState 调用的原理2. React setState 调用之后发生了什么?是同步还是异步?3. React中的setState批量更新的过程是什么? 具体的执行过程如下(源码级解析)&#x…

安卓13带有系统签名的应用不能正常使用webview 调用webview失败 系统应用app apk

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.彩蛋1.前言 android版本高一些的平台,经常会遇到一些权限安全问题,像客户的应用如果带有系统签名,会导致不能正常使用webview问题。 2.问题分析 我们log信息,可以发现下面的提示: Fo…

网络层ip协议

一.概念 ip协议主要是为了在复杂的网络环境中确定一个合适的路径来传输主机间的数据。简单来说就是用来确定主机的位置。 ip协议中的一些设备如下: 主机: 配有 IP 地址, 但是不进行路由控制的设备;路由器: 即配有 IP 地址, 又能进行路由控制;节点: 主机和路由器的统…

传统CV算法——边缘算子与图像金字塔算法介绍

边缘算子 图像梯度算子 - Sobel Sobel算子是一种用于边缘检测的图像梯度算子,它通过计算图像亮度的空间梯度来突出显示图像中的边缘。Sobel算子主要识别图像中亮度变化快的区域,这些区域通常对应于边缘。它是通过对图像进行水平和垂直方向的差分运算来…

5.2.数据结构-c/c++二叉树详解(下篇)(算法面试题)

本章所有代码请见:5.3.数据结构-c/c二叉树代码-CSDN博客 上篇:5.数据结构-c/c二叉树详解(上篇)(遍历方法,完全二叉树)-CSDN博客 目录 1 求二叉树 第k层的节点 2 查找一个节点是否在二叉树中 3 求二叉树节点的个数 4 求二叉树…

数据结构(邓俊辉)学习笔记】排序 1——快速排序:算法A

文章目录 1. 分而治之2. 轴点3. 构造轴点4. 单调性 不变性5. 实例 1. 分而治之 主题就是排序。实际上我们对于排序问题并不陌生。你应该记得在最开始的几章,我们就分别介绍过起泡排序、插入排序、选择排序以及归并排序,而在介绍散列技术时,我…