HarmonyOS 鸿蒙Next中MediaProjection

HarmonyOS 鸿蒙Next中MediaProjection

最新的鸿蒙5.0是否支持屏幕录制功能,类似安卓的MediaProjection。 提供接口供普通应用抓取屏幕数据?如果目前没有,什么时候会出?

6 回复

更多关于HarmonyOS 鸿蒙Next中MediaProjection的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


忘了补充一下流程----

创建对象

let avRecorder: AVScreenCaptureRecorder = await media.createAVScreenCaptureRecorder();
avRecorder.prepare(avRecorderConfig);

数据输出

avRecorderConfig.url = 'file:///data/media/01.mp4';

启动/停止录屏 

avRecorder.start().then(() => { /* 开始成功处理 */ });
avRecorder.stop().then(() => { /* 停止成功处理 */ });

AVScreenCaptureRecorder,可以进行设置录屏参数(分辨率、帧率、编码格式),启动/停止录屏,监听录屏状态变更。通过 Surface 传递屏幕数据流,可将数据写入文件或实时处理:

let surfaceId = surface.getProducerSurfaceId();
avRecorderConfig.videoSourceType = VideoSourceType.VIDEO_SOURCE_SURFACE;
avRecorderConfig.videoSourceId = surfaceId;

屏幕录制主要为主屏幕录屏功能。

开发者可以调用录屏(AVScreenCaptureRecorder) 模块的ArkTs接口,完成屏幕录制,采集设备内、麦克风等的音视频源数据。可以调用录屏模块获取音视频文件,然后通过文件的形式流转到其他模块进行播放或处理,达成文件形式分享屏幕内容的场景。

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/using-avscreencapture-arkts

如果需要获取录屏视频码流可以使用相关CAPI获取

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/using-avscreencapture-for-buffer

在HarmonyOS Next中,MediaProjection是用于屏幕捕获的API,允许应用获取当前屏幕内容。它通过createVirtualDisplay创建虚拟显示层实现屏幕录制或截图。使用时需声明ohos.permission.CAPTURE_SCREEN权限,并在config.json中配置。主要涉及MediaProjectionManager类,提供开始/停止投影的方法。注意:鸿蒙Next的MediaProjection实现与安卓不同,采用分布式能力设计,支持跨设备屏幕共享。典型场景包括投屏、远程协作等。

在HarmonyOS Next中,屏幕录制功能是通过更安全的权限管控机制实现的。虽然不像Android那样直接提供MediaProjection API,但系统提供了完善的屏幕捕获解决方案:

  1. 系统级录屏功能:通过控制中心快捷方式或系统设置可触发屏幕录制,录制内容会保存到相册

  2. 开发者API方面:

  • 应用需要申请ohos.permission.CAPTURE_SCREEN权限
  • 使用@ohos.screen模块提供的接口进行屏幕捕获
  • 支持获取屏幕截图和录制屏幕视频流
  1. 隐私保护机制:
  • 每次录屏都会显示明显系统提示
  • 敏感应用(如银行类)会自动屏蔽录屏内容
  • 应用需要用户主动授权才能获取屏幕数据

目前这套机制已经比较完善,能满足大多数开发需求。相比Android的MediaProjection,HarmonyOS的方案更注重用户隐私保护。

回到顶部