
【HarmonyOS NEXT】鸿蒙应用实现屏幕录制详解和源码 原创
【HarmonyOS NEXT】鸿蒙应用实现屏幕录制详解和源码
一、前言
官方文档关于屏幕录制的API和示例介绍获取简单和突兀。使用起来会让上手程度变高。所以特意开篇文章,讲解屏幕录制的使用。官方文档参见:使用AVScreenCaptureRecorder录屏写文件(ArkTS)
二、方案思路
鸿蒙应用关于录制屏幕,官方提供了AVScreenCaptureRecorder进行屏幕录制的调用。分为以下几个步骤:
1.创建该对象
2.进行属性配置初始化
这里尤其要注意,config配置属性对象的作用范围,在官方示例中,一般创建成全局对象。但是fd又是异步获取,就会造成fd拿到后,并没有赋值给config中,导致init函数初始化一直报错401参数错误。
如果像官方示例列为全局对象,那fd的file对象也需要创建为全局对象,看起来就很恶心。所以我这里改成局部对象,也避免了401参数错误的问题。
【官方DEMO关于fd的出处并没有写全,春秋笔法过多。所以我经常吐槽说官方文档基本上属于你会了才能看懂了。。】
此时录屏文件是保存在我们创建的沙箱路径中的。所以并不需要官方文档中提到的读写权限。
3.然后调用开始录屏或者结束录屏。
4.选配-录音权限的配置和申请
如果没有配置和申请录音权限。默认录屏是没有麦克风的声音。反之,录屏时你说话,就能录入到视频中。
5.选配-将沙箱路径下的录屏保存到相册中
保存到媒体库中,有很多种方式。我此处举例使用的是saveButton的形式进行保存函数的调用。
直接调用以下保存函数是不会生效。在鸿蒙中,一定需要用户知情同意,才能将沙箱的资源保存到媒体库中。
SaveButton,隐私窗口的豁免和录制状态的回调监听,参见源码示例。
注意:
实际开发中因为鸿蒙的后台特性,当录屏时应用切到后台大于三秒,应用进程就会被挂起。所以需要设置后台任务的长时任务。保证录屏的正常。(后面我会针对长时任务以录屏来举例,此处先不处理。)
三、源码示例:
SCRecordTestPage.ets
