VMOS Cloud API
  • 简体中文
  • English
  • 简体中文
  • English
  • 产品介绍
  • 产品类型
  • 产品计费
  • OpenAPI
    • 接口文档
    • 错误码
    • 实例属性列表
    • 安卓改机属性列表
  • Android端 SDK
    • 示例搭建
    • 接口说明
    • 回调函数
    • 错误码
    • 更新日志
  • Web H5端 SDK
    • 示例搭建
    • 接口说明
    • 回调函数
    • 错误码
    • 更新日志
  • Windows PC端 SDK
    • 示例搭建
    • 接口说明
    • 回调函数
    • 更新日志
  • 端侧与云机通信开发
    • AIDL接入方式
    • 系统服务API(aidl)
  • 类XP、LSP Hook框架
  • 相关协议

API接口说明

本文档描述了云手机 Web H5 SDK 提供的接口。

API概览

初始化

初始化用户信息参数、云手机链接参数。
const engine = new ArmcloudEngine(params)
params 字段描述如下:
关键字值类型是否必填说明
deviceInfoobject是连接云手机所需信息
viewIdstring是页面挂载点的 div 元素 ID
callbacksobject否回调函数集合,详见回调函数详细说明
deviceInfo 字段描述如下:
关键字值类型是否必填说明
appIdstring是从后台服务申请实例返回的结果
roomCodestring是从后台服务申请实例返回的结果
roomTokenstring是从后台服务申请实例返回的结果
clientIdstring是房间号
userIdstring是用户id
autoRecoveryTimenumber否无操作回收时间,范围 1s~7200s,默认值:300
isFullScreennumber否是否全屏 0:自适应缩放(非全屏);1:填充屏幕(全屏),默认值:1
mediaTypenumber否媒体流类型 1:只控制音频 2:只控制视频 3:同时控制音频和视频,默认值:3
rotateTypenumber否旋转屏幕 0:竖屏, 1:横屏,默认值:0
keyboardstring否键盘类型 'local':本机键盘,'pad':云机键盘,默认值:'pad'

云机操控接口

方法名方法描述
isSupported浏览器是否支持RTC服务
start加入房间
stop离开房间
setKeyboardStyle切换本地/云机输入法类型
setStreamConfig设置分辨率,码率,帧率
resumeAllSubscribedStream恢复接收来自远端的媒体流
pauseAllSubscribedStream暂停接收来自远端的媒体流
saveScreenShotToLocal截图保存到本地
saveScreenShotToRemote截图保存到云机
setPhoneRotation设置横竖屏播放
setGPS自定义GPS信息
setAutoRecycleTime设置无操作回收时间
getAutoRecycleTime获取无操作回收时间
sendCommand发送按键指令
muted静音
unmuted取消静音
increaseVolume云机音量增加
decreaseVolume云机音量减少
sendInputClipper将字符串发送到云手机的粘贴板中
sendInputString将字符串发送到云手机的输入框中
saveCloudClipboard是否接收云机粘贴板内容回调
sendShake发送摇一摇指令
setMicrophone是否开启麦克风
setCamera是否开启摄像头
executeAdbCommand执行ADB命令
joinGroupRoom群控加入房间
kickItOutRoom踢出群控房间

API详情

云机操控接口

浏览器是否支持

方法:
engine.isSupported()

类型:

() => Promise<boolean>
// true: 支持,false: 不支持
代码示例:
// 浏览器是否支持rtc服务监听
const isSupported = await armCloud.value.isSupported();
if (!isSupported) {
  showNotify({
    type: "warning",
    message: "该浏览器不支持RTC服务"
  });
  return false;
}

加入房间

参数:

isGroupControl 是否开启群控 类型:boolean 值:false

pads 需要被群控的房间号 类型:Array 值:默认[]

方法:
engine.start(isGroupControl,pads)

离开房间

方法:
engine.stop()

注意:stop()方法会销毁引擎及过程中所创建的dom节点,如果有切换云机需求,需在每次new ArmcloudEngine()之前先调用stop().

切换本地/云机输入法类型

方法:
engine.setKeyboardStyle(keyboard: string)
参数:

keyboard 类型:string 值:local: 本地输入法,pad:云机虚拟输入法

代码示例(根据实际情况自行修改):
engine.setKeyboardStyle('pad');

设置分辨率,码率,帧率

方法:
engine.setStreamConfig(definitionConfig: CustomDefinition)
参数:

definitionConfig 类型:object 值:

字段名描述
definitionId分辨率
7:144 * 256;
8:216 * 384;
9:288 * 512;
10:360 * 640;
11:480 * 848;
12:540 * 960;
13:600 * 1024;
14:480 * 1280;
15:720 * 1280;
16:720 * 1920;
17:1080 * 1920;
18:1440 * 1920;
19:1600 * 2560;
20:2880 * 1080
framerateId帧率
1:20fps;
2:25fps;
3:30fps;
4:60fps;
5:1fps;
6:5fps;
7:10fps;
8:15fps;
9:2fps
bitrateId码率
1:1Mbps;
2:1.5Mbps;
3:2Mbps;
4:2.5Mbps;
5:3Mbps;
6:3.5Mbps;
7:4Mbps;
8:5Mbps;
9:6Mbps;
10:8Mbps;
11:10Mbps;
12:12Mbps;
13:200kbps;
14:400kbps;
15:600kbps
代码示例(根据实际情况自行修改):
const definitionConfig = ref({
  definitionId: 12,
  framerateId: 2,
  bitrateId: 3
});
engine.setStreamConfig(definitionConfig.value);

