录屏 HarmonyOS 鸿蒙Next 场景化代码
录屏 HarmonyOS 鸿蒙Next 场景化代码
<markdown _ngcontent-emd-c147="" class="markdownPreContainer">
录屏
介绍
使用C侧AVScreenCapture模块API完成视频录制到沙箱目录
使用说明
- 点击“start capture”按钮弹出是否允许应用使用屏幕的弹窗,点击允许开始屏幕录制。
- 点击“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 // 入口页面
约束与限制
- 运行环境
- 手机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
更多关于录屏 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