larksr_websdk 3.2.323 → 3.2.326
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/doc/config.md +169 -0
- package/dist/doc/events.md +149 -0
- package/dist/doc/functions.md +465 -0
- package/dist/doc/index.md +82 -0
- package/dist/doc/member_variables.md +385 -0
- package/dist/doc/sdkid_encryption.md +40 -0
- package/dist/doc/update.md +266 -0
- package/dist/larksr-web-sdk.min.js +1 -1
- package/dist/types/api.d.ts +131 -0
- package/dist/types/appli_params.d.ts +291 -0
- package/dist/types/common/cmd.d.ts +28 -0
- package/dist/types/common/constant.d.ts +4 -0
- package/dist/types/common/interface.d.ts +30 -0
- package/dist/types/config.d.ts +59 -0
- package/dist/types/event/event_base.d.ts +11 -0
- package/dist/types/event/iframe_poster.d.ts +9 -0
- package/dist/types/index.d.ts +23 -0
- package/dist/types/lark/Worker.d.ts +0 -0
- package/dist/types/lark/application.d.ts +185 -0
- package/dist/types/lark/custom.d.ts +7 -0
- package/dist/types/lark/ice_candiadate_parser.d.ts +24 -0
- package/dist/types/lark/lark_event_type.d.ts +113 -0
- package/dist/types/lark/message.d.ts +20 -0
- package/dist/types/lark/peer_connection.d.ts +178 -0
- package/dist/types/lark/recoder.d.ts +55 -0
- package/dist/types/lark/sdp_util.d.ts +36 -0
- package/dist/types/lark/test_pixel_streaming.d.ts +54 -0
- package/dist/types/lark/websocket_channel.d.ts +56 -0
- package/dist/types/lark/websocket_proxy.d.ts +56 -0
- package/dist/types/larksr.d.ts +998 -0
- package/dist/types/localization/base.d.ts +8 -0
- package/dist/types/localization/gesture_ins.d.ts +4 -0
- package/dist/types/localization/language.d.ts +6 -0
- package/dist/types/localization/loader.d.ts +14 -0
- package/dist/types/localization/message.d.ts +81 -0
- package/dist/types/localization/ui.d.ts +58 -0
- package/dist/types/operation/gamepad_handler.d.ts +67 -0
- package/dist/types/operation/gesture.d.ts +72 -0
- package/dist/types/operation/gesture_handler.d.ts +53 -0
- package/dist/types/operation/handler_base.d.ts +8 -0
- package/dist/types/operation/keyboard_handler.d.ts +21 -0
- package/dist/types/operation/keymap.d.ts +24 -0
- package/dist/types/operation/letter_keymap.d.ts +8 -0
- package/dist/types/operation/mouse_handler.d.ts +42 -0
- package/dist/types/operation/num_keymap.d.ts +12 -0
- package/dist/types/operation/operation.d.ts +97 -0
- package/dist/types/operation/pixel_streaming_input.d.ts +82 -0
- package/dist/types/operation/touch_handler.d.ts +11 -0
- package/dist/types/operation/utils.d.ts +18 -0
- package/dist/types/protobuf/cloudlark.d.ts +7855 -0
- package/dist/types/screen_state.d.ts +118 -0
- package/dist/types/utils/browser_type.d.ts +37 -0
- package/dist/types/utils/capabilities.d.ts +54 -0
- package/dist/types/utils/full_screen.d.ts +25 -0
- package/dist/types/utils/ios-inner-height.d.ts +4 -0
- package/dist/types/utils/lock_pointer.d.ts +23 -0
- package/dist/types/utils/log.d.ts +25 -0
- package/dist/types/utils/scale_mode.d.ts +26 -0
- package/dist/types/utils/unit.d.ts +142 -0
- package/package.json +1 -1
- package/types/api.d.ts +5 -0
- package/types/appli_params.d.ts +2 -0
- package/types/lark/application.d.ts +7 -1
- package/types/lark/peer_connection.d.ts +5 -1
- package/types/larksr.d.ts +69 -5
- package/types/protobuf/cloudlark.d.ts +473 -2
- package/types/screen_state.d.ts +5 -3
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
# LarkSR 对象成员变量
|
|
2
|
+
|
|
3
|
+
LarkSR 对象成员变量,注意以下划线开头的变量为内部使用私有变量或只读成员变量,不建议修改直接使用。
|
|
4
|
+
|
|
5
|
+
> 以下代码中 larksr 为创建好的 LarkSR 对象实例。省略创建过程。
|
|
6
|
+
|
|
7
|
+
```javascript
|
|
8
|
+
let larksr;
|
|
9
|
+
|
|
10
|
+
...// create code.
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## 视频组件
|
|
14
|
+
|
|
15
|
+
1. `videoComponent` 视频组件
|
|
16
|
+
|
|
17
|
+
```javascript
|
|
18
|
+
// 获取播放的 <video /> 视频元素
|
|
19
|
+
larksr.videoComponent.getVideo();
|
|
20
|
+
// 播放视频,async 方法播放失败抛出异常
|
|
21
|
+
larksr.videoComponent.playVideo();
|
|
22
|
+
// 停止视频播放
|
|
23
|
+
larksr.videoComponent.stopVideo();
|
|
24
|
+
// 播放视频声音,取消静音播放
|
|
25
|
+
larksr.videoComponent.sountPlayout();
|
|
26
|
+
// 截取一帧,返回 base64,并抛出截图成功事件
|
|
27
|
+
larksr.videoComponent.captrueFrame(data);
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
2. `videoElement` html `video` 视频元素本身
|
|
31
|
+
|
|
32
|
+
```javascript
|
|
33
|
+
larksr.videoElement;
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
3. 控制显示元素
|
|
37
|
+
|
|
38
|
+
```javascript
|
|
39
|
+
// 是否显示移动端触摸点
|
|
40
|
+
larksr.isEnableTouchPoint = false;
|
|
41
|
+
// 是否显示载入画面时底部文字
|
|
42
|
+
larksr.isEnableLoadingStateBar = false;
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
```javascript
|
|
46
|
+
// 设置缩放模式
|
|
47
|
+
larksr.scaleMode = ScaleMode.CONTAIN_APP;
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
4. 虚拟鼠标和触摸点
|
|
51
|
+
|
|
52
|
+
```javascript
|
|
53
|
+
/**
|
|
54
|
+
* 虚拟鼠标的当前位置,相对于整体容器
|
|
55
|
+
*/
|
|
56
|
+
larksr.virtualCursorPosition
|
|
57
|
+
/**
|
|
58
|
+
* 虚拟鼠标的当前位置,内部缩放容器,与实际显示虚拟鼠标 CSS 样式相同
|
|
59
|
+
*/
|
|
60
|
+
larksr.virtualCursorPositionRaw
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
例:
|
|
64
|
+
|
|
65
|
+
下面示例代码使用 react 演示点击一个按钮,同步一个外层的元素和虚拟鼠标的位置
|
|
66
|
+
|
|
67
|
+
```javascript
|
|
68
|
+
// ....
|
|
69
|
+
// 省略 react 创建代码
|
|
70
|
+
export default class App extends React.Component {
|
|
71
|
+
private state: any = {
|
|
72
|
+
pointPosition: {
|
|
73
|
+
x: 0,
|
|
74
|
+
y: 0,
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
// ....
|
|
78
|
+
// 此处省略 larksr 创建过程等其他代码
|
|
79
|
+
render() {
|
|
80
|
+
return (
|
|
81
|
+
<div>
|
|
82
|
+
// ...
|
|
83
|
+
// 省略其他元素
|
|
84
|
+
<div style={{
|
|
85
|
+
zIndex: 1000,
|
|
86
|
+
position: 'absolute',
|
|
87
|
+
left: this.state.pointPosition.x,
|
|
88
|
+
top: this.state.pointPosition.y,
|
|
89
|
+
backgroundColor: "red",
|
|
90
|
+
width: 50,
|
|
91
|
+
height: 50,
|
|
92
|
+
borderRadius: "50%"
|
|
93
|
+
}}>
|
|
94
|
+
</div>
|
|
95
|
+
<button style={{pointerEvents: "all"}}
|
|
96
|
+
onClick={()=>{
|
|
97
|
+
// 获取虚拟鼠标的位置
|
|
98
|
+
console.log("touch point", this.larksr.virtualCursorPosition);
|
|
99
|
+
// 同步虚拟鼠标的位置
|
|
100
|
+
this.setState({
|
|
101
|
+
pointPosition: this.larksr.virtualCursorPosition,
|
|
102
|
+
})
|
|
103
|
+
}}
|
|
104
|
+
>
|
|
105
|
+
touchPoint
|
|
106
|
+
</button>
|
|
107
|
+
</div>
|
|
108
|
+
)
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## 配置参数
|
|
114
|
+
|
|
115
|
+
```javascript
|
|
116
|
+
// `config` IAppliParams传入的 ILarkSRConfig 对象
|
|
117
|
+
larksr.config;
|
|
118
|
+
// `params` 构造函数中传入的 IAppliParams 对象
|
|
119
|
+
larksr.params;
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## 用户模式
|
|
123
|
+
|
|
124
|
+
```javascript
|
|
125
|
+
// `playerModeType` 当前的玩家模式;
|
|
126
|
+
larksr.playerModeType;
|
|
127
|
+
// `userType` 当前用户类型;
|
|
128
|
+
larksr.userType;
|
|
129
|
+
// 当前是否是交互模式,交互默认即可以操作的模式
|
|
130
|
+
larksr.isInteractiveMode;
|
|
131
|
+
// 是否是观看者模式
|
|
132
|
+
larksr.isObMode;
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## 当前 app 的状态
|
|
136
|
+
|
|
137
|
+
```javascript
|
|
138
|
+
larksr.appState;
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
具体状态值如下:
|
|
142
|
+
|
|
143
|
+
```javascript
|
|
144
|
+
export enum APP_STATE {
|
|
145
|
+
BEFORE_CREATE = 0,
|
|
146
|
+
INITED,
|
|
147
|
+
WEBSOCKET_CHANNEL_OPEN,
|
|
148
|
+
LOGIN_SUCCESS,
|
|
149
|
+
RTC_CONNECTED,
|
|
150
|
+
MEDIA_LOADED,
|
|
151
|
+
MEDIA_PLAED,
|
|
152
|
+
RTC_RETRY,
|
|
153
|
+
APP_RETRY,
|
|
154
|
+
BEFORE_DESTORY,
|
|
155
|
+
WEBSOCKET_CLOSED,
|
|
156
|
+
RTC_CLOSED,
|
|
157
|
+
DESTROYED,
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
```javascript
|
|
162
|
+
// 云端画面是否准备好,准备好后才可以发送输入事件
|
|
163
|
+
larksr.remoteScreenReady
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## 当前的屏幕状态
|
|
167
|
+
|
|
168
|
+
```javascript
|
|
169
|
+
// 通知视口改变或者需要重新计算显示属性
|
|
170
|
+
larksr.screenState.resize();
|
|
171
|
+
// 当前云端 APP 的大小
|
|
172
|
+
larksr.screenState.appSize;
|
|
173
|
+
// 当前云端 APP 的鼠标状态
|
|
174
|
+
larksr.screenState.appMouseMode;
|
|
175
|
+
// 当前渲染容器的大小
|
|
176
|
+
larksr.screenState.viewPort;
|
|
177
|
+
// 强制横屏模式
|
|
178
|
+
larksr.screenState.screenOrientation;
|
|
179
|
+
// 缩放模式
|
|
180
|
+
larksr.screenState.scaleMode;
|
|
181
|
+
// 是否全屏状态
|
|
182
|
+
larksr.screenState.isFullScreen;
|
|
183
|
+
// 是否锁定鼠标状态
|
|
184
|
+
larksr.screenState.isLockMouse;
|
|
185
|
+
// 云端应用的鼠标样式
|
|
186
|
+
larksr.screenState.cursorStyle;
|
|
187
|
+
// 初始化鼠标模式
|
|
188
|
+
larksr.screenState.initCursorMode;
|
|
189
|
+
// 是否是手机模式
|
|
190
|
+
larksr.screenState.isMobile;
|
|
191
|
+
// 是否渲染本地鼠标
|
|
192
|
+
larksr.screenState.isLocalRenderMouse;
|
|
193
|
+
// 是否锁定鼠标
|
|
194
|
+
larksr.screenState.isLockMosue;
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
## 操作类实例
|
|
198
|
+
|
|
199
|
+
```javascript
|
|
200
|
+
// 开始监听,默认情况下自动开始
|
|
201
|
+
larksr.op.startListening();
|
|
202
|
+
// 结束监听输入事件.
|
|
203
|
+
larksr.op.stopListenling();
|
|
204
|
+
// 开启或关闭鼠标输入事件
|
|
205
|
+
larksr.op.setMouseEnable(enable: boolean);
|
|
206
|
+
// 开启或关闭键盘输入事件
|
|
207
|
+
larksr.op.setKeyboardEnable(enable: boolean);
|
|
208
|
+
// 开启或关闭手柄输入事件
|
|
209
|
+
larksr.op.setGamepadEnable(enable: boolean);
|
|
210
|
+
// 开启或关闭触摸屏幕输入事件
|
|
211
|
+
larksr.op.setTouchEnable(enable: boolean);
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### 操作类中的 keyboardhandler
|
|
215
|
+
|
|
216
|
+
```javascript
|
|
217
|
+
// 设置键盘事件默认拦截浏览器默认行为。
|
|
218
|
+
// 在 preventKeys 中的将拦截,如果数组设置为空则全部不拦截
|
|
219
|
+
// 默认拦截 F1 F5 F12
|
|
220
|
+
larksr.op.keyboardHandler.preventKeys = [["F1", "F5", "F12"]];
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### 操作类中的 gestureHandler
|
|
224
|
+
|
|
225
|
+
gestureHandler 处理将移动端触摸事件对应为鼠标事件的过程。
|
|
226
|
+
|
|
227
|
+
#### 调节触摸事件触发参数
|
|
228
|
+
|
|
229
|
+
```javascript
|
|
230
|
+
// 触摸事件在对应为鼠标事件中,提供的鼠标相对移动的速度。
|
|
231
|
+
// 即 rx = (pxNew-pxOld) * relativeMouseMoveSpeed
|
|
232
|
+
// ry = (pyNew-pyOld)* relativeMouseMoveSpeed
|
|
233
|
+
// 可能会影响使用相对移动(rawInput)判断的云端应用的效果
|
|
234
|
+
larksr.op.gestureHandler.relativeMouseMoveSpeed = 2;
|
|
235
|
+
// 触摸模拟为鼠标事件时,模拟点击的判断范围。
|
|
236
|
+
// 实际的鼠标事件点击时一般不会移动,而触摸操作基本上一定会触发移动事件
|
|
237
|
+
// 如果要模拟PC上的击事件,比如单击或双击,在鼠标按下和抬起之间不应再插入鼠标移动
|
|
238
|
+
// 当触发移动事件时,超出该判断范围才发送移动事件。
|
|
239
|
+
// 注意,修改该值可能会导致云端应用上判断单击或双击失败,如果云端应用不包含类似操作基本影响不大
|
|
240
|
+
larksr.op.gestureHandler.tapLimitRadius = 20;
|
|
241
|
+
// 在该时间范围下将尝试发送单机按下事件,修改该值可能会导致单机事件的触发成功率
|
|
242
|
+
larksr.op.gestureHandler.tapLimitTimeout = 100;
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
#### 拦截触摸事件回调
|
|
246
|
+
|
|
247
|
+
可以通过拦截触摸事件回调的方式,设置具体的触摸事件和鼠标事件的对应关系。
|
|
248
|
+
|
|
249
|
+
> 通过 larksr.op.gestureHandler.gestureCallback 设置回调函数
|
|
250
|
+
> 下面例子中的 GESTURE_TYPE 为 SDK 导出的手势事件类型,如果用 amd 方式引入的 SDK,所有导出类型均在 larksr_websdk 全局对象下。
|
|
251
|
+
> 如果是使用其他方式引入 SDK,如 improt 方式导入 `import { GESTURE_TYPE } from 'larksr_websdk'`
|
|
252
|
+
> 以下示例代码忽略 larksr 创建等过程
|
|
253
|
+
|
|
254
|
+
```javascript
|
|
255
|
+
// 参数 event 有如下字段
|
|
256
|
+
// event : {
|
|
257
|
+
// type: GESTURE_TYPE; 手势事件的类型
|
|
258
|
+
// x: number; 转换为云端的坐标 x
|
|
259
|
+
// y: number; 转换为云端的坐标 y
|
|
260
|
+
// rx: number; 转换为云端的坐标 rx
|
|
261
|
+
// ry: number; 转换为云端的坐标 ry
|
|
262
|
+
// edge: boolean; 是否到触摸边缘
|
|
263
|
+
// rawEvent: any; 未转换为云端坐标的触摸事件
|
|
264
|
+
// }
|
|
265
|
+
//
|
|
266
|
+
larksr.op.gestureHandler.gestureCallback = (event) => {
|
|
267
|
+
console.log(event);
|
|
268
|
+
const p = event;
|
|
269
|
+
switch (event.type) {
|
|
270
|
+
// 单只触摸开始移动鼠标到当前位置
|
|
271
|
+
case GESTURE_TYPE.SINGLE_FINGER_TOUCH_START:
|
|
272
|
+
larksr.mouseMove(p.x, p.y, p.rx, p.ry);
|
|
273
|
+
break;
|
|
274
|
+
// 单指单击 -》左键单击
|
|
275
|
+
case GESTURE_TYPE.SINGLE_FINGER_TAP:
|
|
276
|
+
larksr.mouseTap(p.x, p.y, CloudLark.MouseKey.LEFT);
|
|
277
|
+
break;
|
|
278
|
+
// 单指按下 -》 移动鼠标, 按下鼠标
|
|
279
|
+
case GESTURE_TYPE.SINGLE_FINGER_TAP_DOWN:
|
|
280
|
+
// move mouse first
|
|
281
|
+
larksr.mouseMove(p.x, p.y, p.rx, p.ry);
|
|
282
|
+
// sync tap down
|
|
283
|
+
larksr.mouseDown(p.x, p.y, CloudLark.MouseKey.LEFT);
|
|
284
|
+
break;
|
|
285
|
+
// 单指抬起 -》 移动鼠标, 抬起鼠标
|
|
286
|
+
case GESTURE_TYPE.SINGLE_FINGER_TAP_UP:
|
|
287
|
+
// move mouse first
|
|
288
|
+
larksr.moseMove(p.x, p.y, p.rx, p.ry);
|
|
289
|
+
// sync tap down
|
|
290
|
+
larksr.mouseUp(p.x, p.y, CloudLark.MouseKey.LEFT);
|
|
291
|
+
break;
|
|
292
|
+
// 单指滑动 -》 移动鼠标
|
|
293
|
+
case GESTURE_TYPE.SINGLE_FINGER_SWIPE:
|
|
294
|
+
larksr.moseMove(p.x, p.y, p.rx, p.ry);
|
|
295
|
+
break;
|
|
296
|
+
// 单指开始滑动 -》 鼠标左键按下
|
|
297
|
+
case GESTURE_TYPE.SINGLE_FINGER_SWIPE_START:
|
|
298
|
+
// sync tap down
|
|
299
|
+
larksr.mouseDown(p.x, p.y, CloudLark.MouseKey.LEFT);
|
|
300
|
+
break;
|
|
301
|
+
// 单指滑动结束 -》 鼠标左键抬起
|
|
302
|
+
case GESTURE_TYPE.SINGLE_FINGER_SWIPE_END:
|
|
303
|
+
larksr.mouseUp(p.x, p.y, CloudLark.MouseKey.LEFT);
|
|
304
|
+
break;
|
|
305
|
+
// 双指单击 -》 鼠标右键单击
|
|
306
|
+
case GESTURE_TYPE.DOUBLE_FINGER_TAP:
|
|
307
|
+
larksr.mouseTap(p.x, p.y, CloudLark.MouseKey.RIGHT);
|
|
308
|
+
break;
|
|
309
|
+
// 双指按下 -》 移动鼠标
|
|
310
|
+
case GESTURE_TYPE.DOUBLE_FINGER_TAP_DOWN:
|
|
311
|
+
// move mouse first
|
|
312
|
+
larksr.moseMove(p.x, p.y, p.rx, p.ry);
|
|
313
|
+
// 抬起所有
|
|
314
|
+
// sync tap down
|
|
315
|
+
larksr.mouseDown(p.x, p.y, CloudLark.MouseKey.RIGHT);
|
|
316
|
+
break;
|
|
317
|
+
case GESTURE_TYPE.DOUBLE_FINGER_TAP_UP:
|
|
318
|
+
// move mouse first
|
|
319
|
+
larksr.moseMove(p.x, p.y, p.rx, p.ry);
|
|
320
|
+
// sync tap up
|
|
321
|
+
larksr.mouseUp(p.x, p.y, CloudLark.MouseKey.RIGHT);
|
|
322
|
+
break;
|
|
323
|
+
// 双指移动 -》 滚动滚轮
|
|
324
|
+
case GESTURE_TYPE.DOUBLE_FINGER_SWIPE:
|
|
325
|
+
// move mouse mid
|
|
326
|
+
// this.$emitMouseWheel(p.x, p.y, e.motion.y);
|
|
327
|
+
larksr.moseMove(p.x, p.y, p.rx, p.ry);
|
|
328
|
+
break;
|
|
329
|
+
case GESTURE_TYPE.DOUBLE_FINGER_EXPAND:
|
|
330
|
+
// windows 消息 deltaY 上是 +120 下是 -120
|
|
331
|
+
// 双指扩展向外滑动
|
|
332
|
+
// 滚轮向下移动
|
|
333
|
+
// move mouse mid
|
|
334
|
+
larksr.mouseWheel(p.x, p.y, 120);
|
|
335
|
+
break;
|
|
336
|
+
case GESTURE_TYPE.DOUBLE_FINGER_SHRINK:
|
|
337
|
+
// windows 消息 deltaY 上是 +120 下是 -120
|
|
338
|
+
// 双指向内滑动
|
|
339
|
+
// 滚轮向上移动
|
|
340
|
+
larksr.mouseWheel(p.x, p.y, -120);
|
|
341
|
+
break;
|
|
342
|
+
case GESTURE_TYPE.DOUBLE_FINGER_SWIPE_END:
|
|
343
|
+
// sync tap up
|
|
344
|
+
larksr.mouseUp(p.x, p.y, CloudLark.MouseKey.RIGHT);
|
|
345
|
+
break;
|
|
346
|
+
// 三指单击 -》 鼠标中键单击
|
|
347
|
+
case GESTURE_TYPE.TRIPLE_FINGER_TAP:
|
|
348
|
+
larksr.mouseTap(p.x, p.y, CloudLark.MouseKey.MIDDLE);
|
|
349
|
+
break;
|
|
350
|
+
// 三指滑动 -》 移动鼠标
|
|
351
|
+
case GESTURE_TYPE.TRIPLE_FINGER_SWIPE:
|
|
352
|
+
larksr.mouseMove(p.x, p.y, p.rx, p.ry);
|
|
353
|
+
break;
|
|
354
|
+
// 三指滑动按下 -》 鼠标中键按下
|
|
355
|
+
case GESTURE_TYPE.TRIPLE_FINGER_SWIPE_START:
|
|
356
|
+
larksr.mouseMove(p.x, p.y, p.rx, p.ry);
|
|
357
|
+
//
|
|
358
|
+
larksr.mouseDown(p.x, p.y, CloudLark.MouseKey.MIDDLE);
|
|
359
|
+
break;
|
|
360
|
+
// 三指滑动按下 -》 鼠标中键抬起
|
|
361
|
+
case GESTURE_TYPE.TRIPLE_FINGER_SWIPE_END:
|
|
362
|
+
// sync tap up
|
|
363
|
+
larksr.mouseUp(p.x, p.y, CloudLark.MouseKey.MIDDLE);
|
|
364
|
+
break;
|
|
365
|
+
// 所有手指抬起
|
|
366
|
+
case GESTURE_TYPE.RELEASE:
|
|
367
|
+
break;
|
|
368
|
+
default:
|
|
369
|
+
break;
|
|
370
|
+
}
|
|
371
|
+
};
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
## 全屏锁屏
|
|
375
|
+
|
|
376
|
+
```javascript
|
|
377
|
+
// 进入全屏模式
|
|
378
|
+
larksr.fullScreen.launchFullScreen();
|
|
379
|
+
// 退出全屏模式
|
|
380
|
+
larksr.fullScreen.exitFullscreen();
|
|
381
|
+
// 锁定鼠标
|
|
382
|
+
larksr.lockPointer.lockPointer();
|
|
383
|
+
// 释放鼠标
|
|
384
|
+
larksr.lockPointer.exitPointerLock();
|
|
385
|
+
```
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# SDK ID 加密配置
|
|
2
|
+
|
|
3
|
+
使用 larksr SDK 首先需要从平行云商务 business@pingxingyun.com 或者在 https://www.pingxingyun.com/console 获取 SDK 授权码(注意不是服务器端的授权码)。
|
|
4
|
+
|
|
5
|
+
通过 larksr config 传入 `authCode` 或者通过 larksr.initSDKAuthCode('您的SDKID') 方法设置授权码。
|
|
6
|
+
|
|
7
|
+
为保护 SDK ID 的安全性,可以从服务端 3.2.3.0 开始可以对 SDK ID 进行加密配置。
|
|
8
|
+
|
|
9
|
+
配置 SDK 加密:
|
|
10
|
+
|
|
11
|
+
1. 首先在 larkxr 平台后台登陆,找到系统设定->接入管理->SDKID密钥管理生成 SDK ID 加密 KEY
|
|
12
|
+
|
|
13
|
+
2. 对 SDK ID 进行加密
|
|
14
|
+
|
|
15
|
+
以下 java 代码为例:
|
|
16
|
+
|
|
17
|
+
```java
|
|
18
|
+
public static void main(String[] args) {
|
|
19
|
+
/**
|
|
20
|
+
* @param res 被加密的原生字符串
|
|
21
|
+
* @param key 16位字符作为加密的key
|
|
22
|
+
*/
|
|
23
|
+
try {
|
|
24
|
+
String res = "被加密的原生字符串";
|
|
25
|
+
String key = "16位字符作为加密的key";
|
|
26
|
+
String ALGORITHM = "AES";
|
|
27
|
+
String CHARSET = "UTF-8";
|
|
28
|
+
SecretKeySpec sks = new SecretKeySpec(key.getBytes(CHARSET), ALGORITHM);
|
|
29
|
+
Cipher cipher = Cipher.getInstance(ALGORITHM);
|
|
30
|
+
cipher.init(cipher.ENCRYPT_MODE, sks);
|
|
31
|
+
byte[] result = cipher.doFinal(res.getBytes());
|
|
32
|
+
// BASE64Encoder encoder = new BASE64Encoder(); //java8
|
|
33
|
+
Base64.Encoder encoder = Base64.getEncoder(); //java9+
|
|
34
|
+
System.out.println(encoder.encodeToString(result));
|
|
35
|
+
}catch (Exception e){
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
3. 获取到加密好的字符串传入 lark 配置中即可。
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
# 更新
|
|
2
|
+
|
|
3
|
+
## V3.2.30
|
|
4
|
+
|
|
5
|
+
> V3.2.30 仅支持服务端 [V3.2.3.1](https://www.pingxingyun.com/devCenter.html) 以上版本。
|
|
6
|
+
> [老版本 SDK Demo 下载](https://github.com/pingxingyun/lark_sr_websdk_demos/releases/tag/V3.2.10)
|
|
7
|
+
|
|
8
|
+
1. [添加像素流送支持](https://docs.unrealengine.com/4.27/zh-CN/SharingAndReleasing/PixelStreaming/PixelStreamingIntro/)。
|
|
9
|
+
2. 完善安全性, 添加 SDK ID 加密配置。
|
|
10
|
+
3. 移除 CreateLarkSRClientFromePXYHost,CreateLarkSRClientFromeAPI, CreateLarkSRClientFromeUrl 函数。直接使用 `new LarkSR(config: ILarkSRConfig)` 方式创建对象。
|
|
11
|
+
|
|
12
|
+
## V3.2.33
|
|
13
|
+
|
|
14
|
+
1. 添加智能语音相关接口支持
|
|
15
|
+
|
|
16
|
+
LarkSR 对象添加:
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
/**
|
|
20
|
+
* 开始智能语音对话文本输入
|
|
21
|
+
* 应在只能语音为开始状态下开始输入
|
|
22
|
+
* @param text 输入的文本
|
|
23
|
+
* @returns 返回对话 ID
|
|
24
|
+
*/
|
|
25
|
+
public aiDmTextInput(text: string) {
|
|
26
|
+
/**
|
|
27
|
+
* 开始智能语音对话语音输入,自动请求录音权限
|
|
28
|
+
* 应在只能语音为开始状态下开始输入
|
|
29
|
+
* @returns 成功返回对话id,失败返回异常
|
|
30
|
+
*/
|
|
31
|
+
public startAiDmVoiceInput() {
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* 停止智能语音输入,通知语音引擎当前用户输入对话结束
|
|
35
|
+
* @returns 返回当前对话的id
|
|
36
|
+
*/
|
|
37
|
+
public stopAiDmVoiceInput() {
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
LarkSR 添加如下事件:
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
larksr.on('aivoicestatus', (e) => {
|
|
44
|
+
// 智能语音服务状态
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
larksr.on('aivoiceasrresult', (e) => {
|
|
48
|
+
// 智能语音转文字识别结果
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
larksr.on('aivoicedmresult', (e) => {
|
|
52
|
+
// 智能语音对话结果
|
|
53
|
+
});
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## V3.2.37
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
/**
|
|
60
|
+
* 设置是否强制横屏显示内容.
|
|
61
|
+
* handelRootElementSize 必须设置为 true 才有作用。
|
|
62
|
+
* 要注意强制横屏模式下网页的坐标系xy和视觉上相反,如果通过外部输入 input 事件。要注意调整
|
|
63
|
+
* @param force 是否强制横屏
|
|
64
|
+
*/
|
|
65
|
+
setMobileForceLandScape(force: boolean): void;
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## V3.2.311
|
|
69
|
+
|
|
70
|
+
新增麦克风输入接口。客户端打开后云端应用可直接通过读取声卡上的麦克风接收到音频。
|
|
71
|
+
|
|
72
|
+
> 该功能匹配的服务端版本最低为 V3.2.51
|
|
73
|
+
> 使用该功能要注意在后台应用管理中开启音频输入功能
|
|
74
|
+
> 注意要在连接成功之后打开媒体设备。即 `mediaPlayed` 之后调用才有效
|
|
75
|
+
|
|
76
|
+
```typescript
|
|
77
|
+
/**
|
|
78
|
+
* 打开一个音频设备,要注意浏览器限制在 https 或者 localhost 下才能打开音频
|
|
79
|
+
* @param deviceId 音频设备id,如果不传将打开默认设备。@see getConnectedAudioinputDevices
|
|
80
|
+
* @returns
|
|
81
|
+
*/
|
|
82
|
+
openAudio(deviceId?: string);
|
|
83
|
+
/**
|
|
84
|
+
* 关闭当前的音频设备
|
|
85
|
+
* @returns
|
|
86
|
+
*/
|
|
87
|
+
closeAudio(): boolean | undefined;
|
|
88
|
+
/**
|
|
89
|
+
* 返回已连接的音频设备列表,设备列表中的设备的 deviceId 可用来打开某个音频设备
|
|
90
|
+
* @returns
|
|
91
|
+
*/
|
|
92
|
+
getConnectedAudioinputDevices(): Promise<MediaDeviceInfo[] | undefined>;
|
|
93
|
+
/**
|
|
94
|
+
* 设置当前已开启的音频track是否启用状态
|
|
95
|
+
* @param enable 是否启用
|
|
96
|
+
* @returns
|
|
97
|
+
*/
|
|
98
|
+
setAudioEnable(enable: boolean): void | undefined;
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
larksr 配置项新增自动打开麦克风配置,在`new LarkSR({ ... 此处省略其他配置 ... audioInputAutoStart: true})` 时传入,
|
|
102
|
+
|
|
103
|
+
> 手动传入的 `audioInputAutoStart` 优先级高于后台配置
|
|
104
|
+
|
|
105
|
+
```javascript
|
|
106
|
+
/**
|
|
107
|
+
* 当启用音频输入功能,是否自动连入音频设备。
|
|
108
|
+
* 默认关闭。
|
|
109
|
+
* 需要注意默认打开的是系统中默认的音频设备。
|
|
110
|
+
*/
|
|
111
|
+
audioInputAutoStart?: boolean;
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## V3.2.319
|
|
115
|
+
|
|
116
|
+
新增视频输入接口。客户端打开后云端应用可直接通过读取服务端的摄像头读取视频数据。
|
|
117
|
+
|
|
118
|
+
> 该功能匹配的服务端版本最低为 V3.2.61
|
|
119
|
+
> 使用该功能要注意在后台应用管理中开启视频输入功能
|
|
120
|
+
> 注意要在连接成功之后打开媒体设备。即 `mediaPlayed` 之后调用才有效
|
|
121
|
+
|
|
122
|
+
```typescript
|
|
123
|
+
/**
|
|
124
|
+
* 打开一个视频设备,要注意浏览器限制在 https 或者 localhost 下才能打开视频
|
|
125
|
+
* @param audio boolean 是否同时开启音频
|
|
126
|
+
* @param cameraId 视频设备id,如果不传将打开默认设备。@see getConnectedVideoinputDevices
|
|
127
|
+
* @returns Promise
|
|
128
|
+
*/
|
|
129
|
+
openVideo(audio?: boolean, cameraId?: string);
|
|
130
|
+
/**
|
|
131
|
+
* 打开默认媒体设备,要注意浏览器限制在 https 或者 localhost 下
|
|
132
|
+
* 如果需要指定特殊的媒体设备请单独使用 @see openAudio @see openVideo
|
|
133
|
+
* @param video 是否包含视频
|
|
134
|
+
* @param audio 是否包含音频
|
|
135
|
+
* @returns Promise
|
|
136
|
+
*/
|
|
137
|
+
openDefaultMedia(video?: boolean, audio?: boolean)>;
|
|
138
|
+
/**
|
|
139
|
+
* 返回已连接的视频设备
|
|
140
|
+
* @returns Promise<MediaDeviceInfo[]>
|
|
141
|
+
*/
|
|
142
|
+
getConnectedVideoinputDevices();
|
|
143
|
+
/**
|
|
144
|
+
* 设置当前已开启的视频track是否启用状态
|
|
145
|
+
* @param enable 是否启用
|
|
146
|
+
* @returns void
|
|
147
|
+
*/
|
|
148
|
+
setVideoEnable(enable: boolean);
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
larksr 配置项新增自动打开视频输入配置,在`new LarkSR({ ... 此处省略其他配置 ... videoInputAutoStart: true})` 时传入
|
|
152
|
+
|
|
153
|
+
> 手动传入的 `videoInputAutoStart` 优先级高于后台配置
|
|
154
|
+
|
|
155
|
+
```javascript
|
|
156
|
+
/**
|
|
157
|
+
* 当启用视频输入功能,是否自动连入视频设备。
|
|
158
|
+
* 默认关闭。
|
|
159
|
+
* 需要注意默认打开的是系统中默认的视频设备。
|
|
160
|
+
*/
|
|
161
|
+
videoInputAutoStart?: boolean;
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## V3.2.321
|
|
165
|
+
|
|
166
|
+
larksr 配置项新增默认放大手势和鼠标滚轮对应关系和是否使用触摸屏模式,在`new LarkSR({ ... 此处省略其他配置 ... mouseZoomDirection: 0, touchOperateMode: "mouse"})` 时传入
|
|
167
|
+
|
|
168
|
+
> 手动传入的配置优先级高于后台配置
|
|
169
|
+
|
|
170
|
+
```javascript
|
|
171
|
+
/**
|
|
172
|
+
* mouseZoomDirection
|
|
173
|
+
* 用于移动端捏合缩放操作与应用鼠标缩放的对应关系
|
|
174
|
+
* 1:鼠标滚轮向上为放大,
|
|
175
|
+
* 0:鼠标滚轮向下为放大(default)
|
|
176
|
+
*/
|
|
177
|
+
mouseZoomDirection?: number;
|
|
178
|
+
/**
|
|
179
|
+
* 触摸指令模式,对应后台应用管理->应用编辑->移动端高级设置->触摸指令模式 优先级高于后台配置
|
|
180
|
+
* 触摸指令,移动端的触摸指令对应为云端的触屏还是鼠标
|
|
181
|
+
* 'touchScreen' | 'mouse'
|
|
182
|
+
*/
|
|
183
|
+
touchOperateMode?: 'touchScreen' | 'mouse';
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
captrueFrame 方法会将截图和通过返回值带出来
|
|
187
|
+
|
|
188
|
+
```javascript
|
|
189
|
+
/**
|
|
190
|
+
* 采集一帧图像
|
|
191
|
+
* @params data: any 抛出采集事件时抛出的附加data,比如采集的时间戳
|
|
192
|
+
* @return { data: any, base64: base64string } 返回传入的 data 和采集的 base64 字符串
|
|
193
|
+
*/
|
|
194
|
+
captrueFrame(data: any)
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
新增销毁方法,要注意,销毁之后 larksr 对象不再可用
|
|
198
|
+
|
|
199
|
+
```javascript
|
|
200
|
+
/**
|
|
201
|
+
* 从DOM种删除渲染组件,注意删除渲染组件之后将无法再次进入应用,所有状态将失效,不可恢复,只能重新new LarkSR
|
|
202
|
+
*/
|
|
203
|
+
destroy(): void;
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
添加操作类中的 keyboardhandler 开放访问,可用配置拦截哪些按键的默认行为
|
|
207
|
+
|
|
208
|
+
```javascript
|
|
209
|
+
// 设置键盘事件默认拦截浏览器默认行为。
|
|
210
|
+
// 在 preventKeys 中的将拦截,如果数组设置为空则全部不拦截
|
|
211
|
+
// 默认拦截 F1 F5 F12
|
|
212
|
+
larksr.op.keyboardHandler.preventKeys = [["F1", "F5", "F12"]];
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
操作类中添加 gestureHandler 公开访问,gestureHandler 处理将移动端触摸事件对应为鼠标事件的过程。
|
|
216
|
+
|
|
217
|
+
可用通过 gestureHandler 调节触摸事件触发参数
|
|
218
|
+
|
|
219
|
+
```javascript
|
|
220
|
+
// 触摸事件在对应为鼠标事件中,提供的鼠标相对移动的速度。
|
|
221
|
+
// 即 rx = (pxNew-pxOld) * relativeMouseMoveSpeed
|
|
222
|
+
// ry = (pyNew-pyOld)* relativeMouseMoveSpeed
|
|
223
|
+
// 可能会影响使用相对移动(rawInput)判断的云端应用的效果
|
|
224
|
+
larksr.op.gestureHandler.relativeMouseMoveSpeed = 2;
|
|
225
|
+
// 触摸模拟为鼠标事件时,模拟点击的判断范围。
|
|
226
|
+
// 实际的鼠标事件点击时一般不会移动,而触摸操作基本上一定会触发移动事件
|
|
227
|
+
// 如果要模拟PC上的击事件,比如单击或双击,在鼠标按下和抬起之间不应再插入鼠标移动
|
|
228
|
+
// 当触发移动事件时,超出该判断范围才发送移动事件。
|
|
229
|
+
// 注意,修改该值可能会导致云端应用上判断单击或双击失败,如果云端应用不包含类似操作基本影响不大
|
|
230
|
+
larksr.op.gestureHandler.tapLimitRadius = 20;
|
|
231
|
+
// 在该时间范围下将尝试发送单机按下事件,修改该值可能会导致单机事件的触发成功率
|
|
232
|
+
larksr.op.gestureHandler.tapLimitTimeout = 100;
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
可用通过 gestureHandler 拦截触摸事件回调, 通过 `larksr.op.gestureHandler` 设置回调函数
|
|
236
|
+
|
|
237
|
+
## V3.2.322
|
|
238
|
+
|
|
239
|
+
1. 修复某些情况下后台设置的 LOGO 会闪一下默认 LOGO 的问题
|
|
240
|
+
2. 添加 `larksr.virtualCursorPosition` 和 `larksr.virtualCursorPositionRaw` (省略 larksr 对象创建代码) 获取当前虚拟鼠标或者触摸点的位置。
|
|
241
|
+
|
|
242
|
+
## V3.2.324
|
|
243
|
+
|
|
244
|
+
1. 修复 iOS 屏幕高度判断问题
|
|
245
|
+
2. 添加获取应用列表接口 `API.GetAppliList(server: string, params: any);`
|
|
246
|
+
3. 添加获取区域列表接口 `API.RegionList(server: string, params: any);`
|
|
247
|
+
4. 添加获取后台配置UI接口 `larksr.getTouchCtrMapping()`
|
|
248
|
+
5. 添加 `RTMP_STREAM_STATE = "rtmpstreamstate"` 事件,返回云端直播推流事件
|
|
249
|
+
6. 添加 `RTMP_STREAM_ERROR = "rtmpstreamerror"` 事件,返回云端直播推流错误
|
|
250
|
+
7. 添加 `larksr.StartCloudLiveStreaming(params)` 接口,启动云端直播推流功能
|
|
251
|
+
8. 添加 `larksr.StopLiveStreaming()` 接口,关闭云端直播推流功能.
|
|
252
|
+
|
|
253
|
+
## V3.2.326
|
|
254
|
+
|
|
255
|
+
1. 截图接口 `captrueFrame(data: any, option?: { width: number; height: number;})` 添加 option 参数,可以设置截图的宽高
|
|
256
|
+
2. 添加 onlyHandleRootElementTransform 参数 `new LarkSR({ ... 此处省略其他配置 ... onlyHandleRootElementTransform: 0})`
|
|
257
|
+
|
|
258
|
+
```javascript
|
|
259
|
+
/**
|
|
260
|
+
* 是否只设置根的组件的旋转。只当 handleRootElementSize 为 true 时有效。设置根组件的旋转用于 mobileForceLandscape 模式。
|
|
261
|
+
* 默认为false,此时 SDK 会设置根组件的宽高,margin 0,padding 0
|
|
262
|
+
* 为true并且handleRootElementSize也为true时,只设置根组件的旋转属性,用于强制横屏模式以及强制横屏竖屏的切换。
|
|
263
|
+
* 要注意onlyHandleRootElementTransform开启成功时,要保证根节点的元素大小并且当根节点变化时应调用 resize 方法通知更新根节点的大小。
|
|
264
|
+
*/
|
|
265
|
+
onlyHandleRootElementTransform?: boolean;
|
|
266
|
+
```
|