接口概览
生命周期接口
方法 | 描述 |
初始化云渲染 SDK,初始化成功会回调 onInitSuccess。 | |
启动云渲染,启动成功会回调 onConnectSuccess。 | |
立即停止云渲染。 该接口为前端的停止,即 destroy 当前的连接。云端会在自动检测到心跳消失后,释放资源。 | |
重连。 由于网络问题导致的中断,SDK 会自动重连。 重连策略:每5秒尝试一次,最多重连5次。 | |
设置 accessToken。 |
安卓实例操作接口
const AndroidInstance = TCGSDK.getAndroidInstance();AndroidInstance.getInstanceImage({instanceId: 'cai-xxx1'});
方法 | 描述 |
获取实例截图信息。 | |
上传文件到实例。 | |
获取实例下载地址。 | |
切换输入法。 | |
设置设备 GPS 信息。 | |
设置设备分辨率。 | |
粘贴文本。 | |
发送文本到剪切板。 | |
摇一摇。 | |
设置设备传感器信息。 | |
发送 App binder 消息。 | |
查询实例属性。 | |
修改实例属性。 | |
查询已安装第三方应用。 | |
修改前台应用保活状态。 | |
查询前台应用保活状态。 | |
卸载应用。 | |
启动应用。 | |
停止应用。 | |
清除应用数据。 | |
启用应用。 | |
禁用应用。 | |
摄像头播放媒体文件。 | |
摄像头停止播放媒体文件。 | |
查询当前摄像头媒体播放状态。 | |
摄像头显示图片。 | |
增加后台保活应用。 | |
移除后台保活应用。 | |
覆盖后台保活应用。 | |
查询后台保活应用。 | |
清空后台保活应用。 | |
静音开关。 | |
搜索媒体库文件。 | |
重启实例。 | |
查询所有应用列表。 | |
关闭应用至后台。 | |
新增应用安装黑名单。 | |
移除应用安装黑名单。 | |
覆盖应用安装黑名单。 | |
查询应用安装黑名单。 | |
清空应用安装黑名单。 | |
获取系统导航栏显示状态。 | |
获取系统媒体音量大小。 |
音视频控制相关接口
方法 | 描述 |
设置 Video 音量。 | |
获取 Video 音量。 | |
播放视频。 | |
开关麦克风。 | |
开关摄像头。 | |
设置 Video 的旋转角度。 |
鼠标键盘控制相关接口
方法 | 描述 |
发送键盘事件。 | |
发送鼠标事件。 | |
发送 touch 事件。 |
其他工具方法
方法 | 描述 |
获取当前连接 requestId。 | |
推流视频截图。 | |
聚焦输入框时快速发送内容,会同时粘贴到剪贴板。 |
Init 方法参数
参数名称 | 必选 | 类型 | 描述 |
mount | 是 | String | 页面挂载点的 HTML 元素 ID。 |
mobileGame | 否 | Boolean | true 为使用接入手游/云手机。 |
androidInstance | 否 | Object | {autoRotateOnPC?: boolean;} 在 PC 端自动旋转。 |
accessToken | 否 | Object | {token: String; accessInfo: String} 实例访问 token,通过云 API 获取。 |
mic | 否 | Boolean | 是否开启本地麦克风。 |
camera | 否 | Boolean | 是否开启本地摄像头。 |
loadingText | 否 | String | 加载中的文字提示内容,默认为“正在启动云渲染”。 |
restartText | 否 | String | 重新连接的文字提示内容,默认为“重新连接”。 |
接口详细说明
初始化
初始化(init)云渲染 SDK,初始化成功会回调 onInitSuccess。
输入参数
示例
TCGSDK.init({mount: 'car-mount-point',mobileGame: true,debugSetting: {showLog: true,},accessToken,loadingText: 'Starting...',// 连接成功回调onConnectSuccess: () => {console.log('onConnectSuccess');},// 网络中断/被踢触发此回调onDisconnect: () => {console.log('onDisconnect');},onInitSuccess: () => {console.log('%c onInitSuccess', 'color: red');// single controlTCGSDK.access({instanceId: instanceIds[0],groupControl: false,});}});
启动云渲染
启动(access)云渲染,需要 init 内传入 accessToken 或调用 setAccessToken。
输入参数
参数名称 | 必选 | 类型 | 描述 |
instanceId | 是 | String | 实例 ID。 |
示例
TCGSDK.access({instanceId: 'cai-xxxx-xxxx'});
停止云渲染
立即停止(destroy)云渲染,该接口为前端的停止,即 clear 当前的连接(peerConnection)。云端会在自动检测到心跳消失后,释放资源。
输入参数
参数名称 | 必选 | 类型 |
code | 否 | Number |
message | 否 | String |
示例
TCGSDK.destroy();
重连
重连(reconnect)接口,也可以设置 *init reconnect* 参数由 SDK 自动调用,或根据 onDisconnect 回调 code,结合自身场景,主动调用该接口。
重连策略:每5秒尝试一次,最多重连5次。
示例
TCGSDK.reconnect();
设置 AccessToken
设置 AccessToken(setAccessToken)。
输入参数
参数名称 | 必选 | 类型 |
accessInfo | 是 | String |
token | 是 | String |
示例
TCGSDK.setAccessToken({accessInfo: 'xxx', token: 'xxx'});
获取实例截图信息
获取实例截图信息(getInstanceImage) 。
输入参数
参数名称 | 必选 | 类型 | 描述 |
instanceId | 是 | String | 实例 ID。 |
quality | 否 | Number | 截图质量,取值范围 0-100,默认 20。 |
screenshot_width | 否 | Number | 截图宽度。 |
screenshot_height | 否 | Number | 截图高度。 |
返回值
类型:{ url: string }
参数名称 | 类型 | 描述 |
url | String | 截图地址。 |
示例
const {url} = AndroidInstance.getInstanceImage({instanceId: 'cai-xxx1'});
上传文件到实例
上传文件到实例(upload)。
默认上传到 /sdcard/Download 目录下,可使用 path 指定上传目录(仅支持/sdcard/ 下目录)。
输入参数
参数名称 | 必选 | 类型 | 描述 |
instanceId | 是 | String | 实例 ID。 |
files | 是 | Object[] | - |
files.file | 是 | File | 文件。 |
files.path | 否 | String | 路径。 |
返回值
类型:Promise<{Code: number; Message: string; FileStatus: { CloudPath: string; FileName: string }[] | null;}>
参数名称 | 类型 | 描述 |
Code | Number | - |
Message | String | - |
FileStatus | Object[] | - |
FileStatus.CloudPath | String | 云端路径。 |
FileStatus.FileName | String | 文件名。 |
示例
const {Code, Message, FileStatus} = await AndroidInstance.upload({instanceId: 'cai-xxx1', files: [{file: file1, path: '/sdcard/xxx/'}, {file: file2, path: '/sdcard/xxx/'}]});
获取实例下载地址
获取实例下载地址(getInstanceDownloadAddress)。
输入参数
参数名称 | 必选 | 类型 | 描述 |
instanceId | 是 | String | 实例 ID。 |
path | 否 | String | 下载路径。 |
返回值
类型:{ address: string }
参数名称 | 类型 | 描述 |
address | String | 下载地址。 |
示例
const {address} = AndroidInstance.getInstanceDownloadAddress({instanceId: 'cai-xxx1', path: '/sdcard/xxx/'});
切换输入法
切换输入法(switchIME)。
输入参数
参数名称 | 必选 | 类型 | 描述 |
ime | 是 | String | cloud:云端输入法。 local: 本地输入法。 |
示例
AndroidInstance.switchIME({ime: 'local'});
设置设备 GPS 信息
设置设备 GPS 信息(setLocation)。
输入参数
类型:{ [InstanceId: string]: { Longitude: number; Latitude: number } }
参数名称 | 必选 | 类型 | 描述 |
Longitude | 是 | Number | 经度。 |
Latitude | 是 | Number | 纬度。 |
返回值
示例
const res = await AndroidInstance.setLocation({'cai-xxx1': {Longitude: 113.32412, Latitude: 23.124124}, 'cai-xxx2': {Longitude: 114.32412, Latitude: 24.124124}})console.log(res['cai-xxx1']);
设置设备分辨率
设置设备分辨率(setResolution)。
输入参数
类型:{ [InstanceId: string]: { Width: number; Height: number; DPI?: number } };
参数名称 | 必选 | 类型 | 描述 |
Width | 是 | Number | 宽。 |
Height | 是 | Number | 高。 |
DPI | 否 | Number | - |
返回值
示例
const res = await AndroidInstance.setResolution({'cai-xxx1': {Width: 720, Height: 1080}, {'cai-xxx2': {Width: 720, Height: 1080}});console.log(res['cai-xxx1']);
粘贴文本
粘贴文本(paste)。
输入参数
类型:{ [InstanceId: string]: { Text: string } }
参数名称 | 必选 | 类型 | 描述 |
Text | 是 | String | 文本。 |
返回值
示例
const res = await AndroidInstance.paste({'cai-xxx1': {Text: 'abc'}, {'cai-xxx2': {Text: '123'}});console.log(res['cai-xxx1']);
发送文本到剪切板
发送文本到剪切板(sendClipboard)。
输入参数
类型:{ [InstanceId: string]: { Text: string } }
参数名称 | 必选 | 类型 | 描述 |
Text | 是 | String | 文本。 |
返回值
示例
const res = await AndroidInstance.sendClipboard({'cai-xxx1': {Text: 'abc'}, {'cai-xxx2': {Text: '123'}});console.log(res['cai-xxx1']);
摇一摇
摇一摇(shake)。
输入参数
类型:{ [InstanceId: string]: { } }
返回值
示例
const res = await AndroidInstance.shake({'cai-xxx1': {}, {'cai-xxx2': {}});console.log(res['cai-xxx1']);
设置设备传感器信息
设置设备传感器信息(setSensor)。
输入参数
类型:{ [InstanceId: string]: { Type: 'accelerometer' | 'gyroscope'; Values: number[] } }
参数名称 | 必选 | 类型 | 描述 |
Type | 是 | String | 传感器 accelerometer(加速器),gyroscope(陀螺仪)。 |
Values | 是 | String[] | 传感器对应的值,数组长度为 3,分别表示 x/y/z 轴的值。 |
返回值
示例
const res = await AndroidInstance.setSensor({'cai-xxx1': {Type: 'accelerometer', Values: [10, 10, 10]}, {'cai-xxx2': {Type: 'gyroscope', Values: [10, 10, 10]}});console.log(res['cai-xxx1']);
发送 App binder 消息
发送 App binder 消息(sendTransMessage)。
输入参数
类型:{ [InstanceId: string]: { PackageName: string; Msg: string } }
参数名称 | 必选 | 类型 | 描述 |
PackageName | 是 | String | 包名。 |
Msg | 是 | String | 消息。 |
返回值
示例
const res = await AndroidInstance.sendTransMessage({'cai-xxx1': {PackageName: 'com.example.myapplication', Msg: 'abc123'}});console.log(res['cai-xxx1']);
查询实例属性
查询实例属性(describeInstanceProperties)。
输入参数
类型:{ [InstanceId: string]: { }
返回值
示例
const res = await AndroidInstance.describeInstanceProperties({'cai-xxx1': {}, {'cai-xxx2': {}});console.log(res['cai-xxx1']);
修改实例属性
修改实例属性(modifyInstanceProperties)
输入参数
类型:
返回值
示例
const res = await AndroidInstance.ModifyInstanceProperties({'cai-xxx1': {DeviceInfo: {Brand: 'Samsung',Model: 'Galaxy S24',},ProxyInfo: {Enabled: true,Protocol: 'socks5',Host: 'proxy.example.com',Port: 1080,User: 'user123',Password: 'pass123',},GPSInfo: {Longitude: 121.4737,Latitude: 31.2304,},SIMInfo: {State: 1,PhoneNumber: '+8613812345678',IMSI: '460001234567890',ICCID: '89860123456789012345',},LocaleInfo: {Timezone: 'Asia/Shanghai',},LanguageInfo: {Language: 'zh',Country: 'CN',},ExtraProperties: [{Key: 'custom_property1',Value: 'value1',},{Key: 'custom_property2',Value: 'value2',},]}})console.log(res['cai-xxx1']);
查询已安装第三方应用
查询已安装第三方应用(listUserApps)。
输入参数
类型:{ [InstanceId: string]: { }
返回值
类型:Promise<ListUserAppsResponse>
参数名称 | 类型 | 描述 |
AppList | Object[] | - |
AppList.FirstInstallTimeMs | Number | 首次安装时间。 |
AppList.Label | String | 标签。 |
AppList.LastUpdateTimeMs | Number | 最近更新时间。 |
AppList.PackageName | String | 包名。 |
AppList.VersionName | String | 版本名。 |
示例
const res = await AndroidInstance.listUserApps({'cai-xxx1': {}, {'cai-xxx2': {}})console.log(res['cai-xxx1']);
修改前台应用保活状态
修改前台应用保活状态(modifyKeepFrontAppStatus)。
输入参数
类型:{ [InstanceId: string]: { PackageName: string; Enable: boolean; RestartInterValSeconds: number; } }
参数名称 | 必选 | 类型 | 描述 |
PackageName | 是 | String | 包名。 |
Enable | 是 | Boolean | - |
RestartInterValSeconds | 是 | Number | 重新拉起最长间隔。 |
返回值
示例
const res = await AndroidInstance.modifyKeepFrontAppStatus({'cai-xxx1': {"PackageName": "com.example.app", "Enable": true, "RestartInterValSeconds": 5}});console.log(res['cai-xxx1']);
查询前台应用保活状态
查询前台应用保活状态(describeKeepFrontAppStatus)。
输入参数
类型:{ [InstanceId: string]: { }
返回值
类型:Promise<{ PackageName: string; Enable: boolean; RestartInterValSeconds: number }>;
参数名称 | 类型 | 描述 |
PackageName | String | 包名。 |
Enable | Boolean | - |
RestartInterValSeconds | String | 重新拉起最长间隔。 |
示例
const res = await AndroidInstance.describeKeepFrontAppStatus({'cai-xxx1': {}});console.log(res['cai-xxx1']);
卸载应用
卸载应用(unInstallByPackageName)。
输入参数
类型:{ [InstanceId: string]: { PackageName: string; } }
参数名称 | 必选 | 类型 | 描述 |
PackageName | 是 | String | 包名。 |
返回值
示例
const res = await AndroidInstance.unInstallByPackageName({'cai-xxx1': {"PackageName": "com.unwanted.app"}});console.log(res['cai-xxx1']);
启动应用
启动应用(startApp)。
输入参数
类型:{ [InstanceId: string]: { PackageName: string; ActivityName: string } }
参数名称 | 必选 | 类型 | 描述 |
PackageName | 是 | String | 包名。 |
ActivityName | 是 | String | - |
返回值
示例
const res = await AndroidInstance.startApp({'cai-xxx1': {"PackageName": "com.launch.app", "ActivityName": "MainActivity"}});console.log(res['cai-xxx1']);
停止应用
停止应用(stopApp)。
输入参数
类型:{ [InstanceId: string]: { PackageName: string; } }
参数名称 | 必选 | 类型 | 描述 |
PackageName | 是 | String | 包名。 |
返回值
示例
const res = await AndroidInstance.stopApp({'cai-xxx1': {"PackageName": "com.running.app"}});console.log(res['cai-xxx1']);
清除应用数据
清除应用数据(clearAppData)。
输入参数
类型:{ [InstanceId: string]: { PackageName: string; } }
参数名称 | 必选 | 类型 | 描述 |
PackageName | 是 | String | 包名。 |
返回值
示例
const res = await AndroidInstance.clearAppData({'cai-xxx1': {"PackageName": "com.data.app"}});console.log(res['cai-xxx1']);
启用应用
启用应用(enableApp)。
输入参数
类型:{ [InstanceId: string]: { PackageName: string; } }
参数名称 | 必选 | 类型 | 描述 |
PackageName | 是 | String | 包名。 |
返回值
示例
const res = await AndroidInstance.enableApp({'cai-xxx1': {"PackageName": "com.data.app"}});console.log(res['cai-xxx1']);
禁用应用
禁用应用(disableApp)。
输入参数
类型:{ [InstanceId: string]: { PackageName: string; } }
参数名称 | 必选 | 类型 | 描述 |
PackageName | 是 | String | 包名。 |
返回值
示例
const res = await AndroidInstance.disableApp({'cai-xxx1': {"PackageName": "com.data.app"}});console.log(res['cai-xxx1']);
摄像头播放媒体文件
摄像头播放媒体文件(startCameraMediaPlay)
输入参数
类型:{ [InstanceId: string]: { FilePath: string; Loops: number }; }
参数名称 | 必选 | 类型 | 描述 |
FilePath | 是 | String | 文件路径。 |
Loops | 是 | String | 循环次数,负数表示无限循环。 |
返回值
示例
const res = await AndroidInstance.startCameraMediaPlay({'cai-xxx1': {"FilePath": "/sdcard/video.mp4", "Loops": 3}});console.log(res['cai-xxx1']);
摄像头停止播放媒体文件
摄像头停止播放媒体文件(stopCameraMediaPlay)。
输入参数
类型:{ [InstanceId: string]: { }; }
返回值
示例
const res = await AndroidInstance.stopCameraMediaPlay({'cai-xxx1': {}});console.log(res['cai-xxx1']);
查询当前摄像头媒体播放状态
查询当前摄像头媒体播放状态(describeCameraMediaPlayStatus)
输入参数
类型:{ [InstanceId: string]: { }; }
返回值
类型:Promise<{ PackageName: string; Enable: boolean; RestartInterValSeconds: number }>;
参数名称 | 类型 | 描述 |
FilePath | String | 包名。 |
Loops | Number | 循环次数,负数表示无限循环。 |
示例
const res = await AndroidInstance.describeCameraMediaPlayStatus({'cai-xxx1': {}});console.log(res['cai-xxx1']);
摄像头显示图片
摄像头显示图片(displayCameraImage)。
输入参数
类型:{ [InstanceId: string]: { FilePath: string; }; }
参数名称 | 必选 | 类型 | 描述 |
FilePath | 是 | String | 文件路径。 |
返回值
示例
const res = await AndroidInstance.displayCameraImage({'cai-xxx1': {"FilePath": "/sdcard/image.jpg"}});console.log(res['cai-xxx1']);
增加后台保活应用
增加后台保活应用(addKeepAliveList)。
输入参数
类型:{ [InstanceId: string]: { AppList: string[] } }
参数名称 | 必选 | 类型 |
AppList | 是 | String[] |
返回值
示例
const res = await AndroidInstance.addKeepAliveList({'cai-xxx1': {"AppList": ["com.wechat", "com.alipay", "com.dingtalk"]}});console.log(res['cai-xxx1']);
移除后台保活应用
移除后台保活应用(removeKeepAliveList)。
输入参数
类型:{ [InstanceId: string]: { AppList: string[] } }
参数名称 | 必选 | 类型 |
AppList | 是 | String[] |
返回值
示例
const res = await AndroidInstance.removeKeepAliveList({'cai-xxx1': {"AppList": ["com.wechat", "com.alipay", "com.dingtalk"]}});console.log(res['cai-xxx1']);
覆盖后台保活应用
覆盖后台保活应用(setKeepAliveList)。
输入参数
类型:{ [InstanceId: string]: { AppList: string[] } }
参数名称 | 必选 | 类型 |
AppList | 是 | String[] |
返回值
示例
const res = await AndroidInstance.setKeepAliveList({'cai-xxx1': {"AppList": ["com.wechat", "com.alipay", "com.dingtalk"]}});console.log(res['cai-xxx1']);
查询后台保活应用
查询后台保活应用(describeKeepAliveList)。
输入参数
类型:{ [InstanceId: string]: { }; }
返回值
类型:Promise<{ AppList: string[] }>;
参数名称 | 类型 |
AppList | String[] |
示例
const res = await AndroidInstance.describeKeepAliveList({'cai-xxx1': {}});console.log(res['cai-xxx1']);
清空后台保活应用
清空后台保活应用(clearKeepAliveList)。
输入参数
类型:{ [InstanceId: string]: { }; }
返回值
示例
const res = await AndroidInstance.clearKeepAliveList({'cai-xxx1': {}});console.log(res['cai-xxx1']);
静音开关
静音开关(mute)。
输入参数
类型:{ [InstanceId: string]: { Mute: boolean } }
参数名称 | 必选 | 类型 | 描述 |
Mute | 是 | Boolean | 静音。 |
返回值
示例
const res = await AndroidInstance.mute({'cai-xxx1': {Mute: true}});console.log(res['cai-xxx1']);
媒体库文件搜索
媒体库文件搜索(mediaSearch)。
输入参数
类型:{ [InstanceId: string]: { Keyword: string } }
参数名称 | 必选 | 类型 |
Keyword | 是 | String |
返回值
示例
const res = await AndroidInstance.mediaSearch({'cai-xxx1': {"Keyword": "abc"}});console.log(res['cai-xxx1']);
重启实例
重启实例(reboot)。
输入参数
类型:{ [InstanceId: string]: { }; }
返回值
示例
const res = await AndroidInstance.reboot({'cai-xxx1': {}});console.log(res['cai-xxx1']);
查询所有应用列表
查询所有应用列表(listAllApps)。
输入参数
类型:{ [InstanceId: string]: { }
返回值
类型:Promise<ListUserAppsResponse>
参数名称 | 类型 | 描述 |
AppList | Object[] | 应用列表。 |
AppList.FirstInstallTimeMs | Number | 首次安装时间。 |
AppList.Label | String | 标签。 |
AppList.LastUpdateTimeMs | Number | 最近更新时间。 |
AppList.PackageName | String | 包名。 |
AppList.VersionName | String | 版本名。 |
示例
const res = await AndroidInstance.listAllApps({'cai-xxx1': {}});console.log(res['cai-xxx1']);
关闭应用至后台
关闭应用至后台(moveAppBackground)。
输入参数
类型:{ [InstanceId: string]: { }; }
返回值
示例
const res = await AndroidInstance.moveAppBackground({'cai-xxx1': {}});console.log(res['cai-xxx1']);
新增应用安装黑名单
新增应用安装黑名单(addAppInstallBlackList)。
输入参数
类型:{ [InstanceId: string]: { AppList: string[] } }
参数名称 | 必选 | 类型 |
AppList | 是 | String[] |
返回值
示例
const res = await AndroidInstance.addAppInstallBlackList({'cai-xxx1': {"AppList": ["com.wechat", "com.alipay", "com.dingtalk"]}});console.log(res['cai-xxx1']);
移除应用安装黑名单
移除应用安装黑名单(removeAppInstallBlackList)。
输入参数
类型:{ [InstanceId: string]: { AppList: string[] } }
参数名称 | 必选 | 类型 |
AppList | 是 | String[] |
返回值
示例
const res = await AndroidInstance.removeAppInstallBlackList({'cai-xxx1': {"AppList": ["com.wechat", "com.alipay", "com.dingtalk"]}});console.log(res['cai-xxx1']);
覆盖应用安装黑名单
覆盖应用安装黑名单(setAppInstallBlackList)。
输入参数
类型:{ [InstanceId: string]: { AppList: string[] } }
参数名称 | 必选 | 类型 |
AppList | 是 | String[] |
返回值
示例
const res = await AndroidInstance.setAppInstallBlackList({'cai-xxx1': {"AppList": ["com.wechat", "com.alipay", "com.dingtalk"]}});console.log(res['cai-xxx1']);
查询应用安装黑名单
查询应用安装黑名单(describeAppInstallBlackList)。
输入参数
类型:{ [InstanceId: string]: { }; }
返回值
类型:Promise<{ AppList: string[] }>;
参数名称 | 类型 |
AppList | String[] |
示例
const res = await AndroidInstance.describeAppInstallBlackList({'cai-xxx1': {}});console.log(res['cai-xxx1']);
清空应用安装黑名单
清空应用安装黑名单(clearAppInstallBlackList)。
输入参数
类型:{ [InstanceId: string]: { }; }
返回值
示例
const res = await AndroidInstance.clearAppInstallBlackList({'cai-xxx1': {}});console.log(res['cai-xxx1']);
获取系统导航栏显示状态
获取系统导航栏显示状态(getNavVisibleStatus)。
输入参数
类型:{ [InstanceId: string]: { }; }
返回值
类型:Promise<{ Visible: boolean; }>;
参数名称 | 类型 |
Visible | Boolean |
示例
const res = await AndroidInstance.getNavVisibleStatus({'cai-xxx1': {}});console.log(res['cai-xxx1']);
获取系统媒体音量大小
获取系统媒体音量大小(getSystemMusicVolume)。
输入参数
类型:{ [InstanceId: string]: { }; }
返回值
类型:Promise<{ Volume: number; }>;
参数名称 | 类型 | 描述 |
Volume | Number | 音量。 |
示例
const res = await AndroidInstance.getSystemMusicVolume({'cai-xxx1': {}});console.log(res['cai-xxx1']);
批量操作返回值
批量操作返回值(BatchTaskResponse)。
返回值
类型:[InstanceId: string]: {Code: number; Msg: string;};
参数名称 | 类型 | 描述 |
Code | Number | Code 为 0 表示成功,其他值表示失败。 Code: 10001, Msg: "invalid param"。 Code: 10002, Msg: "invalid token"。 Code: 10003, Msg: "invalid operate"。 |
Msg | String | - |
实例属性
实例属性(InstanceProperties)。
参数名称 | 类型 | 描述 |
DeviceInfo | Object | { Brand: string; Model: string } |
GPSInfo | Object | { Longitude: number; Latitude: number }; |
LanguageInfo | Object | { Language: string; Country: string }; |
LocaleInfo | Object | { Timezone: string }; |
ProxyInfo | Object | { Enabled: boolean; Protocol: string; Host: string; Port: number; User: string; Password: string }; |
SIMInfo | Object | { State: number; PhoneNumber: string; IMSI: string; ICCID: string }; |
ExtraProperties | Object | { Key: string; Value: string }[]; |
设置 video 音量
设置 video 音量(setVideoVolume)。
输入参数
参数名称 | 必选 | 类型 | 描述 |
value | 是 | Number | 音量 [0-1]。 |
示例
TCGSDK.setVideoVolume(0);
获取 video 音量
获取 video 音量(getVideoVolume)。
示例
const volume = TCGSDK.getVideoVolume();
播放视频
播放视频(playVideo)。
输入参数
参数名称 | 必选 | 类型 | 描述 |
status | 是 | String | 'play' | 'pause' |
示例
TCGSDK.playVideo('play');
开关麦克风
开关麦克风(switchMic)。
输入参数
参数名称 | 必选 | 类型 | 描述 |
status | 是 | String | 'open' | 'close' |
profile | 否 | Boolean|MicProfileConstraints | MicProfileConstraints { sampleRate?: number; // 默认值 44100 echoCancellation?: ConstrainBoolean; // 回声消除 默认值 true noiseSuppression?: ConstrainBoolean; // 降噪 默认值 true autoGainControl?: ConstrainBoolean; // 增益 默认值 true deviceId?: string; // 设备id,可以通过 getDevices 接口获取, 默认采用系统自选设备 } |
返回值
类型:Promise<{ code: 0 | 1; msg: string; userMedia: MediaStream }>;
参数名称 | 类型 | 描述 |
code | Number | code 为 0 表示成功,其他值表示失败。 |
msg | String | - |
userMedia | MediaStream | 获取的媒体信息。 |
示例
TCGSDK.switchMic({status: 'open'});
开关摄像头
开关摄像头(switchCamera)。
输入参数
参数名称 | 必选 | 类型 | 描述 |
status | 是 | String | 'open' | 'close' |
profile | 否 | Boolean | CameraProfileConstraints | CameraProfileType | CameraProfileConstraints { /** * 默认值 1280,传入 null 则采用系统默认选择值 */ width?: number | null; /** * 默认值 720,传入 null 则采用系统默认选择值 */ height?: number | null; frameRate?: number; /** * @deprecated */ bitrate?: number; /** * input 的设备id,可以通过 getDevices 接口获取, 默认采用系统自选设备。 * * 移动端可传入 'user' | 'environment', 来区分前置/后置摄像头 */ deviceId?: string | 'user' | 'environment'; } CameraProfileType = '120p' | '180p' | '240p' | '360p' | '480p' | '720p' | '1080p'; |
返回值
类型:Promise<{ code: 0 | 1; msg: string; userMedia: MediaStream }>;
参数名称 | 类型 | 描述 |
code | Number | code 为 0 表示成功,其他值表示失败。 |
msg | String | - |
userMedia | MediaStream | 获取的媒体信息。 |
示例
TCGSDK.switchCamera({status: 'open'});TCGSDK.switchCamera({status: 'close'});// 移动端打开后置摄像头TCGSDK.switchCamera({ status: 'open', profile: { deviceId: 'environment' } });
设置 video 的旋转角度
设置 video 的旋转角度(setVideoOrientation)。
输入参数
参数名称 | 必选 | 类型 | 描述 |
deg | 是 | Number | 旋转角度当前只支持 0/90/180/270。 |
rotateContainer | 否 | Boolean | 是否旋转整个 HTML 视图,默认值 true。 |
rotateMountPoint | 否 | Boolean | 是否旋转 mountPoint 节点,默认值 false。 |
示例
// 旋转 HTML 文档TCGSDK.setVideoOrientation({ deg: 90, rotateContainer: true });// 旋转 MountPointTCGSDK.setVideoOrientation({ deg: 90, rotateMountPoint: true });
发送键盘事件
发送键盘事件(sendKeyboardEvent),该方法调用通常是成对出现(像正常打字,通常是 down/up 组合)。
KEY_BACK = 158
KEY_MENU = 139
KEY_HOME = 172
KEYCODE_VOLUME_UP = 0x3a
KEYCODE_VOLUME_Down = 0x3b
输入参数
参数名称 | 必选 | 类型 | 描述 |
key | 是 | Number | 对应的 Code 码。 |
down | 是 | Boolean | 是否是按下状态。 |
location | 否 | Number | 1为左键,2为右键。 |
示例
// 按下时TCGSDK.sendKeyboardEvent({key: 32, down: true});// 抬起时TCGSDK.sendKeyboardEvent({key: 32, down: false});
发送鼠标事件
发送鼠标事件(sendMouseEvent)。
输入参数
参数名称 | 必选 | 类型 | 描述 |
type | 是 | String | 鼠标事件类型。 mouseleft mouseright mousemiddle mouseforward mousebackward mousescroll mousemove mousedeltamove |
down | 否 | Boolean | 是否是按下状态(就像正常鼠标点击,通常是 down/up 组合)。 |
delta | 否 | Number | 鼠标滚轮,通常传 1/-1。 |
示例
// 鼠标左键按下TCGSDK.sendMouseEvent({type: 'mouseleft', down: true});// 鼠标左键抬起TCGSDK.sendMouseEvent({type: 'mouseleft', down: false});
发送 touch 事件
发送 touch 事件(mobileTouchMove)。
根据 onVideoStreamConfigChange 回调,可拿到云端屏幕分辨率,x/y 坐标是相对于该分辨率的 width/height 的位置。
输入参数
参数名称 | 必选 | 类型 | 描述 |
finger_id | 是 | Number | touch finger id |
event_type | 是 | Number | touch 事件类型。 touchstart - 0 touchmove - 1 touchend - 2 touchcancel - 2 |
x | 是 | Number | 相对 x 轴坐标。 |
y | 是 | Number | 相对 y 轴坐标。 |
示例
// start/end 成对发送TCGSDK.mobileTouchMove({finger_id: 0, event_type: 0, x: 111, y: 1102 });TCGSDK.mobileTouchMove({finger_id: 0, event_type: 2, x: 111, y: 1102 });
获取当前连接 requestId
获取当前连接 requestId(getRequestId),在调用 TCGSDK.start() / TCGSDK.access() 后生效。
示例
const requestId = TCGSDK.getRequestId();
推流视频截图
推流视频截图(screenShot)。
输入参数
参数名称 | 必选 | 类型 | 描述 |
name | 否 | String | 截图名称,默认为 `tcgsdk-${+new Date()}`。 |
width | 否 | Number | 截图宽度,默认取视频流宽度。 |
height | 否 | Number | 截图高度,默认取视频流高度。 |
示例
TCGSDK.screenShot({name: 'abc123', width: 720, height: 1280});
快速发送内容
快速发送内容(sendText),会同时粘贴到剪贴板。
输入参数
参数名称 | 必选 | 类型 | 描述 |
content | 是 | String | 需要发送的内容。 |
示例
TCGSDK.sendText('abc');