Android截屏、录屏工具

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android截屏、录屏工具相关的知识,希望对你有一定的参考价值。

参考技术A

有时候会用到颜色拾取器这样的东西来查看屏幕上的颜色值,一直是用Pixolor这个软件来看颜色的;很方便,点哪里显示哪里,也没有延迟,以为是什么黑科技;我注意到一个细节,如果只是切换屏幕,颜色拾取器不会更新,只有移动拾取器才更新选中;可以确定是截屏来实现的了,那就简单了,截屏获取像素点的颜色值就好了

网上看了一下,截屏大概分为保存View为图像和调用录屏服务两种办法,录屏是比较好的办法,可以在APP外截屏,所以简单的封装了一下

Step 1. Add the JitPack repository to your build file

Step 2. Add the dependency

主要分为两步,第一步是开启录屏;第二步就可以直接获取截屏,返回Bitmap
截图的过程录屏是开启的,录屏开启就可以进行截屏,操作完需要关闭录屏
截屏过程很快,效果很好

如果是APP外截屏则开启悬浮窗服务,可以通过操作悬浮窗进行截屏
参考文章: Android 截屏方式整理 、 Android录屏(5.0+)

1.初始化一个 MediaProjectionManager

2.创建并启动 Intent

3.在 onActivityResult 中拿到MediaProjection

4.设置VirtualDisplay将图像和展示的View关联起来。一般来说我们会将图像展示到SurfaceView,这里为了为了便于拿到截图,我们使用ImageReader,他内置有SurfaceView。

5.通过ImageReader拿到截图

6.注意截屏之后要及时关闭VirtualDisplay ,因为VirtualDisplay 是十分消耗内存和电量的。

录屏和截屏差不多,只是截屏的时候只是设置了一个ImageReader去获取图像数据,而录屏是设置一个 SurfaceView 去接收内容,获取视频流,然后通过 MediaCodec 来实现视频的硬编码,然后保存为视频文件

初始化录屏的大小和码率

开始录屏,设置输出文件

停止录屏

参考文章: Android视频录制--屏幕录制

1.在 AndroidManifest 中添加权限,Android 6.0 加入的动态权限申请,如果应用的 targetSdkVersion 是 23,申请敏感权限还需要动态申请

中间操作和截屏一样,就是准备开启录屏

5.创建虚拟屏幕,这一步就是通过 MediaProject 录制屏幕的关键所在, VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR 参数是指创建屏幕镜像,所以我们实际录制内容的是屏幕镜像,但内容和实际屏幕是一样的,并且这里我们把 VirtualDisplay 的渲染目标 Surface 设置为 MediaRecorder 的 getSurface ,后面我就可以通过 MediaRecorder 将屏幕内容录制下来,并且存成 video 文件

6.录制屏幕数据,这里利用 MediaRecord 将屏幕内容保存下来

以上是关于Android截屏、录屏工具的主要内容,如果未能解决你的问题,请参考以下文章

Android 禁止截屏录屏

Android 禁止截屏录屏

Android 禁止截屏录屏 — 解决PopupWindow无法禁止录屏问题

Android 截屏方式

Android5.0免Root截屏,录屏

Android 音视频开发 -- Android Mediaprojection 截屏和录屏