更新记录

1.1(2024-11-01)

1、解决第二次录屏闪退的bug 2、优化状态逻辑、避免频繁操作导致闪退 3、增加截屏功能

1.0.0(2024-07-29)

安卓原生插件应用外录屏


平台兼容性

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

原生插件通用使用流程:

  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原生插件配置”->”云端插件“列表中删除该插件重新选择


使用前提与注意事项

(1)录屏的时候如果需要声音输入需录音权限(android.permission.RECORD_AUDIO),无声录制可以不用授权

(2)uniapp导入插件后需要重新制作自定义基座才生效

使用步骤

引入插件

onLoad() {
    //引入插件这个操作初始化一次就可以,把screenModule存成全局变量
    this.screenModule = uni.requireNativePlugin('cfy-screen')
},

开始录屏

//开始录屏
startRec() {
    /*
    传递参数说明:
        duration:表示最大录屏时间,接收int类型的数据,单位为秒。默认值为0,表示无时长限制,比如传60代表最长录制时间为60秒,60秒后自动停止。
        voiceStatus:是否有声音,接收int类型的数据,默认值为1,1代表开启声音录制,0代表关闭声音录制。
    */
   let that = this
    const palm = {"duration":0, "voiceStatus": 1}
    this.screenModule.jhfStartScreen(palm, initObj => {
        console.log("初始化参数",initObj)//{"code":1}
        if(initObj.code == 1){
            uni.showToast({
                title: '录屏开启成功',
                icon: 'none'
            })
            //
            that.recordStatus = "录屏中"

        }else if(initObj.code == -100){
            console.log("服务中断")
            that.recordStatus = "录屏服务中断"
        }

    },finishObj=>{
        console.log("录屏结束返回参数",finishObj)
        /*"filePath": "/storage/emulated/0/Android/data/uni.UNIC2FEEDC/files/Documents/2024-10-29-10-36-18.mp4"
        //录屏的存储路径,拿到这个路径之后可以做后续操作,上传、存相册、或者展示等
        */
        uni.showToast({
            title: '录屏完成',
            icon: 'none'
        })
        that.recordStatus = "录屏完成"
    })
},

暂停录屏

//暂停录屏
pauseRec() {
    this.screenModule.jhfPauseScreen()
    this.recordStatus = "暂停中"
},

继续录屏

resumeRec() {
    this.screenModule.jhfResumeScreen()
    this.recordStatus = "录屏中"
},

结束录制

stopRec() {
    //停止录制,结束录屏之后参数在启动录屏传递的第二个回调方法中获取
    this.screenModule.jhfStopScreen()
},

开始截屏


//开始截屏
captureScreen(){
    let that = this
    uni.showLoading({
        title:"加载中"
    })
    /*
    传递参数说明:
        imgType:保存的截屏图片类型,接收string类型,默认值是“jpg”,可以传递jpg和png
    */
    const palm = {
        "imgType":"png", 
    }
    that.shortStatus = "截屏准备中"
    this.screenModule.jhfStart_CaptureScreen(palm,finishObj=>{
        console.log("截屏结束回掉",finishObj)
        uni.showToast({
            title: '截屏完成',
            icon: 'none'
        })  

        uni.hideLoading()

        that.shortStatus = "截屏完成"

    })

}

隐私、权限声明

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

android.permission.RECORD_AUDIO 录音权限 (选择有声录制需要,无声录制不需要)

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

插件不采集任何数据

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

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