JDC客户端开发教程

一. 客户端说明

客户端点击这里下载,客户端目录如下:

image.png

点击 JDC客户端启动程序.exe 即可运行。

配置文件settings.ini说明:

  • uploadUrl:客户端操作过程中产生的文件所需要上传的地址。
  • webviewUrl: 客户端打开的网页地址,如果需要打开本地html, 则将其html文件放到当前程序的目录,比如上图中的html/demo.html, 则webviewUrl=html/demo.html

二. 引入qwebchannel.js

<script type="text/javascript" src="BASE_URL/js/qwebchannel.js"></script>

BASE_URL开发环境为:http://tsdmoffice.dev.maxuetang.cn,后面正式环境暂定。

推荐直接点击这里下载下来使用。

三. 初始化

//初始化bridge对象
let bridge
new QWebChannel(qt.webChannelTransport, function(channel) {
	console.log('webChannelTransport', channel)
	bridge = channel.objects.bridge;

	bindConnect(bridge)
})

// 绑定的原生端回调函数
function bindConnect(bridge) {
	//比如office回调的绑定如下
	bridge.XT_officeSaveCallback.connect(function(res){
		console.log('QT callback js', JSON.stringify(res));
	});
}

四. 使用

  • 调用原生端接口, 比如启动WPS Office编辑器如下:
bridge.XT_startWpsOffice({
	url: url,
	sign: item.id,
	op: "OFFICE_EDIT",
	password: item.officePwd,
});
  • 原生端回调接口,使用方法为 bridge.回调函数名.connect 的方式绑定,比如office保存回调如下:
bridge.XT_officeSaveCallback.connect(function(res){
		console.log('callback js', JSON.stringify(res));
});

五. 调用原生端接口/原生端回调接口列表

1. 原生弹框

bridge.XT_information(title, content);

参数说明:

  • title: 弹框标题
  • content: 弹框内容

2. 启动office编辑器

(1) js端调用函数:

bridge.XT_startWpsOffice({
	op: "OFFICE_EDIT", // 操作标识,为固定的 OFFICE_EDIT
	sign: "123456", //自己定义,在客户端回调的时候原样返回
	url: url, // office的下载地址
	password: "1234546", // office文档的锁定密码,没有则留空或者不传
});

参数说明:

  • op: 操作标识,为固定的 OFFICE_EDIT
  • sign: 自己定义,在客户端回调的时候原样返回
  • url: office的下载地址
  • password: office文档的锁定密码,没有则留空或者不传

(2) office保存回调

bridge.XT_officeSaveCallback.connect(function(res){
		console.log('callback js', res);
});

回调返回参数说明:

  • code: 返回代码,0成功,否则失败
  • op: 操作标识,为固定的 OFFICE_EDIT
  • sign: 唯一标识,为启动office编辑器的时候所传
  • msg: 消息
  • data: 返回的数据
    • url: 保存后的office在线地址,为一个临时地址,可能会删除,建议下载后保存到自己的服务器
    • savePath: 保存的本地路径

3. 截屏

(1) js端调用

bridge.XT_screenshot({
	op: "SCREENSHOT", // 操作标识,为固定的 OFFICE_EDIT
	sign: "123456", //自己定义,在客户端回调的时候原样返回
});

参数说明:

  • op: 操作标识,为固定的 SCREENSHOT
  • sign: 自己定义,在客户端回调的时候原样返回

(2) 截图成功后原生端回调

bridge.XT_screenshotCallback.connect(function(res){
		console.log('callback js', res);
});

回调返回参数说明:

  • code: 返回代码,0成功,否则失败
  • op: 操作标识,为固定的 SCREENSHOT
  • sign:
  • msg: 消息
  • data: 返回的数据
    • url: 截屏成功后的图片在线地址,为一个临时地址,可能会删除,建议下载后保存到自己的服务器
    • savePath: 保存的本地路径

4. 获取摄像头信息

(1) js端调用

bridge.XT_cameraList({
	op: "CAMERALIST", // 操作标识,为固定的 CAMERALIST
	sign: "123456", //自己定义,在客户端回调的时候原样返回
});

