本文档描述了云手机PC客户端SDK提供的接口。
API概览
引擎(ArmcloudEngine)
| 接口名称 | 接口描述 |
|---|---|
| instance | 获取引擎实例(单例模式) |
| init | 初始化引擎 |
| destory | 销毁引擎 |
| setSdkHost | 设置服务器地址 |
| createPhoneClient | 创建云机会话,用于操控云机 |
| createBatchControlVideo | 创建批量拉流控制器 |
| getVideoDeviceList | 获取摄像头列表 |
| getAudioDeviceList | 获取麦克风列表 |
群控(GroupControl)
| 接口名称 | 接口描述 |
|---|---|
| destory | 销毁 |
| startEventSync | 开启群控 |
| stopEventSync | 停止群控 |
| setEventSyncMaster | 设置主控 |
| sendInputText | 发送文本到指定云机输入框 |
| startVideoCapture | 开启摄像头采集 |
| stopVideoCapture | 停止采集 |
| getCameraCount | 获取摄像头数量 |
| getCameraInfo | 获取摄像头信息 |
小流(BatchControlVideo)
| 接口名称 | 接口描述 |
|---|---|
| start | 开始拉流 |
| stop | 停止拉流 |
| stop | 批量停止拉流 |
| stopAll | 全部停止拉流 |
| contains | 是否包含 |
| subscribe | 开始订阅 |
| unsubscribe | 取消订阅 |
| setVideoSink | 设置视频渲染器 |
| setBatchControlObserver | 设置回调 |
大流(PhoneClient)
| 接口名称 | 接口描述 |
|---|---|
| start | 开启拉流 |
| stop | 停止拉流 |
| setVideoSink | 设置视频渲染器 |
| setSessionObserver | 设置回调 |
| sendSwipe | 发送滚轮事件 |
| sendKeyCode | 发送键盘按键事件(发送一次完整的DOWN+UP事件) |
| sendKeyCode | 发送键盘按键事件(可选择发送单状态事件) |
| volumeUp | 增大云机设备音量 |
| volumeDown | 减小云机设备音量 |
| sendTouchEvent | 发送触摸事件 |
| setVideoLevel | 修改拉流画质 |
| screenshot | 截图 |
| sendInputText | 发送输入文本 |
| enableAudio | 开启音频 |
| enableVideo | 开启视频 |
| enableBlow | 开启吹一吹 |
| shake | 摇一摇 |
| startVideoCapture | 开启摄像头采集 |
| stopVideoCapture | 停止采集 |
| publishStream | 发布视频流 |
| unPublishStream | 停止发布 |
| sendCommand | 发送adb命令 |
接口详细说明
获取引擎实例
描述: 获取 ArmcloudEngine 引擎实例
语法:
static ArmcloudEngine* instance();
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| appId | string | 是 | 设置日志文件路径 |
| logPath | wstring | 否 | 日志文件路径 |
| isInitEngine | bool | 否 | 是否提前初始化引擎 |
初始化引擎
描述: 初始化 ArmcloudEngine 引擎
语法:
bool init(const std::string& appId, const std::wstring& logPath = L"", bool isInitEngine = false);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| appId | string | 是 | 设置日志文件路径 |
| logPath | wstring | 否 | 日志文件路径 |
| isInitEngine | bool | 否 | 是否提前初始化引擎 |
销毁引擎
描述: 销毁 ArmcloudEngine 引擎
语法:
void destory();
设置服务器地址
描述: 设置服务器地址
语法:
void setSdkHost(const std::string& host);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| host | string | 是 | 设置服务器地址 |
创建云机会话
描述: 创建云机会话
语法:
PhoneClient* createPhoneClient();
创建批量拉流控制器
描述: 创建批量拉流控制器
语法:
BatchControlVideo* createBatchControlVideo();
获取摄像头列表
描述: 获取摄像头列表
语法:
std::vector<DeviceInfo> getVideoDeviceList();
获取麦克风列表
描述: 获取麦克风列表
语法:
std::vector<DeviceInfo> getAudioDeviceList();
销毁
描述: 销毁
语法:
void destory();
开启群控
描述: 开启群控
语法:
void startEventSync(const BatchPhoneConfig& config);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| config | BatchPhoneConfig | 是 | 群控配置 |
停止群控
描述: 停止群控
语法:
void stopEventSync();
设置主控
描述: 设置主控
语法:
void setEventSyncMaster(const std::string& podId);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| podId | string | 是 | 主控云机ID |
发送文本到指定云机输入框
描述: 发送文本到指定云机输入框
语法:
void sendInputText(const std::string& podId, const std::string& content);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| podId | string | 是 | 主控云机ID |
| content | string | 是 | 发送的文本内容,必须为UTF-8编码 |
开始拉流(批量)
描述: 开始拉流
语法:
void start(const BatchPhoneConfig& config);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| config | BatchPhoneConfig | 是 | 批量拉流配置 |
停止拉流(单个)
描述: 停止拉流
语法:
void stop(const std::string& podId);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| podId | string | 是 | 需要停止拉流的云机ID |
批量停止拉流
描述: 批量停止拉流
语法:
void stop(const std::vector<std::string>& podList);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| podList | std::vectorstd::string | 是 | 需要停止拉流的云机ID列表 |
全部停止拉流
描述: 全部停止拉流
语法:
void stopAll();
是否包含
描述: 是否包含指定云机
语法:
bool contains(const std::string& podId);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| podId | string | 是 | 需要查询的云机ID |
开始订阅
描述: 开始订阅视频流
语法:
void subscribe(const std::string& podId);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| podId | string | 是 | 需要订阅视频流的云机ID |
取消订阅
描述: 取消订阅视频流
语法:
void unsubscribe(const std::string& podId);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| podId | string | 是 | 需要取消订阅视频流的云机ID |
设置视频渲染器(批量)
描述: 设置视频渲染器
语法:
void setVideoSink(const std::string& podId, VideoRenderSink* sink);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| podId | string | 是 | 需要设置渲染器的云机ID |
| sink | VideoRenderSink* | 是 | 视频渲染器 |
设置回调(批量)
描述: 设置批量控制回调
语法:
void setBatchControlObserver(BatchControlObserver* observer);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| observer | BatchControlObserver* | 是 | 回调 |
开启拉流(单个)
描述: 开启拉流
语法:
void start(PhoneConfig& config);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| config | PhoneConfig | 是 | 连接云机配置 |
停止拉流(单个)
描述: 停止拉流
语法:
void stop();
设置视频渲染器(单个)
描述: 设置视频渲染器
语法:
void setVideoSink(VideoRenderSink* sink);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| sink | VideoRenderSink* | 是 | 视频渲染器 |
设置云手机事件回调
描述: 设置云手机事件回调
语法:
void setSessionObserver(SessionObserver* observer);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| observer | SessionObserver* | 是 | 事件回调 |
发送滚轮事件
描述: 发送滚轮事件
语法:
void sendSwipe(int action, int x, int y, int width, int height, int swipe);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| action | int | 是 | 事件类型 |
| x | int | 是 | X坐标 |
| y | int | 是 | Y坐标 |
| width | int | 是 | 云手机画面宽度 |
| height | int | 是 | 云手机画面高度 |
| swipe | int | 是 | 滚动距离 |
发送按键事件(完整 DOWN+UP)
描述: 发送键盘按键事件(完整 DOWN+UP)。推荐用于 Home、返回、菜单等系统键。
语法:
void sendKeyCode(int code);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| code | int | 是 | 键值(3: HOME, 4: BACK, 82: MENU, 187: TASK) |
发送按键事件(单状态)
描述: 发送键盘按键事件(可指定 DOWN 或 UP)。推荐用于需要精确状态控制的按键(如 DELETE)。
语法:
void sendKeyCode(int action, int code);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| action | int | 是 | 按键类型(0: DOWN, 1: UP) |
| code | int | 是 | 键值(3: HOME, 4: BACK, 82: MENU, 187: TASK) |
增大音量
描述: 增大云机设备音量
语法:
void volumeUp();
减小音量
描述: 减小云机设备音量
语法:
void volumeDown();
发送鼠标按键事件
描述: 发送鼠标按键事件
语法:
void sendTouchEvent(int action, int x, int y, int width, int height);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| action | int | 是 | 按键类型(0: DOWN, 1: UP, 2: MOVE) |
| x | int | 是 | X轴坐标 |
| y | int | 是 | Y轴坐标 |
| width | int | 是 | 云手机画面宽度 |
| height | int | 是 | 云手机画面高度 |
修改拉流画质
描述: 设置云手机画面清晰度
语法:
void setVideoLevel(int resolution, int fps, int bitrate);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| resolution | int | 是 | 分辨率 ID(07: 144×256, 08: 216×384, 09: 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) |
| fps | int | 是 | 帧率 ID(1: 20fps, 2: 25fps, 3: 30fps, 4: 60fps, 5: 1fps, 6: 5fps, 7: 10fps, 8: 15fps, 9: 2fps) |
| bitrate | int | 是 | 码率 ID(01: 1Mbps, 02: 1.5Mbps, 03: 2Mbps, 04: 2.5Mbps, 05: 3Mbps, 06: 3.5Mbps, 07: 4Mbps, 08: 5Mbps, 09: 6Mbps, 10: 8Mbps, 11: 10Mbps, 12: 12Mbps, 13: 200kbps, 14: 400kbps, 15: 600kbps) |
截图
描述: 对当前云手机画面进行截图
语法:
void screenshot(bool local);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| local | bool | 否 | 保存位置(true: 本地, false: 云机) |
发送输入文本
描述: 发送文本替换云机输入框内容(需输入框获得焦点)
语法:
void sendInputText(const std::string& text);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| text | string | 是 | 发送的文本内容(UTF-8编码) |
开启音频
描述: 音频开启开关
语法:
void enableAudio(bool enable);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| enable | bool | 是 | true: 开启, false: 停止 |
开启视频
描述: 视频开启开关
语法:
void enableVideo(bool enable);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| enable | bool | 是 | true: 开启, false: 停止 |
开启吹一吹
描述: 吹一吹开启开关
语法:
void enableBlow(bool enable);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| enable | bool | 是 | true: 开启, false: 停止 |
摇一摇
描述: 摇一摇
语法:
void shake();
开启摄像头采集
描述: 开启摄像头采集
语法:
void startVideoCapture(int cameraId);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| cameraId | int | 是 | 摄像头ID |
停止采集
描述: 停止摄像头采集
语法:
void stopVideoCapture();
发布视频流
描述: 发布本地摄像头视频流
语法:
void publishStream();
停止发布
描述: 停止发布本地视频流
语法:
void unPublishStream();
发送 ADB 命令
描述: 发送 ADB 命令
语法:
void sendCommand(const std::string& cmd);
参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| cmd | string | 是 | ADB命令 |