当前位置: 首页 > news >正文

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版本可参考修改源码

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • uniapp 发布苹果IOS详细流程,包括苹果开发者公司账号申请、IOS证书、.p12证书文件等
  • 【系统架构设计师-2024年真题】案例分析-答案及详解
  • 无人直播好帮手,视频指定词语消音,消除违禁词,直播视频录制,音视频分离,分段
  • 《Discriminative Class Tokens for Text-to-Image Diffusion Models》ICCV2023
  • 网络安全-dom破坏结合jq漏洞以及框架漏洞造成的xss-World War 3
  • FastAPI 中的错误处理:如何让错误信息更有价值
  • 上传文件到钉盘流程详解
  • SpringBoot整合WebSocket实现消息推送或聊天功能示例
  • 【计算机网络】HTTPHTTPS
  • 时序必读论文06|PITS : 基于非依赖策略学习时序patch特征表示
  • C和指针:指针
  • vue+IntersectionObserver + scrollIntoView 实现电梯导航
  • Android 车联网——汽车系统介绍(附2)
  • 工具知识 | Linux 常用命令参考手册
  • 深度学习——数据预处理,张量降维
  • JS 中的深拷贝与浅拷贝
  • 《剑指offer》分解让复杂问题更简单
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • MySQL-事务管理(基础)
  • nginx 负载服务器优化
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • node学习系列之简单文件上传
  • SwizzleMethod 黑魔法
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • windows下如何用phpstorm同步测试服务器
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 每天一个设计模式之命令模式
  • 使用parted解决大于2T的磁盘分区
  • 收藏好这篇,别再只说“数据劫持”了
  • 首页查询功能的一次实现过程
  • 听说你叫Java(二)–Servlet请求
  • 为什么要用IPython/Jupyter?
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​520就是要宠粉,你的心头书我买单
  • # 数论-逆元
  • #Z2294. 打印树的直径
  • $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (二)hibernate配置管理
  • (二)springcloud实战之config配置中心
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (算法)Travel Information Center
  • (算法)区间调度问题
  • (限时免费)震惊!流落人间的haproxy宝典被找到了!一切玄妙尽在此处!
  • (一)UDP基本编程步骤
  • **python多态
  • .mp4格式的视频为何不能通过video标签在chrome浏览器中播放?
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET LINQ 通常分 Syntax Query 和Syntax Method