更新记录
1.3(2022-10-20)
增加Android和iOS保存相册的接口。
1.2(2022-10-08)
修复插件和萤石云插件一起打包冲突问题。
1.1(2022-05-06)
新增decryptPic接口,优化部分代码
查看更多平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:4.4 - 14.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 | 适用版本区间:9 - 17 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在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原生插件配置”->”云端插件“列表中删除该插件重新选择
乐橙云开放平台SDK原生插件使用文档
一、插件对象和标签
//乐橙SDK插件对象
var SDK = uni.requireNativePlugin('LeChange-SDK');
//语音对讲插件对象
var Talk = uni.requireNativePlugin('LeChange-Talk');
//视频实时预览和回放标签,注:当前页面必需nvue页面
<lechange_play_view ref="playView" style="width:100%;height: 200px;"
@onViewCreated="onViewCreated"
@onWindowListener="onWindowListener">
</lechange_play_view>
二、SDK插件接口
1. 初始化SDK
//初始化
SDK.initOpenApi({
token:"At_000035787a4612a64f8f8d5defb6de7e"//[必传]授权 token,需开发者从平台自行获取
}, function(res){
console.log(res);
});
2. 检测麦克风权限
//检测麦克风权限
SDK.checkPermission(function(res){
console.log(res);
if (res.result == true) {
//授权成功
} else {
//权限被拒绝
}
});
三、语音对讲插件接口
1. 设置语音对讲事件回调
//语音对讲事件回调
Talk.setListener(function(res){
console.log(res);
});
2. 语音对讲开始 ,对讲前请设置监听
//语音对讲开始 ,对讲前请设置监听
Talk.playTalk({
accessToken:"At_000035787a4612a64f8f8d5defb6de7e",//[必传]管理员 token
deviceID:"7K017E1PCG47DC4",//[必传] 设备序列号(S/N)
channelId:0,//[必传] 通道号
psk:"7K017E1PCG47DC4",//[必传]解密秘钥(未加密输入设备序列号(S/N),加密视 频需要传入设置的密码)
//playToken:"",//[可选] 播放码(不传或传错走旧的拉流协议,正确传 入走取流优化协议)
isOpt:true,//[必传] 对讲是否使用长连接 true 是| false 否,注:4窗口以上同时播放 isOpt 建议选择 false,4窗口以下 isOpt 建议选择 true。
talkType:"talk"//[必传] “talk” 普通对讲 |“call”设备 call 对讲,如门 铃
});
3. 语音对讲停止
//语音对讲停止
Talk.stopTalk();
4. 开启声音
//开启声音
Talk.playSound();
5. 关闭声音
//关闭声音
Talk.stopSound();
四、视频实时预览和回放标签
1. 获取播放器标签对象,建议在mounted里面获取,不能在onLoad里面获取
mounted() {
//获取播放器标签对象
playView = this.$refs.playView;
//注意:这里不能调用playView的任何接口,等onViewCreated回调之后才能调用标签对象的接口。
}
2. 在lechange_play_view标签@onViewCreated="onViewCreated"的回调之后才能调用标签对象的接口。
methods: {
onViewCreated() {
//初始化窗口
playView.initPlayWindow({
index:0
});
//开启手势监听
playView.openTouchListener();
}
}
3. 在lechange_play_view标签的@onWindowListener="onWindowListener"播放器回调事件。
methods: {
onWindowListener(e) {
//窗口监听事件
var res = e.detail;
console.log(res);
var type = res.type;
if (type == "onPlayerResult") {//播放事件回调
var index = res.data.index;//窗口 ID 唯一标识
var code = res.data.code;//错误码
var type = res.data.type;//业务类型, 0 RTSP,1 HLS, 5 DHHTTP ,99 OPENAPI
} else if (type == "onResolutionChanged") {//分辨率改变事件
var index = res.data.index;//窗口 ID 唯一标识
var width = res.data.width;//宽
var height = res.data.height;//高
} else if (type == "onPlayBegan") {//播放开始回调,首帧解码回调,可用于去除播放前的加载动画
var index = res.data.index;//窗口 ID 唯一标识
} else if (type == "onPlayFinished") {//播放结束事件
var index = res.data.index;//窗口 ID 唯一标识
} else {
//更多事件参考原生文档,回调类 LCOpenSDK_EventListener
}
}
}
4. 初始化播放窗口
//初始化窗口
playView.initPlayWindow({
index:0//[必传]窗口唯一 Id,上层传入
});
5. 开启手势监听
//开启手势监听
playView.openTouchListener();
6. 实时播放函数(异步)
//实时预览,备注:
//1、4 窗口以上同时播放 isOpt 建议选择 false,4 窗口以下 isOpt 建议选 择 true.
//2、imageSize 从设备详细信息中获取,设备支持的情况下可传多种分辨 率,目前支持 4k 设备有用到,其他设备默认传-1
playView.playRtspReal({
accessToken:"St_00005f962f7e3c024eb38594a3628fa5",//[必传] 管理员 token
deviceID:"7K017E1PCG47DC4",//[必传] 设备序列号(S/N)
channelId:0,//[必传] 通道号
psk:"7K017E1PCG47DC4",//[必传] 解密秘钥(未加密输入设备序列号(S/N),加密视 频需要传入设置的密码)
//playToken:"",//[可选] 播放码(不传或传错走旧的拉流协议,正确传 入走取流优化协议)
bateMode:0,//[必传] 高清:0 | 标清:1
//imageSize:-1,//[可选]码流分辨率,根据设备的能力集来确定,默认android:-1,ios:0
isOpt:true//[必传] 是否使用长连接:true 使用 | false 不使用
});
7. 停止实时播放(异步)
//停止实时预览
var isKeepLastFrame = true;//停止是否保留最后一帧:true 保留 | false 不保留
playView.stopRtspReal(isKeepLastFrame);
8. 接收设备声音
//接收设备声音
playView.playAudio();
9. 停止接收设备声音
//停止接收设备声音
playView.stopAudio();
10. 设备本地录像播放
//设备本地录像播放,备注:
//1、4 窗口以上同时播放 isOpt 建议选择 false,4 窗口以下 isOpt 建议选 择 true.
playView.playRtspPlayback({
accessToken:"St_00005f962f7e3c024eb38594a3628fa5",//[必传] 管理员 token
deviceID:"7K017E1PCG47DC4",//[必传] 设备序列号(S/N)
channelId:0,//[必传] 通道号
psk:"7K017E1PCG47DC4",//[必传] 解密秘钥(未加密输入设备序列号(S/N),加密视 频需要传入设置的密码)
//playToken:"",//[可选] 播放码(不传或传错走旧的拉流协议,正确传 入走取流优化协议)
fileId:"",//[必传] 文件标识符,平台 queryLocalRecords 协议返回的 recordId 字段
startTime:1647831608,//[必传] 起始时间(Unix 时间戳,单位为秒,设备时区)
endTime:1647832448,//[必传] 终止时间(Unix 时间戳,单位为秒,设备时区)
offsetTime:1647831608,//[必传] 录像偏移时间(单位为秒,相对于开始时间的偏 移)
definitionMode:0,//[必传] 主辅码流:0 主码流|1 辅码流
isOpt:true//[必传] 是否使用长连接:true 使用 | false 不使用
});
11. 停止录像播放(异步)
//停止实时预览
var isKeepLastFrame = true;//停止是否保留最后一帧:true 保留 | false 不保留
playView.stopRtspPlayback(isKeepLastFrame);
12. 云播放
//云播放(默认查询报警云录像类型的 url)
playView.playCloud({
accessToken:"St_00005f962f7e3c024eb38594a3628fa5",//[必传] 管理员 token
deviceID:"7K017E1PCG47DC4",//[必传] 设备序列号(S/N)
channelId:0,//[必传] 通道号
psk:"7K017E1PCG47DC4",//[必传] 解密秘钥(未加密输入设备序列号(S/N),加密视 频需要传入设置的密码)
//playToken:"",//[可选] 播放码(不传或传错走旧的拉流协议,正确传 入走取流优化协议)
recordRegionId:"",//[必传](云录像 id,通过查询云录像接口 queryCloudRecords 获得)
recordType:1000,//[必传] 云录像类型(1000 报警云录像,2000 连续云录 像)
offsetTime:50,//[必传] 偏移时间(单位为秒)
timeout:100,//[必传] 云录像拉流超时时间(单位为秒)
});
13. 停止云录像
//停止云录像
var isKeepLastFrame = true;//停止是否保留最后一帧:true 保留 | false 不保留
playView.stopCloud(isKeepLastFrame);
14. 播放暂停
//播放暂停
playView.pause();
15. 重置播放
//重置播放
playView.resume();
16. 抓图
//抓图,注:
//播放过程中可调用该接口将一帧视频保存到本地 JPG 图片
var filePath = plus.io.convertLocalFileSystemURL("_doc/img.png");//本地保存路径
playView.snapShot(filePath, function(res){
console.log(res);//0 表示成功 其他 表示调用失败
});
17. 开始录像
//开始录像
var filePath = plus.io.convertLocalFileSystemURL("_doc/video.mp4");//[必传] 文件路径
var recordType = 1;//[必传] 录像类型[mp4 = 1 | dav = 0]
playView.startRecord(filePath, recordType, function(res){
console.log(res);//0 表示成功 其他 表示调用失败
});
18. 停止录像
//停止录像
playView.stopRecord(function(res){
console.log(res);//0 表示成功 其他 表示调用失败
});