hal/SurfaceFlinger/perfetto实战需求问题探讨作业-千里马framework开发

198 阅读3分钟

背景

hi,粉丝朋友们: 在新课hal+perfetto+surfaceflinger mp.weixin.qq.com/s/LbVLnu1ud… 推出后,各位学员朋友们都积极响应,开始马不停蹄的学习,学员学习后希望有更多的实战案例或者项目拿来练手,从而更加巩固自己对SurfaceFlinger掌握情况。

在这里插入图片描述刚好群里也有相关的学员朋友分享了一些android新动向新特性功能,这里马哥就把它们整理一下作为实战案例作业给,大家进行实战哈。

实战案例作业1:

需求背景: aosp15上预览版本功能: 录屏时候可以仅对特定App窗口进行录制,而不是全屏录制 在这里插入图片描述

使用场景: 这个功能其实在国内很多的厂商都是有类似功能,比如录屏时候经常需要过滤一些窗口,比如很多手机场景一般为了用户暂停和开始会有专门的一个窗口来点击开始停止按钮。 在这里插入图片描述 但是这个录屏按钮操作窗口就不会被录制进入录屏的mp4中。

还有一些场景游戏投屏场景,比如游戏主播可能玩游戏时候还使用小窗启动了其他app,比如和某个妹子聊天,或者打开某个app在看游戏攻略 在这里插入图片描述

如果原生录屏不做任何处理那么会把小窗app的内容也给投屏直播给观众,这个其实是不想要的,因为只想要底层游戏画面展现给用户既可以。

需求实现要求: 1、要求有交互方式可以选着特定的窗口window,可以动态选着某一个window,可以做相关ui交互或者命令行动态控制均可以 2、要求可以实现录屏内容只有步骤1选的window的相关内容在录屏mp4中

实战案例作业2:

需求背景: 截图分享可以选定某个特定窗口进行,这个和上面的录屏其实基本上类似一个场景,就是截图时候有会存在只需要截图固定窗口window的,不需要其他window的情况,同样游戏主播进行直播这个情况,截图时候希望只有游戏画面就可以,游戏画面上面的其他app的窗口不希望在截图中。

在这里插入图片描述

初级实现要求:

1、要求有交互方式可以选着特定的窗口window,可以动态选着某一个window,可以做相关ui交互或者命令行动态控制均可以 2、要求可以实现录屏内容只有步骤1选的window的相关内容在图片中

高阶考虑扩展探索要求:

背景需求: 经常分析一些显示问题时候,会想要dumpsys各个图层,但是dumpsys SurfaceFlinger命令一般来说只是有相关的图层信息,是文本类的信息,所以有时候黑屏或者显示 异常情况就比较难看出来是不是自己图层本身上帧有问题。 基于以上背景就想要实现一个需求,在dumpsys SurfaceFlinger时候,不仅仅会dump出来相关的文本信息,还会把每个图层的图像也进行dump到固定目录,方便与文本信息进行结合查看验证 实现要求: 1、dumpsys SurfaceFlinger会触发dumpsys出各个显示图层的图像内容,保存成png图片到固定某个目录 2、保存图像要求有当前每个显示图层的png,和整个屏幕的显示png图 3、考虑扩展为只要有buffer的layer都会被dump,无论其是否真实显示在屏幕

本文章对应视频手把手教你学framework: hal+perfetto+surfaceflinger mp.weixin.qq.com/s/LbVLnu1ud… 在这里插入图片描述

私聊作者+v(androidframework007)

七件套专题:在这里插入图片描述 点击这里 mp.weixin.qq.com/s/Qv8zjgQ0C…

视频:www.bilibili.com/video/BV1wc…