项目背景
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干货请关注“千里马学框架”