恢复接收来自远端的媒体流

方法:
engine.resumeAllSubscribedStream(mediaType: number)
参数

mediaType 类型:number 值: 1: 恢复音频拉流; 2: 恢复视频拉流; 3: 恢复音视频拉流;

代码示例(根据实际情况自行修改):
// 恢复音频拉流
engine.resumeAllSubscribedStream(1);

暂停接收来自远端的媒体流

方法:
engine.pauseAllSubscribedStream(mediaType: number)
参数

mediaType 类型:number 值: 1: 暂停音频拉流; 2: 暂停视频拉流; 3: 暂停音视频拉流;

代码示例(根据实际情况自行修改):
// 暂停音频拉流
engine.pauseAllSubscribedStream(1);

截图保存到本地

方法:
engine.saveScreenShotToLocal()
返回值:

类型: Promise<ImageData>

代码示例(根据实际情况自行修改):
engine.saveScreenShotToLocal().then(res => {
  const imageData = res;
  // 创建 canvas 元素
  const canvas: HTMLCanvasElement = document.createElement("canvas");
  canvas.width = imageData.width;
  canvas.height = imageData.height;
  const ctx = canvas.getContext("2d");

  // 将图像数据绘制到 canvas 上
  ctx.putImageData(imageData, 0, 0);
  // 将Canvas转换为图片并保存到本地
  const link = document.createElement("a");
  // 使用Canvas的toDataURL()方法将Canvas转换为base64编码的图片URL
  link.href = canvas.toDataURL();
  // 设置下载的文件名
  link.download = "image.png";
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
});

截图保存到云机

方法:
engine.saveScreenShotToRemote()
代码示例:
engine.saveScreenShotToRemote();

设置横竖屏播放

方法:
engine.setPhoneRotation(type: number)
参数

type 类型:number 值:0: 竖屏,1: 横屏

代码示例(根据实际情况自行修改):
// 设置横屏
engine.setPhoneRotation(1);

自定义GPS信息

方法:
engine.setGPS(longitude: number, latitude: number)
参数

longitude 经度 类型:number

latitude 纬度 类型:number

代码示例(根据实际情况自行修改):
// 设置经纬度坐标
engine.setGPS(113, 28);

设置无操作回收时间

方法:
engine.setAutoRecycleTime(second: number)
参数

second 类型:number 值:默认300s,范围 1s~7200S

代码示例(根据实际情况自行修改):
engine.setAutoRecycleTime(300);

获取无操作回收时间

方法:
engine.getAutoRecycleTime()
返回值:

类型: Promise<number>

代码示例:
const time = engine.getAutoRecycleTime();
console.log(time)

发送按键指令

方法:
engine.sendCommand(command: string)
参数

command 类型:string 值:back:back指令,home:home指令,menu:menu指令

代码示例(根据实际情况自行修改):
// 发送home键指令
engine.sendCommand("home");

静音

方法:
engine.muted()
代码示例:
engine.muted();

取消静音

方法:
engine.unmuted()
代码示例:
engine.unmuted();

云机音量增加

方法:
engine.increaseVolume()
代码示例:
engine.increaseVolume();

云机音量减少

方法:
engine.decreaseVolume()
代码示例:
engine.decreaseVolume();

将字符串发送到云手机的粘贴板中

方法:
engine.sendInputClipper(text: string)
代码示例:
// 该操作只会将复制内容粘贴到云机粘贴板中,若需使用需在云机输入框中长按粘贴
const text = 'hello world'
engine.sendInputClipper(text);

将字符串发送到云手机的输入框中

方法:
engine.sendInputString(text: string)
代码示例:
// 该操作在云机输入框聚焦时,会自动将复制内容发送到输入框中,不需要长按粘贴操作
const text = 'hello world'
engine.sendInputString(text);

注意:该操作只会将文本内容发送至输入框中,不会将内容粘贴到云机剪切板中,若需要,需手动调用 engine.sendInputClipper(text) 方法

是否接收云机粘贴板内容回调

方法:
engine.saveCloudClipboard(flag: boolean)
参数

flag 类型:boolean 值:true: 接收云机粘贴板内容回调,false: 不接收云机粘贴板内容回调

代码示例:
// 该操作在云机输入框聚焦时,会自动将复制内容发送到输入框中,不需要长按粘贴操作
const flag = true
engine.saveCloudClipboard(flag);

发送摇一摇指令

方法:
engine.sendShake(time: number)
参数

time 类型:number 值:毫秒 默认:1500

代码示例:
// 时间太长可能导致多次截屏
engine.sendShake(1500);

是否开启麦克风

方法:
engine.setMicrophone(enable: boolean)
参数

enable 类型:boolean 默认:true

代码示例:
engine.setMicrophone(true);

是否开启摄像头

方法:
engine.setCamera(enable: boolean)
参数

enable 类型:boolean 默认:true

代码示例:
engine.setCamera(true);

执行ADB命令

方法:
engine.executeAdbCommand(command: string)
参数

command 类型:string

代码示例:
engine.executeAdbCommand('cd /;ls');

群控加入房间

方法:
engine.joinGroupRoom(pads)
参数

pads 类型:Array

代码示例:
engine.joinGroupRoom(['ACXXXX','ACXXXX']);

踢出群控房间

方法:
engine.kickItOutRoom(pads)
参数

pads 类型:Array

代码示例:
engine.kickItOutRoom(['ACXXXX','ACXXXX']);
Prev
示例搭建
Next
回调函数