更新记录

1.8(2023-10-13)

修复插件Android端录屏用video播放没有声音问题。

1.7(2023-08-23)

增加插件视频录制取消回调事件onCancel

1.6(2023-07-25)

增加ios端锁定屏幕方向更新布局接口lockAntiScreenOrientation(o)。

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 14.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 适用版本区间:11 - 17

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


录屏、截屏、保存相册、防录屏截屏uniapp原生插件接口说明

1. 获取插件对象

<script>
    //插件对象
    var Screen = uni.requireNativePlugin('Yam-Screen');

    var that;
    export default {
        data() {
        },
        onLoad() {
        }
    }
</script>

2. 检查权限并授权

//检查权限并授权
Screen.checkPermission(function(res){
    console.log(res);
    if (res.result == true) {
        //成功
    }
});

3. 设置录屏音频

//设置录屏音频
var enable = true;//true:开启音频 false:关闭音频
Screen.setAudioEnabled(enable);

4. 开始录屏

startScreenRecordWithFile() {
    //开始录屏
    var videoPath = plus.io.convertLocalFileSystemURL('_doc/screen_capture_video.mp4');
    Screen.setAudioEnabled(true);//true:开启音频 false:关闭音频
    Screen.startScreenRecordWithFile(videoPath, function(res){
        console.log(res);
        if (res.type == "onSuccess") {
            //录屏成功,保存视频到相册
            var path = res.data;
            Screen.saveVideoToAlbum(path);
        } else if (res.type == "onFailed") {
            //失败
        } else if (res.type == "onCancel") {
            //取消
        }
    });
}

5. 停止录屏

//停止录屏
Screen.stopScreenRecord();

6. 截屏

takeScreenShotWithFile() {
    //截屏
    var imagePath = plus.io.convertLocalFileSystemURL("_doc/screen_shot_img.jpg");
    Screen.takeScreenShotWithFile(imagePath, function(res){
        console.log(res);
        if (res.type == "onSuccess") {
            //截屏成功,保存图片到相册
            var path = res.data;
            Screen.saveImageToAlbum(path);
        } else if (res.type == "onFailed") {
            //失败
        }
    });
}

7. 保存图片到相册

//保存图片到相册
var path = plus.io.convertLocalFileSystemURL("_doc/screen_shot_img.jpg");
Screen.saveImageToAlbum(path);

8. 保存视频到相册

//保存视频到相册
var path = plus.io.convertLocalFileSystemURL('_doc/screen_capture_video.mp4');
Screen.saveVideoToAlbum(path);

9. 开启防录屏截屏

注:iOS平台需要iOS13以上有效

//开启防录屏截屏
Screen.openAntiRecordScreen();

10. 关闭防录屏截屏

注:iOS平台需要iOS13以上有效

//关闭防录屏截屏
Screen.closeAntiRecordScreen();

11. 监听截屏录屏回调,仅iOS11以上支持

//监听截屏录屏回调
Screen.setScreenCallback(function(res){
    console.log(res);
    if (res.type == "onScreenShot") {
        //监听截屏回调事件
    } else if (res.type == "onScreenCapturedDidChange")) {
        //监听屏幕录制回调事件
        var isCaptured = res.data;//true:正在录制 false:停止录制
    }
});

12. 判断是否在屏幕录制,仅iOS11以上支持

//判断是否在屏幕录制
var ret = Screen.isCaptured();//true:正在录制 false:停止录制

13. 打开相册、图片预览或其他原生界面时开启防录屏,仅android支持

//打开相册、图片预览或其他原生界面时开启防录屏截屏,仅android支持
Screen.setAntiActivityList([
    "io.dcloud.feature.nativeObj.photoview.PhotoActivity",
    //"io.dcloud.WebAppActivity",
    //"io.dcloud.ProcessMediator",
    //"io.dcloud.WebviewActivity",
    "com.dmcbig.mediapicker.PickerActivity",
    "com.dmcbig.mediapicker.PreviewActivity",
    "io.dcloud.feature.gallery.imageedit.IMGEditActivity"//,
    //"io.dcloud.sdk.activity.WebViewActivity",
    //"com.taobao.weex.devtools.toolbox.PerformanceActivity",
    //"com.blankj.utilcode.util.PermissionUtils$PermissionActivity"
]);

//设置空即可关闭防录屏截屏
Screen.setAntiActivityList([]);

14. 设置录屏通知相关配置,仅android支持

if (uni.getSystemInfoSync().platform == 'android') {
    //设置录屏通知配置,仅android支持
    Screen.setRecordConfig({
        contentTitle:"默认app名称",
        contentText:"正在录屏"
    });
}

15. 锁定屏幕方向更新布局接口,仅ios支持

plus.screen.lockOrientation('landscape-primary');

if (uni.getSystemInfoSync().platform == 'ios') {
    //锁定屏幕方向更新布局接口,仅ios支持
    Screen.lockAntiScreenOrientation(2);//2:锁定横屏 1:锁定竖屏 0:取消锁定
}

隐私、权限声明

1. 本插件需要申请的系统权限列表:

录音权限 相册权限

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问