skia实现动态差异录屏截图logo添加-千里马SurfaceFlinger专题实战项目背景介绍

112 阅读2分钟

项目背景

hi,粉丝朋友们: 大家好!因为前面一直忙于讲解surfaceflinger层面到的原理和源码分析部分,一直没有一个系统的项目来给大家练手实现,今天来实现一个sf层面的一个小项目。具体项目背景信息如下: 在这里插入图片描述 实现要求: 1、需要在截图时候有一个品牌logo 2、需要在投屏,录屏时候有品牌logo 3、手机画面不可以展示logo

项目需求分析

方案1(想不修改框架,直接应用层面实现):

一些同学可能会截图logo那不是很简单么,获取到了截图图片后再进行,绘制logo重新保存成带有logo图片既可以

在这里插入图片描述针对录屏也一样可以获取没有logo的mp4文件,然后对mp4文件进行水印添加保存

这种方案基本上明显不可行。。。。 相当于获取截图都是没有logo的还需要额外处理后才可以,达不到要求,因为用户依然可以获取没有logo图片或者录屏,速度慢,而且也没有办法针对投屏场景实现

综上:不修改sf框架等基本上是不可能可以实现该需求的,针对很多新手小白同学不知道framework具体做啥,是不是上面这个需求就要求你一定要深入了解系统,修改系统才可以实现。这些需求其实都是平常rom开发很常见的部分。

方案2(修改sf和framework合格方案)

具体方案如下图所示 在这里插入图片描述 总体思路就是上图所说的,需要对针对skia,或者opengl渲染时候进行hook,然后添加上自己的logo既可以,当然实现这个需求,必须要求你对surfaceflinger代码和framework的wms的代码非常熟悉才可以搞定,具体实现代码和详细方案可以看我视频哈

实现成果展示:

用户看到的手机画面,可以看到是完全没有logo的: 在这里插入图片描述

接下来看看截图场景: 在这里插入图片描述 明显看到截图后右下角带有了定制logo

再看看投屏情况: 在这里插入图片描述

可以看到投屏情况下一直右下角也有个logo

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

私聊作者+v(androidframework007)

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

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