更新记录
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:未测试 | × |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
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 = "截屏完成"
})
}