录屏 HarmonyOS 鸿蒙Next 场景化代码

发布于 1周前 作者 vueper 来自 鸿蒙OS

录屏 HarmonyOS 鸿蒙Next 场景化代码
<markdown _ngcontent-emd-c147="" class="markdownPreContainer">

录屏

介绍

使用C侧AVScreenCapture模块API完成视频录制到沙箱目录

录屏源码链接

使用说明

  1. 点击“start capture”按钮弹出是否允许应用使用屏幕的弹窗,点击允许开始屏幕录制。
  2. 点击“stop capture”按钮,屏幕录制停止,并生成录屏文件保存到沙箱目录。

实现效果

图片名称

实现思路

通过调用AVScreenCapture模块下的接口,实现屏幕录制的功能。先通过OH_AVScreenCapture_Create()创建一个capture实例,再初始化录屏参数,传入配置信息。通过OH_AVScreenCapture_SetMicrophoneEnabled()设置麦克风开关,当isMicrophone为true时,打开麦克风。调用OH_AVScreenCapture_StartScreenRecording()接口启动录屏,并保存录屏文件。核心代码如下,源码参考、

napi_init.cpp

深色代码主题
复制
// 初始化录屏参数,传入配置信息OH_AVScreenRecorderConfig
    OH_RecorderInfo recorderInfo;
    std::string fileUrl = "fd://" + std::to_string(value0);
    recorderInfo.url = const_cast<char *>(fileUrl.c_str());
    recorderInfo.fileFormat = OH_ContainerFormatType::CFT_MPEG_4;
    config.recorderInfo = recorderInfo;
    // 设置回调
    OH_AVScreenCapture_SetStateCallback(capture, OnStateChange, nullptr);
    // 进行初始化操作
    int32_t retInit = OH_AVScreenCapture_Init(capture, config);
    OH_LOG_Print(LOG_APP, LOG_INFO, 1, "test", "init:%{public}d", retInit);
    // 开始录屏
    int32_t micRet = OH_AVScreenCapture_SetMicrophoneEnabled(capture, true);
    int32_t retStart = OH_AVScreenCapture_StartScreenRecording(capture);
    OH_LOG_Print(LOG_APP, LOG_INFO, 1, "test", "start:%{public}d", retStart);
    micRet = OH_AVScreenCapture_SetMicrophoneEnabled(capture, true);
    napi_value sum;
    napi_create_double(env, retStart, &sum);
  return sum;

工程结构&模块类型

深色代码主题
复制
entry/src/main/cpp/
|---types
|---CMakeLists.txt
|---napi_init.cpp                   // c侧逻辑代码
entry/src/main/ets/
|---entryability
|   |---EntryAbility.ets
|---pages
|   |---Index.ets                   // 入口页面

约束与限制

  1. 运行环境
    • 手机ROM版本:ALN-AL00 5.0.0.102(SP8C00E73R4P17logpatch02)
    • IDE:DevEco Studio 5.0.3.910
    • SDK:HarmonyOS 5.0.0 Release(API 12)

参考资料

</markdown>

更多关于录屏 HarmonyOS 鸿蒙Next 场景化代码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于录屏 HarmonyOS 鸿蒙Next 场景化代码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


录屏HarmonyOS(鸿蒙)Next场景化代码主要涉及到使用鸿蒙系统提供的API和工具来实现特定的场景功能,并录制这些功能的运行过程。以下是一个简短的示例,展示了如何录制一个基本的场景化代码:

在鸿蒙开发中,你可以使用ArkUI(ArkTS)来构建UI界面,并通过媒体录制API来录制屏幕。以下是一个简单的示例代码片段,它展示了如何创建一个按钮并录制点击该按钮后的屏幕:

@Entry
@Component
struct MyApp {
  @State buttonText: string = "Start Recording"

  onButtonClick() {
    if (this.buttonText === "Start Recording") {
      // 调用鸿蒙系统提供的媒体录制API开始录制屏幕
      media.startScreenRecording()
      this.buttonText = "Stop Recording"
    } else {
      // 调用鸿蒙系统提供的媒体录制API停止录制屏幕
      media.stopScreenRecording()
      this.buttonText = "Start Recording"
    }
  }

  build() {
    Button(this.buttonText)
      .onClick(() => this.onButtonClick())
  }
}

请注意,上述代码中的media.startScreenRecording()media.stopScreenRecording()是假设的鸿蒙API,实际开发中需要参考鸿蒙官方文档使用正确的API。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部