参数说明:

  • op: 操作标识,为固定的 CAMERALIST
  • sign: 自己定义,在客户端回调的时候原样返回

(2) 原生端回调

bridge.XT_cameraListCallback.connect(function(res){
		console.log('callback js', res);
});

回调返回参数说明:

  • code: 返回代码,0成功,否则失败
  • op: 操作标识,为固定的 CAMERALIST
  • sign:
  • msg: 消息
  • data: 返回的摄像头数据信息,数组
    • index: 摄像头索引
    • name: 摄像头名称

5. 截取摄像头一帧图像

(1) js端调用

bridge.XT_screenshotCamera({
	op: "SCREENSHOT_CAMERA", // 操作标识,为固定的 SCREENSHOT_CAMERA
	sign: "123456", //自己定义,在客户端回调的时候原样返回
	cameraIndex:0
});

参数说明:

  • op: 操作标识,为固定的 SCREENSHOT
  • sign: 自己定义,在客户端回调的时候原样返回
  • cameraIndex: 摄像头索引,可以调用摄像头列表获取

(2) 截图成功后原生端回调

bridge.XT_screenshotCameraCallback.connect(function(res){
		console.log('callback js', res);
});

回调返回参数说明:

  • code: 返回代码,0成功,否则失败
  • op: 操作标识,为固定的 SCREENSHOT_CAMERA
  • sign:
  • msg: 消息
  • data: 返回的数据
    • url: 截屏成功后的图片在线地址,为一个临时地址,可能会删除,建议下载后保存到自己的服务器
    • savePath: 保存的本地路径

6 摄像头录像

(1) js端调用启动录像

bridge.XT_startCamera({
	op: "STARTCAMERA", // 操作标识,为固定的 STARTCAMERA
	sign: "123456", //自己定义,在客户端回调的时候原样返回
	fps: 24, //fps, 默认24
	ratio: 1 //缩放比例,默认为1,摄像头原始缩放大小
});

参数说明:

  • op: 操作标识,为固定的 STARTCAMERA
  • sign: 自己定义,在客户端回调的时候原样返回
  • fps: 24, 帧率,整数值,默认24
  • ratio: 1 缩放比例,默认为1,摄像头原始缩放大小,若为0.5,则大小缩放为一半

(2) js端停止录像

bridge.XT_stopCamera({
	op: "STOPCAMERA", // 操作标识,为固定的 STOPCAMERA
	sign: "123456", //自己定义,在客户端回调的时候原样返回
});

参数说明:

  • op: 操作标识,为固定的 STOPCAMERA
  • sign: 自己定义,在客户端回调的时候原样返回

(3) 视频录像结果回调

bridge.XT_cameraCallback.connect(function(res){
		console.log('callback js', res);
});

参数说明:

  • code: 返回代码,0成功,否则失败
  • op: 操作标识,为固定的 STARTCAMERA/STOPCAMERA
  • sign: 自己定义,在客户端回调的时候原样返回
  • msg: 消息

7. 获取录音设备信息

(1) js端调用

bridge.XT_audioList({
	op: "AUDIOLIST", // 操作标识,为固定的 AUDIOLIST
	sign: "123456", //自己定义,在客户端回调的时候原样返回
});

参数说明:

  • op: 操作标识,为固定的 AUDIOLIST
  • sign: 自己定义,在客户端回调的时候原样返回

(2) 原生端回调

bridge.XT_audioListCallback.connect(function(res){
		console.log('callback js', res);
});

回调返回参数说明:

  • code: 返回代码,0成功,否则失败
  • op: 操作标识,为固定的 AUDIOLIST
  • sign:
  • msg: 消息
  • data: 返回的录音设备数据信息,数组
    • index: 录音设备索引
    • name: 录音设备名称

8. 录音

(1) js端调用 开始录音

bridge.XT_startAudioRecord({
	op: "AUDIO_START_RECORD", // 操作标识,为固定的 AUDIO_START_RECORD
	sign: "123456", //自己定义,在客户端回调的时候原样返回
	index: index //录音设备索引
});

