Android13_SystemUI下拉框新增音量控制条

ops/2024/11/10 14:29:36/

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

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.ppmy.cn/ops/108135.html

相关文章

使用Redis实现记录访问次数(三种方案)

目录 0. 前言1. 使用Filter实现2. 使用AOP实现 1. 导入依赖 2. 写一个切面类,实现统计访问次数。 3. 开启AOP 4. 测试 5. plus版本 (1) 新建一个bean类 (2) 新增一个controller方法 (3) 新增一个循环增强方法 (4) 测试…

亚马逊测评自养号卖家如何以低成本提高店铺产品曝光率和销量?

在跨境电商领域,随着市场日趋饱和和竞争加剧,卖家普遍面临流量低、转化率低的共同挑战。为了在这种严重的“内卷化”环境中脱颖而出,不少卖家投入了大量的资金和资源,尝试了各种站内和站外的推广方式,但往往因为缺乏成…

原装N9000B信号分析仪keysight/N9000B,N9000A详情参数

是德Keysight N9000B CXA 信号分析仪,多点触控, 特征: 9 kHz 至 26.5 GHz 的宽频率范围以及高达 25 MHz 的分析带宽让您了解更多 为手动和自动化制造测试系统添加可靠的信号分析 执行基本测量,例如杂散搜索和失真分析 使用可选…

牛客周赛 Round 59(下)

逆序数 题目描述 登录—专业IT笔试面试备考平台_牛客网 运行代码 #include<bits/stdc.h> using namespace std; typedef long long ll; int main() {ll n,k;cin>>n>>k;ll sum(n*(n-1))/2;cout<<sum-k<<endl;return 0; } 代码思路 组合数的计…

设计模式之状态模式 (C++ 实现)

设计模式是软件开发中的一项重要技能&#xff0c;它提供了一种通用的解决方案以应对不同的设计问题。状态模式是一种行为型设计模式&#xff0c;适用于对象在不同状态下表现出不同的行为。通过实现状态模式&#xff0c;可以让代码更清晰、更易扩展与维护。本文将通过C实现状态模…

Spring6梳理7——依赖注入之特殊类型属性

目录 ①字面量赋值 ②null值 ③xml实体 ④CDATA节 ①字面量赋值 什么是字面量&#xff1f; int a10; 字面量是在源代码中用来表示固定值的表示法。几乎所有的计算机编程语言都支持基本值的字面量表示&#xff0c;例如整数、浮点数和字符串。许多语言还支持布尔类…

在亚马逊云科技上利用Agent和生成式AI写小说(下篇)

今天小李哥将继续介绍亚马逊推出的国际前沿人工智能AI大模型平台Amazon Bedrock上的Agent的功能。我们将利用Agent结合应用代码工作流服务Step Functions创建链式提示词&#xff08;Prompt Chaining&#xff09;&#xff0c;通过提示词执行一系列调用Amazon Bedrock上AI大模型的…

Scikit-learn与TensorFlow哪个好

Scikit-learn 和 TensorFlow 是两款非常流行的机器学习库&#xff0c;但它们适合的使用场景不同&#xff0c;取决于任务的复杂性和需求。让我们比较一下它们的特点&#xff0c;帮助你选择合适的工具。 1. Scikit-learn Scikit-learn 是一个经典的机器学习库&#xff0c;主要用…