Android12 SystemUI QS面板新增截屏功能

news2024/9/20 20:52:17

问题:Android12 中SystemUI版本,QS下拉快捷面板式没有截屏功能的。
需求:客户要求在项目中实现下拉快捷面板具备一键截屏功能

目前自己只针对Android12 mtk/RK平台实践过,接触的全志平台暂未实验验证。

文章目录

  • 前言
  • 一、实际实现效果
  • 二、修改点
    • 1.新增文件
    • 2.修改文件
  • 三、基础知识储备
    • 基础知识内容了解
    • 相关资料参考:
      • 谷歌开源项目,SystemUI基础必备
      • 其它文章推荐
      • 源码查询平台
  • 四、需求实现
  • 五、总结
  • 六、源码资料


前言

Android12 中在SystemUI的QS面板添加截屏功能按钮,目前在RK和mtk 平台验证过,实现步骤基本一致


一、实际实现效果

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/9577a485e11a404b8e1adfe2c86384a3.png在这里插入图片描述

视频效果如下

Android12 SystemUI新增截屏功能

二、修改点

1.新增文件

packages\apps\SystemUI\src\com\android\systemui\qs\tiles\ScreenShotTile.java
packages\apps\SystemUI\src\com\android\systemui\statusbar\policy\ScreenShotController.java
packages\apps\SystemUI\src\com\android\systemui\statusbar\policy\ScreenShotControllerImpl.java
packages\apps\SystemUI\res\drawable\ic_screenshot.xml

2.修改文件

packages\apps\SystemUI\src\com\android\systemui\qs\tileimpl\QSFactoryImpl.java
packages\apps\SystemUI\src\com\android\systemui\statusbar\policy\dragger\StatusBarPolicyModule.java    
packages\apps\SystemUI\res\values\config.xml

具体代码实现,可以在文章末尾下载源代码,查看具体修改

三、基础知识储备

我从个人角度从零到1过程中,特别对于刚入手SystemUI,对SystemUI内容、架构、布局不熟悉的同学,更要针对SystemUI基本知识充电了解。方便当前需求实现和后续相关功能的定制和需求实现。

基础知识内容了解

SystemUI是什么、SystemUI启动流程、SystemUI布局、SystemUI有哪些内容、SystemUI架构、SystemUI组件.

相关资料参考:

谷歌开源项目,SystemUI基础必备

谷歌安卓开源项目SystemUI Remind
谷歌安卓开源项目SystemUI doc文档
Dragger
Qs-Titles

以上官方资料其实介绍很详细了,看完后还是模棱两可很正常,建议多看几遍,品味品味流程,跟进代码。
下面是部分其它自己认为写的比较好的博客或者专题,可以借鉴看看。 建议多看几遍,理解更为透彻了,然后跟一下代码流程,收获会是巨大的。

其它文章推荐

SystemUI 架构分析
深入理解SystemUI
SystemUI下拉框自定义(Android9.0)
SystemUI栏目(MTK平台)
SystemUI专题一
SystemUI专题二

源码查询平台

SystemUI源码查询

四、需求实现

从三中的相关基础准备,思路其实都很清晰了的,下面是我自己思路相关,来实现这个需求。
在QS面板中,已经有现成的功能,比如投屏功能,那么我们找到投屏相关代码和分析的流程来实现需求就可以了。
这里涉及到几个类:

  • QSFactoryImpl:在 SystemUI 中,QSFacturer 工厂的仅有一个实现,即QSFactoryImpl中的默认工厂 ( ) CurrentTilesInteractorImpl
  • QSTileImpl:抽象实现QSTile,为所有图块提供基本的通用行为。还为不同类型的实现扩展Icon。当前在 SystemUI 子类中定义的所有图块均来自此实现。

下面先分析投屏的部分代码

继承QSTileImpl

/** Quick settings tile: Cast **/
public class CastTile extends QSTileImpl<BooleanState> {
   

创建的地方

private final Provider<CastTile> mCastTileProvider;
....
  @Inject
    public QSFactoryImpl(
          .....
            Provider<CastTile> castTileProvider,
            ...
          ) {
   
           mCastTileProvider = castTileProvider;
          }