参数说明:

  • op: 操作标识,为固定的 AUDIO_START_RECORD
  • sign: 自己定义,在客户端回调的时候原样返回
  • index: 录音设备索引

(2) js端调用 停止录音

bridge.XT_stopAudioRecord({
	op: "AUDIO_STOP_RECORD", // 操作标识,为固定的 AUDIO_STOP_RECORD
	sign: "123456", //自己定义,在客户端回调的时候原样返回
});

参数说明:

  • op: 操作标识,为固定的 AUDIO_STOP_RECORD
  • sign: 自己定义,在客户端回调的时候原样返回

(3) 原生端回调

bridge.XT_audioCallback.connect(function (res) {
	console.log('XT_audioCallback', res)
});

回调返回参数说明:

  • code: 返回代码,0成功,否则失败
  • op: 操作标识,为固定的 AUDIO_START_RECORD/AUDIO_STOP_RECORD
  • sign:
  • msg:

8. 教师端直播录像接口

(1) js端调用 直播录像

bridge.XT_silentLiveStart({
	op: "SILENT_LIVE_START", // 操作标识,为固定的 SILENT_LIVE_START
	sign: "123456", //自己定义,在客户端回调的时候原样返回
	videoType: [], //视频类型索引,-1屏幕 大于0,摄像头的索引
	audioType: 0, //音频设备索引,-1为系统声音
	type: 0, //0推流+本地存储, 1只推流, 2只本地存储
	userType:0 //用户类型,比如 0:老师,1:学生
	localStorage: 'path', //本地存储路径,默认为应用安装目录下的filetemp
	streamIp: '', //流媒体服务器地址
});

参数说明:

  • op: 操作标识,为固定的 SILENT_LIVE_START
  • sign: 自己定义,在客户端回调的时候原样返回
  • videoType: 视频类型索引,-1屏幕 -2第一个摄像头 大于0,摄像头的索引
  • audioType: 音频设备索引,-1为系统声音 -2静音
  • type: 0推流+本地存储, 1只推流, 2只本地存储
  • userType:0 //用户类型,比如 0:老师,1:学生
  • localStorage: 本地存储路径,默认为应用安装目录下的filetemp
  • streamIp: 流媒体服务器地址

(2) js端调用 停止直播录像

bridge.XT_silentLiveStop({
	op: "SILENT_LIVE_STOP", // 操作标识,为固定的 SILENT_LIVE_STOP
	sign: "123456", //自己定义,在客户端回调的时候原样返回
});

参数说明:

  • op: 操作标识,为固定的 SILENT_LIVE_STOP
  • sign: 自己定义,在客户端回调的时候原样返回

(2) js端调用 查看直播状态

bridge.XT_silentLiveStatus({
	op: "SILENT_LIVE_STATUS", // 操作标识,为固定的 SILENT_LIVE_STATUS
	sign: "123456", //自己定义,在客户端回调的时候原样返回
});

参数说明:

  • op: 操作标识,为固定的 AUDIO_STOP_RECORD
  • sign: 自己定义,在客户端回调的时候原样返回

(3) 原生端回调

bridge.XT_silentLiveCallback.connect(function (res) {
	console.log('XT_silentLiveCallback', res)
});

回调返回参数说明:

  • code: 返回代码,0成功,否则失败
  • op: 操作标识,为固定的 SILENT_LIVE_START/SILENT_LIVE_STOP/SILENT_LIVE_STATUS
  • sign:
  • msg:
  • data: [] 根据op类型返回不同类型的数据

SILENT_LIVE_START 返回的 data 数据格式如下:

[
	{
		"videoType": -1,
		"webrtcUrl": "http://124.71.102.133:8082/index/api/webrtc?app=live&stream=SCREEN-20220817085150&type=play"
	}
]

SILENT_LIVE_STOP 当前没有返回的 data 数据

SILENT_LIVE_STATUS 返回的 data 数据格式如下:

[
	{
		"index": 0,// 摄像头索引 -1为屏幕
		"ispush": true, //是否推流
		"isrun": true, //是否运行
		"issave": true //是否本地存储
	}
]