最近 Keep 更新了一个轨迹动画的分享,可以生成一个看起来高大上的视频。项目产品也提出了一样的需求,便参照着实现了一波。效果如下(虚拟机跑动画就已经很卡了,然后还要录 gif 就更卡了,凑合看~):
整体思路就是:
- Android 原生播放动画(基于高德地图实现)
- 录制屏幕生成视频
播放动画无非就是一次画一条线,连起来就像一个点一直在往前面爬的效果了。然后请求录制屏幕,输出到一个文件,最后保存为视频即可。
Android 录屏核心思路是使用系统 Api MediaProjectionManager,需要 Android 5.0 以上才可以使用。鉴于目前市场 Android 5.0 的手机已经很少了,所以便直接使用 MediaProjectionManager 了。
使用步骤:
- mMediaProjectionManager.createScreenCaptureIntent() 申请录屏权限(因为要保存文件所以需要申请 WRITE_EXTERNAL_STORAGE 权限)
- 用户同意之后,初始化 VirtualDisplay
- 创建 MediaRecorder,设置好相关参数,核心设置视频源为 SURFACE: setVideoSource(MediaRecorder.VideoSource.SURFACE)
- 录制结束后释放资源,保存文件
具体代码如下:
1 | /** |