# 分享系统
将xr-frame
渲染的结果分享给好友是个很常见的需求,所以我们内置了分享系统ShareSystem来协助开发者快速截图和录制分享。
要在iOS设备上使用分享系统,需要客户端
8.0.29
以上版本。 录屏能力需要在基础库版本v3.1.1以上支持。
# 截取画布
分享系统提供了三种方式来截图:
// 判断当前客户端是否支持分享系统
const supported = scene.share.supported;
// 截取配置,可选`type`为`jpg`或`png`,在为`jpg`时,可配置`0~1`的`quality`
// 以下是默认值
const options: XrFrame.IShareCaptureOptions = {
type: 'jpg',
quality: 0.8
};
// 在鸿蒙上有BUG,已弃用,请使用下方异步接口!
const base64 = scene.share.captureToDataURL(options);
// 基础库`3.0.2`以上新增的异步接口,获取原始的`base64`字符串
const base64 = await scene.share.captureToDataURLAsync(options);
// 在鸿蒙上有BUG,已弃用,请使用异步接口!
const buffer = scene.share.captureToArrayBuffer(options);
// 基础库`3.0.2`以上新增的异步接口,直接获取转换后的`ArrayBuffer`
const buffer = await scene.share.captureToArrayBufferAsync(options);
// 获取本地路径的分享图片
// 第一个方法来处理本地路径,结束后释放文件
// 此回调在`2.27.3`基础库以及之前时是异步,之后兼容同步和异步
// 在基础库`3.0.2`之后,为异步接口
await scene.share.captureToLocalPath(options, fp => {});
// 直接唤起分享图片给好友
// 在基础库`3.0.2`之后,为异步接口
await scene.share.captureToFriends(options);
唤起分享给好友的结果如下:
# 录制画布
在基础库版本v3.1.1之后,分享系统提供了如下方式来录制:
// 录制配置,以下是默认值
// 这里建议根据实际情况,等比缩放`width`和`height`,防止丢帧
const options: XrFrame.IShareRecordOptions = {
fps: 30,
width: scene.width,
height: scene.height,
videoBitsPerSecond: 1000
};
// 启动录制
await scene.share.recordStart(options);
// 暂停录制
await scene.share.recordPause(options);
// 唤醒录制
await scene.share.recordResume(options);
// 停止录制,并保存到临时文件
const tempFilePath = await scene.share.recordFinishToTempFile(options);
// 停止录制,直接保存到相册
await scene.share.recordFinishToAlbum(options);
// 可以获取录制状态,来做用户提示
if (scene.share.recordState === xrFrameSystem.EShareRecordState.Recording) {
......
}