问题:Android12 中SystemUI版本,QS下拉快捷面板式没有截屏功能的。
需求:客户要求在项目中实现下拉快捷面板具备一键截屏功能目前自己只针对Android12 mtk/RK平台实践过,接触的全志平台暂未实验验证。
文章目录
- 前言
- 一、实际实现效果
- 二、修改点
-
- 1.新增文件
- 2.修改文件
- 三、基础知识储备
-
- 基础知识内容了解
- 相关资料参考:
-
- 谷歌开源项目,SystemUI基础必备
- 其它文章推荐
- 源码查询平台
- 四、需求实现
- 五、总结
- 六、源码资料
前言
Android12 中在SystemUI的QS面板添加截屏功能按钮,目前在RK和mtk 平台验证过,实现步骤基本一致
一、实际实现效果

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)