   private QSTileImpl createTileInternal(String tileSpec) 

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

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

相关文章

Redis缓存——缓存更新策略和常见的缓存问题

一.什么是缓存&#xff1f; 前言&#xff1a;什么是缓存? 缓存(Cache),就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据,一般从数据库中获取,存储于本地代码 前言&#xff1a;为什么要使用缓存&#xff1f; 一句话:因为速度快,好用 缓存数据存储于代码中,而代码运行在内存…

初识C++ · C++11(3)

前言&#xff1a; 本文介绍的是包装器以及线程库的简单了解&#xff0c;但是呢&#xff0c;线程是基于对Linux有一定的了解&#xff0c;所以本文就是简单介绍一下&#xff0c;介绍完包装器以及线程库的简单理解之后C11的特性就到此为止&#xff0c;当然C11远不止于此&#xff…

Pixel Adventure Unity2D开发完整指南

本文参考&#xff1a;2-2. Get and Setup Assets_哔哩哔哩_bilibili 1、下载资源 在Asset Store中下载Pix Adventure1 2的资源&#xff1a; 在import的时候&#xff0c;不用到Scene import进来&#xff0c;如下图所示&#xff0c;Scenes目录反勾选一下。 两个资源都下载完成后…

朱利亚集合和曼德布洛特集合及其图像

朱利亚集合和曼德布洛特集合及其图像 朱利亚集合&#xff08;Julia Set&#xff09;和 曼德布洛特集合&#xff08;Mandelbrot Set&#xff09;除了数学理论上的意义&#xff0c;所生成的分形图像&#xff0c;因其独特的几何美感和无限的复杂性&#xff0c;还被广泛应用于计算机…

增强现实系列—深入探索ARKit:平面检测、三维模型放置与增强现实交互

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

技术研究:Redis 实现消息队列

综述 我们先看看消息队列的消息存取到底有哪些需求吧&#xff1a; 需求1&#xff1a;消息保序&#xff1a;由于消费者是异步处理消息&#xff0c;但是消费者需要按照生产者发送消息的顺序来处理消息&#xff0c;避免后发送的消息被先处理了。 需求2&#xff1a;重复消息处理&…

【区块链+金融服务】河北股权交易所综合金融服务平台 | FISCO BCOS应用案例

区域性股权市场是我国资本市场的重要组成部分&#xff0c;是多层次资本市场体系的基石。河北股权交易所&#xff08;简称&#xff1a;河交所&#xff09; 作为河北省唯一一家区域性股权市场运营机构&#xff0c;打造河北股权交易所综合金融服务平台&#xff0c;将区块链技术与区…

信号与系统MATLAB实验:连续信号的采样与恢复

一、实验内容 &#xff08;1&#xff09;修改示例中的门信号宽度、采样周期等参数&#xff0c;重新运行程序&#xff0c;观察得到的采样信号时域和频域特性&#xff0c;以及重构信号与误差信号的变化。 示例1&#xff1a;选取门信号f(t) g2(t)为被采样信号。利用MATLAB实现对…

搭建超好用的个人网盘

目录 前言filebrowser下载地址介绍优点缺点部署效果 cloudreve官网介绍优点缺点部署效果 总结 前言 目前我使用过的文件存储管理软件&#xff0c;包括fastdfs、minio、filebrowser、cloudreve&#xff0c;这4款软件&#xff0c;我自己亲自搭建且都使用过&#xff0c;fastdfs很…

Datawhale X 魔搭 AI夏令营第四期 AIGC方向 task02笔记

AI工具使用 1. baseline 代码2. 使用通义千问理解代码2.1 工作流程2.2 逐行释意 3. 使用通义千问生成 Prompt3.1 生成的 Prompt3.1 根据 Prompt 生成的图片 1. baseline 代码 !pip install simple-aesthetics-predictor!pip install -v -e data-juicer!pip uninstall pytorch-…

docker的基本管理和应用

1、概念 docker是一个开源的应用容器引擎&#xff0c;基于go语言开发的。 docker是运行在linux的容器化工具&#xff0c;可以理解为轻量级的虚拟机。 可以在任何主机上轻松创建的一个轻量级、可移植的、自给自足的容器 2、设计的理念 鲸鱼——宿主机 集装箱——独立运行的…

07:【stm32】中断一:NVIC的配置

中断 1、中断的简介1.1、什么是中断1.2、为什么需要中断 2、中断的优先级2.1、中断优先级的表示方法 3、NVIC3.1、什么的NVIC3.2、NVIC的内部结构3.3、中断向量表3.4、程序实现①开启中断源②配置NVIC③中断响应函数 1、中断的简介 1.1、什么是中断 正在进行的事务被突发事件打…

1688商品详情API返回值中的供应商信息

在使用1688&#xff08;阿里巴巴中国站&#xff09;的商品详情API时&#xff0c;API的返回值中通常会包含丰富的产品信息&#xff0c;包括供应商&#xff08;卖家&#xff09;的信息。不过&#xff0c;具体的返回值内容可能会根据API的版本、调用参数以及API的更新情况有所不同…

什么是国际网络组网?

国际网络组网是指通过互联网技术将全球各地的不同网络相互连接&#xff0c;以实现信息交换与资源共享的过程。在这一过程中&#xff0c;涉及到数据传输、协议转换、跨网络通信等多个技术领域&#xff0c;旨在实现全球信息的无缝互联互通。国际网络组网的主要目标是扩大网络覆盖…

半导体RFID识别系统134.2K低频读写器|读写头JY-V610之SECS协议通信说明

什么是SECS协议&#xff1f; SECS&#xff08;Semiconductor Equipment Communication Standard&#xff09;协议是半导体设备通讯标准&#xff0c;用来统一各个生产设备之间以及生产设备和控制设备之间的通讯&#xff0c;由SEMI&#xff08;Semiconductor Equipment and Mate…

手搓滑动窗口

前言&#xff1a;好久没写滑动窗口&#xff0c;导致一些边界问题处理不好&#xff0c;back和top的初始值都搞不好 #include<bits/stdc.h> using namespace std;const int N (int)1e65; int n,m; int a[N],b[N]; int back,top;int main(){cin >> n >> m;for(…

【前端设计方案】H5 图片懒加载 SDK

实现思路 定义<img srcloading.png data-srcxxx.png/>页面滚动&#xff0c;图片露出时&#xff0c;将 data-src 赋值给 src 注意事项&#xff1a;滚动要节流 技术要点 获取图片的位置 elem.getBoundingClientRect() 图片 top < window.innerHeight 时&#xff0c;图片…

【学习笔记】爱立信SPO 1400 CRAFT软件基础知识9——Bridge(网桥)显示参数

一、前期准备 条件1.确认已正确使用爱立信SPO 1400 CRAFT软件通过网络登录设备&#xff08;以下简称NE&#xff09; 具体登录教程参考&#xff1a;使用爱立信SPO 1400 CRAFT软件通过网络登录设备的详细过程 二、学习内容&#xff1a; 提示&#xff1a;学习爱立信SPO 1400 CRA…

阿里员工:33岁,房贷还剩223万,每月还1.5W,失业中

中年失业 中年失业&#xff0c;真的很难。 虽然人到中年&#xff0c;一般多少都会有些储蓄&#xff0c;但也意味着会有更多的支出。 最近&#xff0c;一位阿里员工&#xff08;这会可能是前阿里员工了&#xff09;在社区分享到自己的经历。 贴主 33 岁&#xff0c;作为已结婚有…

搬瓦工日本软银线路VPS测评

搬瓦工日本VPS支持softbank/软银&#xff0c;Japan: Osaka (Softbank) &#xff0c;网络在2.5Gbps-10Gbps之间&#xff0c;底层为KVM虚拟、纯SSD阵列、支持在多机房之间切换。搬瓦工软银来国内的网络情况怎么样&#xff1f;测评数据大致如下&#xff1a; CPU具体型号不知道&…