react-native-record-screen:基于 React Native 的鸿蒙屏幕录制适配库项目

屏幕录制功能库

Branch3Tags3
FilesLast commitLast update
12 days ago
12 days ago
12 days ago
1 month ago
1 month ago
1 month ago
12 days ago
12 days ago
12 days ago
1 month ago
12 days ago
1 month ago

react-native-record-screen

本项目基于 react-native-record-screen开发。如果在使用过程中有任何问题,欢迎在AtomGit提交Issue,会及时跟进。

项目介绍

@hxa-rn/react-native-record-screen 是 react-native-record-screen 的鸿蒙(OpenHarmony)适配版本,当前规范版本号为 0.6.6。

本库提供屏幕录制 TurboModule:startRecording / stopRecording / clean。

鸿蒙适配包版本 原始库版本 支持 RN 版本 Autolink
0.6.6 0.6.2 0.72+ 是

集成指南

npm install @hxa-rn/react-native-record-screen

本模块支持 Autolink。import 时使用原库名 'react-native-record-screen'(harmony.alias)。

peerDependencies:react-native(>=0.72)。

mic: true 时需声明 ohos.permission.MICROPHONE、ohos.permission.KEEP_BACKGROUND_RUNNING,并配置 backgroundModes: ['audioRecording']。

使用说明

import RecordScreen, { RecordingResult } from 'react-native-record-screen';

export async function recordDemo() {
  const res = await RecordScreen.startRecording({ mic: true });
  if (res === RecordingResult.Started) {
    const response = await RecordScreen.stopRecording();
    if (response.status === 'success') {
      console.log(response.result.outputURL);
    }
  }
  await RecordScreen.clean();
}

接口文档

API 描述 参数 返回值 HarmonyOS 支持
startRecording 开始屏幕录制,触发系统录屏授权 config?: { fps?, bitrate?, mic? } Promise<'started' | 'permission_error'> ✅ 完全支持
stopRecording 停止录制并返回输出路径 无 Promise<{ status, result }> ✅ 完全支持
clean 清理沙箱录制文件 无 Promise<string> ✅ 完全支持

鸿蒙端 fps 无对应录制字段,接受但 no-op。输出为 file:// 沙箱路径。

快速验证(运行 Example)

前置条件

依赖 版本要求
Node.js >= 18
DevEco Studio 5.0+
HarmonyOS SDK API 12+

运行步骤

1. 克隆仓库

git clone https://gitcode.com/hxa-rn/react-native-record-screen.git
cd react-native-record-screen
git checkout main

2. 安装仓库开发依赖

npm install --legacy-peer-deps

Example 已改为从 npm 公仓安装 @hxa-rn/react-native-record-screen@0.6.6,不再使用本地 file:../xxx.tgz,运行 Example 不必再执行 npm pack。

3. 进入 example 目录,安装依赖

cd example          # 或 example_auto
npm install --legacy-peer-deps

4. 生成 JS Bundle

npm run dev

产物:harmony/entry/src/main/resources/rawfile/bundle.harmony.js

5. 用 DevEco Studio 打开鸿蒙工程

  • 打开 DevEco Studio
  • 选择 example/harmony(或 example_auto/harmony)目录
  • 等待 Sync 完成

6. 编译并运行 HAP

在 DevEco Studio 中点击运行按钮,将 HAP 安装到设备/模拟器。

注意:Example 中已预置插件依赖和 Package 注册,无需手动配置 Link。Example 已声明 ohos.permission.MICROPHONE、ohos.permission.KEEP_BACKGROUND_RUNNING。

约束与限制

兼容性

  • 鸿蒙 SDK:API 12+
  • 上游 RN SDK:0.72+
  • React Native / RNOH:0.72+
  • DevEco Studio:5.0+

权限

  • ohos.permission.MICROPHONE(user_grant,mic: true 时)
  • ohos.permission.KEEP_BACKGROUND_RUNNING(system_grant)

使用限制

  • 录屏授权由系统 Picker 完成。
  • mic: true 时先弹录屏授权,授权通过后再申请麦克风权限;用户拒绝麦克风权限不中断录制,降级为仅屏幕录制(输出视频无麦克风音轨)。

开源license

本项目基于 MIT 协议,详见 LICENSE 文件。

问题反馈渠道

使用问题请在 AtomGit 提交 Issue。也可在 GitCode 仓库反馈:

https://gitcode.com/hxa-rn/react-native-record-screen

https://gitcode.com/hxa-rn/react-native-record-screen/issues