PC接入文档
[TOC]
# 云手机PC音视频SDK文档
云手机PC音视频SDK主要功能是为windows 桌面应用赋予云手机使用能力,可以通过SDK连接云手机,完成对云手机的一系列操作
# 简介
PC音视频SDK,开发语言C++,主要包括头文件,lib库dll和Demo示例。64位debug与release。dll主要实现对云机画面拉取以及云机的一系列操作,Demo简单的实现使用sdk开发云手机流程样例。
# 获取设备列表
- 根据后台服务地址,AK,SIGN参数,使用API
/api/v2/instance/list
获取解析设备列表数据。 - 请求云机设备控制token,使用API
/api/v2/instance/control/token/get
。
# 控制云机
- 控制云机,需要传入参数云机设备ID,后台服务地址,内部IP和控制token。
- 例如启动应用app,则需要传入对应app的包名,不同的控制功能需要的参数不同。
# 启动和停止拉流
- 调用SDK API, startPullStream开启拉流,disconnectStream停止拉流。
# 运行环境
可运行于 win7 sp1 以 上 版 本 。
# SDK导入
1. 包含头文件:
include\CloudPhoneDef.h
include\CloudPhoneInterface.h
2.导入lib库
CloudPhoneToolbox.lib
3.将dll与exe放在同一目录
CloudPhoneToolbox.dll
mediastream.dll
# API接口类CloudPhoneInterface
# 一. 全局初始化
static void init();
# 参数
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
无 | 否 | 无 | 只需要在调用sdk其它api前调用一次 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 一. 云机操作部分
# 1. 启动应用
void startApp(const char* instanceId,
const char* host,
const char* internalIp,
const char* token,
const char*packageName);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token,来源:/api/v2/instance/control/token/get,字段:token |
packageName | 是 | const char* | 启动应用包名 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 2. 停止应用
void stopApp(const char* instanceId,
const char* host,
const char* internalIp,
const char* token,
const char*packageName);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token,来源:/api/v2/instance/control/token/get,字段:token |
packageName | 是 | const char* | 启动应用包名 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 3. 卸载应用
void unInstallApp(const char* instanceId,
const char* host,
const char* internalIp,
const char* token,
const char*packageName);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip ,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip ,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token ,来源:/api/v2/instance/control/token/get,字段:token |
packageName | 是 | const char* | 启动应用包名 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 4. 隐藏应用
void hideApp(const char* instanceId,
const char* host,
const char* internalIp,
const char* token);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip ,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip ,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token,来源:/api/v2/instance/control/token/get,字段:token |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 5. 显示应用
void displayApp(const char* instanceId,
const char* host,
const char* internalIp,
const char* token);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip ,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token ,来源:/api/v2/instance/control/token/get,字段:token |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 6. 应用root
void rootApp(const char* instanceId,
const char* host,
const char* internalIp,
const char* token,
int rootSwitch,
char* packageList,
int len);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip ,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token,来源:/api/v2/instance/control/token/get,字段:token |
rootSwitch | 是 | int | 0关闭 1开启 |
packageList | 是 | char* | 包名以:分隔开的列表字符串 |
len | 是 | int | 字符串长度 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 7. 系统root
void systemRoot(const char* instanceId,
const char* host,
const char* internalIp,
const char* token,
int rootSwitch);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip ,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip ,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token ,来源:/api/v2/instance/control/token/get,字段:token |
rootSwitch | 是 | int | 0关闭 1开启 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 8. 开启预览图
void sysPreviewStart(const char* instanceId,
const char* host,
const char* internalIp,
const char* token,
const char*interval,
const char*width,
const char*height,
const char*quality);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip ,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token,来源:/api/v2/instance/control/token/get,字段:token |
interval | 是 | const char* | 预览图刷新间隔 单位秒 |
width | 是 | const char* | 预览图宽 |
height | 是 | const char* | 预览图高 |
quality | 是 | const char* | 预览图压缩质量 1-100 值越大质量越好 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 9. 关闭预览图
void sysPreviewStop(const char* instanceId,
const char* host,
const char* internalIp,
const char* token);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip ,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip ,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token ,来源:/api/v2/instance/control/token/get,字段:token |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 10. 位置服务
void virtualLocation(const char* instanceId,
const char* host,
const char* internalIp,
const char* token,
const char*longitude,
const char*latitude);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id ,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip ,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip ,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token,来源:/api/v2/instance/control/token/get,字段:token |
longitude | 是 | const char* | GPS 经度 |
latitude | 是 | const char* | GPS 纬度 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 11. 发送剪切板
void clipBoard(const char* instanceId,
const char* host,
const char* internalIp,
const char* token,
const char*content);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip ,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token ,来源:/api/v2/instance/control/token/get,字段:token |
content | 是 | const char* | 剪切板内容 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 12. 设置卡分辨率
void setCardResolution(const char* instanceId,
const char* host,
const char* internalIp,
const char* token,
int width,
int height);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id ,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip ,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip ,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token ,来源:/api/v2/instance/control/token/get,字段:token |
width | 是 | int | 宽 |
height | 是 | int | 高 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 13. 设置卡dpi
void setCardDpi(const char* instanceId,
const char* host,
const char* internalIp,
const char* token,
int dpi);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id ,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip ,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip ,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token ,来源:/api/v2/instance/control/token/get,字段:token |
dpi | 是 | int | dpi |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 14. 应用清理
bool cleanAppData(const char *instanceId, const char *host, const char *internalIp, const char *token, const char *pkgName, int timeout = 5);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id ,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip ,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip ,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token ,来源:/api/v2/instance/control/token/get,字段:token |
pkgName | 是 | const char* | app包名 |
timeout | 是 | int | 超时 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 15. 应用启用
bool enabelApp(const char* instanceId,
const char* host,
const char* internalIp,
const char* token,
const char* packageName, int timeout = 5);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip ,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip ,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token ,来源:/api/v2/instance/control/token/get,字段:token |
pkgName | 是 | const char* | app包名 |
timeout | 是 | int | 超时 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 15. 应用停用
bool disabelApp(const char* instanceId,
const char* host,
const char* internalIp,
const char* token,
const char* packageName, int timeout = 5);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip ,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token ,来源:/api/v2/instance/control/token/get,字段:token |
pkgName | 是 | const char* | app包名 |
timeout | 是 | int | 超时 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 16. 设备新机
bool setSysProp(const char *instanceId, const char *host, const char *internalIp, const char *token, const char* brand, const char* model, int timeout = 5);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id ,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip ,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip ,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token ,来源:/api/v2/instance/control/token/get,字段:token |
brand | 是 | const char* | 品牌 |
model | 是 | const char* | 型号 |
timeout | 是 | int | 超时 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 二. 云机拉流部分
# 1. 拉取云机音视频流
int startPullStream(const char* uri,
const iceAddressInfo* iceInfo,
int iceCount,
const char* instanceId,
int fmt,
int videoWidth,
int videoHeight,
int fps,
int bitrate,
int cardWidth,
int cardHeight,
int cardDensity,
const char* authToken,
HWND hwnd,
const char *host,
const char *internalIp,
const char *ctrlToken
);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
uri | 是 | const char* | 拉流信令地址,来源:/api/v2/instance/stream/token/get,字段:signalTcp |
iceInfo | 是 | const iceAddressInfo* | 获取拉流token协议返回, 来源:/api/v2/instance/stream/token/get,字段:coturnHttp |
iceCount | 是 | int | iceInfo 个数 |
instanceId | 是 | const char* | 实例id ,来源:/api/v2/instance/list, 字段:instanceId |
fmt | 是 | int | 拉流格式 1 h264 5 H265 |
videoWidth | 是 | int | 视频宽 云手机场景推荐720 |
videoHeight | 是 | int | 视频高 云手机场景推荐1280 |
fps | 是 | int | 拉流帧率 30-60 |
cardWidth | 是 | int | 云机分辨率宽 无需改动传0 |
cardHeight | 是 | int | 云机分辨率高 无需改动传0 |
cardDensity | 是 | int | 云机分dpi 无需改动传0 |
authToken | 是 | const char* | 鉴权码 协议请求返回的token,来源:/api/v2/instance/stream/token/get,字段:token |
hwnd | 是 | HWND | 渲染窗口 窗口句柄,来源:本地windows界面窗口句柄 |
host | 是 | const char * | ws外网ip ,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char * | 实例内网ip,来源:/api/v2/instance/list,字段:ip |
ctrlToken | 是 | const char * | 控制token,来源:/api/v2/instance/control/token/get,字段:token |
# iceAddressInfo 类型说明
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
address | 是 | const char* | 地址 |
type | 是 | int | 0移动 1联通 2电信 |
返回值 | 类型 | 说明 |
---|---|---|
0或小于0 | int | 0成功 小于0失败 |
# 2. 断开拉流
void disconnectStream();
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
无 | 无 | 无 | 无 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 3. 发送键盘key
void sendKey(int keyCode);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
keyCode | 是 | int | 键盘转换成安卓key 值 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 4. 设置最大拉流码率上限
void setMaxBitrate(int bitrate);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
bitrate | 是 | int | 设置最大拉流码率上限码率值,用于控制清晰度。可以通过此接口控制各个清晰的码率上限值 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 5. 暂停拉流
void pauseStream();
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
无 | 无 | 无 | 无 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 6. 恢复拉流
void resumeStream();
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
无 | 无 | 无 | 无 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 7. 拉流过程中设置卡分辨率及dpi
void setCardSize(int cardWidth, int cardHeight, int cardDensity);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
cardWidth | 是 | int | 云机分辨率宽 |
cardHeight | 是 | int | 云机分辨率高 |
cardDensity | 是 | int | 云机dpi |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 8. 拉流过程中改变拉流视频宽高
void setVideoSize(int videoWidth, int videoHeight, int fps);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
videoWidth | 是 | int | 视频宽 |
videoHeight | 是 | int | 视频高 |
fps | 是 | int | 帧率 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 9. 拉流过程获取拉流状态
int getMediaConnectionStatus();
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
无 | 无 | 无 | 无 |
返回值 | 类型 | 说明 |
---|---|---|
由回调接口返回 | 无 | 无 |
# 10. 音频开
bool audioOpen();
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
无 | 无 | 无 | 无 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 11. 音频关
bool audioClose();
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
无 | 无 | 无 | 无 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 12. 消息订阅
bool subscribeTopic(const char* instanceId, const char* host, const char* internalIp, const char* token, const char* topic);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip ,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token ,来源:/api/v2/instance/control/token/get,字段:token |
topic | 是 | const char* | 主题,剪切板:clipboard_transmission,消息透传:message_transmission |
返回值 | 类型 | 说明 |
---|---|---|
# 13. 取消订阅
bool unsubscribeTopic(const char* instanceId, const char* host, const char* internalIp, const char* token, const char* topic);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id ,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip ,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip ,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token ,来源:/api/v2/instance/control/token/get,字段:token |
topic | 是 | const char* | 主题,剪切板:clipboard_transmission,消息透传:message_transmission |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 14. 暂停云机
bool pauseStream();
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 15. 恢复云机
bool resumeStream();
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 16. 设置编码类型
bool setVideoCodecHw(bool isHw);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
isHw | 是 | bool | 是否使用硬编码 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 17. 消息透传
bool appMessageTransmission(const char* instanceId, const char* host, const char* internalIp, const char* token, const char* package_name, const char* message);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id ,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip ,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token ,来源:/api/v2/instance/control/token/get,字段:token |
package_name | 是 | const char* | 包名 |
message | 是 | const char* | 需要发送的消息 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 18. 设置画质
bool setPictureQuality(int width, int height, int fps, int mode);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
width | 是 | int | 宽 |
height | 是 | int | 高 |
fps | 是 | int | 帧率 |
mode | 是 | int | 模式(1:超清,2:高清,3:标清,4:流畅) |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
自动: 提高流畅性,降低延迟,画质会跟随网络变化而变化,网络差时会降低画质保流畅度,网络恢复时画质提升。 手动: 保证推流过程中画质稳定性,可以有效控制推流流量,网络差时会出现卡顿,丢包,高延迟,声音断续等。
# 19. 截图
bool screenShot(const char* instanceId, const char* host, const char* internalIp, const char* token, int quality);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip ,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip ,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token,来源:/api/v2/instance/control/token/get,字段:token |
quality | 是 | int | 质量(0-100) |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 20. 上传文件
bool uploadFile(int64_t taskId, const char* filePath, int uploadType, const char* ip, const char* host, const char* auth);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
taskId | 是 | int64_t | 任务id |
filePath | 是 | const char* | 文件路径 |
host | 是 | const char* | 外网ip,来源:/api/v2/instance/list,字段:publicIp |
ip | 是 | const char* | 实例内网ip ,来源:/api/v2/instance/list,字段:ip |
auth | 是 | const char* | 鉴权token ,来源:/api/v2/instance/control/token/get,字段:token |
uploadType | 是 | int | 1:上传到相册,2:上传到SD卡 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 21. 下载文件
bool downloadFile(int64_t taskId, const char* filePath, const char* ip, const char* host, const char* auth);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
taskId | 是 | int64_t | 任务id |
filePath | 是 | const char* | 文件路径 |
host | 是 | const char* | 外网ip,来源:/api/v2/instance/list,字段:publicIp |
ip | 是 | const char* | 实例内网ip ,来源:/api/v2/instance/list,字段:ip |
auth | 是 | const char* | 鉴权token ,来源:/api/v2/instance/control/token/get,字段:token |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 22. 锁定横竖屏
bool setScreenOrientation(int ori);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
ori | 是 | int | 0:竖屏,1:横屏 |
返回值 | 类型 | 说明 |
---|---|---|
无 | 无 | 无 |
# 23. 吹一吹
bool blow(const char* instanceId, const char* host, const char* internalIp, const char* token, int time = 5);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id ,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip ,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip ,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token ,来源:/api/v2/instance/control/token/get,字段:token |
time | 否 | int | 时间(5-10) |
返回值 | 类型 | 说明 |
---|---|---|
bool | 布尔 | 无 |
# 24. 摇一摇
bool shake(const char* instanceId, const char* host, const char* internalIp, const char* token, int time = 5);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id ,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip ,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip ,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token ,来源:/api/v2/instance/control/token/get,字段:token |
time | 否 | int | 时间(5-10) |
返回值 | 类型 | 说明 |
---|---|---|
bool | 布尔 | 无 |
# 25. 获取屏幕横竖屏状态
bool getScreenOrientation(const char *instanceId, const char *host, const char *internalIp, const char *token);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id ,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip ,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip ,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token ,来源:/api/v2/instance/control/token/get,字段:token |
返回值 | 类型 | 说明 |
---|---|---|
bool | 布尔 | 无 |
# 26. 单例同步操作发送键盘值
bool sendKeyForGroupControl(const char *instanceId, const char *host, const char *internalIp, const char *token, int keycode);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id ,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip ,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip ,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token ,来源:/api/v2/instance/control/token/get,字段:token |
keycode | 是 | int | 键盘值 |
返回值 | 类型 | 说明 |
---|---|---|
bool | 布尔 | 无 |
# 27. 单例同步操作发送鼠标事件
bool sendMouseForGroupControl(const char *instanceId, const char *host, const char *internalIp, const char *token, int msg, int x, int y, int width, int height, int hScroll, int vScroll);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id ,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip ,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip ,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token ,来源:/api/v2/instance/control/token/get,字段:token |
msg | 是 | int | 鼠标事件类型, WM_LBUTTONDOWN, WM_LBUTTONUP, WM_MOUSEMOVE, WM_MOUSEWHEEL |
x | 是 | int | 坐标x |
y | 是 | int | 坐标y |
width | 是 | int | 窗口宽 |
height | 是 | int | 窗口高 |
hScroll | 是 | int | 水平方向滚动 |
vScroll | 是 | int | 垂直方向滚动 |
返回值 | 类型 | 说明 |
---|---|---|
bool | 布尔 | 无 |
# 28. 设置系统导航栏显示和隐藏
bool setNavBarVisable(const char *instanceId, const char *host, const char *internalIp, const char *token, bool visable);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id ,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip ,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip ,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token ,来源:/api/v2/instance/control/token/get,字段:token |
visable | 是 | int | 显示/隐藏 |
返回值 | 类型 | 说明 |
---|---|---|
bool | 布尔 | 无 |
# 29. 文本透传
bool sendText(const char *instanceId, const char *host, const char *internalIp, const char *token, const char *text, int position);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id ,来源:/api/v2/instance/list, 字段:instanceId |
host | 是 | const char* | ws外网ip ,来源:/api/v2/instance/list,字段:publicIp |
internalIp | 是 | const char* | 实例内网ip ,来源:/api/v2/instance/list,字段:ip |
token | 是 | const char* | 鉴权token ,来源:/api/v2/instance/control/token/get,字段:token |
text | 是 | const char* | 文本数据 |
position | 是 | int | -1:删除,0:增加 |
返回值 | 类型 | 说明 |
---|---|---|
bool | 布尔 | 无 |
# 30. 获取系统导航栏状态
bool getNavBarStatus(const char *instanceId, const char *host, const char *internalIp, const char *token);
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
host | 是 | const char* | ws外网ip |
internalIp | 是 | const char* | 实例内网ip |
token | 是 | const char* | 鉴权token |
返回值 | 类型 | 说明 |
---|---|---|
bool | 布尔 | 无 |
# 三. 监听回调部分 监听CloudPhoneObserver
# 1. 启动应用返回
virtual void startAppResponse(const char* instanceId, int code, const char* message) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
code | 是 | int | 0成 非0 失败 |
message | 是 | const char* | 描述 |
# 2. 停止应用返回
virtual void stopAppResponse(const char* instanceId, int code, const char* message) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
code | 是 | int | 0成 非0 失败 |
message | 是 | const char* | 描述 |
# 3. 卸载应用返回
virtual void unInstallAppResponse(const char* instanceId, int code, const char* message) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
code | 是 | int | 0成 非0 失败 |
message | 是 | const char* | 描述 |
# 4. 隐藏应用返回
virtual void shideAppResponse(const char* instanceId, int code, const char* message) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
code | 是 | int | 0成 非0 失败 |
message | 是 | const char* | 描述 |
# 5. 隐藏应用返回
virtual void displayAppResponse(const char* instanceId, int code, const char* message) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
code | 是 | int | 0成 非0 失败 |
message | 是 | const char* | 描述 |
# 6. 应用root返回
virtual void rootAppResponse(const char* instanceId, int code, const char* message) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
code | 是 | int | 0成 非0 失败 |
message | 是 | const char* | 描述 |
# 7. 系统root返回
virtual void systemRootResponse(const char* instanceId, int code, const char* message) {}
# 8. 开启预览图返回
virtual void sysPreviewStartResponse(const char* instanceId, int code, const char* message) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
code | 是 | int | 0成 非0 失败 |
message | 是 | const char* | 描述 |
# 9. 停止预览图返回
virtual void sysPreviewStopResponse(const char* instanceId, int code, const char* message) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
code | 是 | int | 0成 非0 失败 |
message | 是 | const char* | 描述 |
# 10. 设置虚拟定位返回
virtual void virtualLocationResponse(const char* instanceId, int code, const char* message) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
code | 是 | int | 0成 非0 失败 |
message | 是 | const char* | 描述 |
# 11. 发送剪切板返回
virtual void clipBoardResponse(const char* instanceId, int code, const char* message) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
code | 是 | int | 0成 非0 失败 |
message | 是 | const char* | 描述 |
# 12. 设置系统分辨率返回
virtual void sysResolutionResponse(const char* instanceId, int code, const char* message) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
code | 是 | int | 0成 非0 失败 |
message | 是 | const char* | 描述 |
# 13. 设置系统dpi返回
virtual void sysDpiResponse(const char* instanceId, int code, const char* message) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
code | 是 | int | 0成 非0 失败 |
message | 是 | const char* | 描述 |
# 14. 预览图数据返回
virtual void previewResponse(const char* instanceId, int code, const char* message,
const char* pImag, int size) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
code | 是 | int | 0成 非0 失败 |
message | 是 | const char* | 描述 |
pImag | 是 | const char* | jpg 图片内存数据 |
size | 是 | int | 长度 |
# 15. 获取拉流状态返回
virtual void onStreamStats(int videoWidth, int videoHeight, float lostRate,
int decodeFps, int preReceive, int currentRoundTripTime) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
videoWidth | 是 | int | 视频宽 |
videoHeight | 是 | int | 视频高 |
lostRate | 是 | float | 丢包率 百分比 |
decodeFps | 是 | int | 解码帧率 |
preReceive | 是 | int | 每秒字节数 除1024 为KB/s |
currentRoundTripTime | 是 | int | 网络往返时延 ms |
# 16. 拉流连接状态通知
virtual void onStreamConnectionStatus(int code, const char* descriptions) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
code | 是 | int | 状态值 |
descriptions | 是 | const char* | 描述 |
# 17. 拉流视频宽高改变通知
virtual void onFrameResultionChanned(int width, int height) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
width | 是 | int | 视频宽 |
height | 是 | int | 视频高 |
# 18. 暂停云机通知
virtual void pauseStreamResponse(bool ret) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
ret | 是 | bool | 操作结果 |
# 19. 恢复云机通知
virtual void resumeStreamResponse(bool ret) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
ret | 是 | bool | 操作结果 |
# 20. 音频开通知
virtual void setAudioOpenResponse(bool ret) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
ret | 是 | bool | 操作结果 |
# 21. 音频关通知
virtual void setAudioCloseResponse(bool ret) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
ret | 是 | bool | 操作结果 |
# 22. 画质设置通知
virtual void setPictureQualityResponse(bool ret) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
ret | 是 | bool | 操作结果 |
# 22. 编码类型设置通知
virtual void setVideoCodecHwResponse(bool ret) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
ret | 是 | bool | 操作结果 |
# 23. 横竖屏设置通知
virtual void setScreenOrientationResponse(bool ret) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
ret | 是 | bool | 操作结果 |
# 23. 订阅消息通知
virtual void subscribeTopicResponse(const char* instanceId, int code, const char* message) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
code | 是 | int | 0成 非0 失败 |
message | 是 | const char* | 描述 |
# 24. 取消订阅消息通知
virtual void unsubscribeTopicResponse(const char* instanceId, int code, const char* message) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
code | 是 | int | 0成 非0 失败 |
message | 是 | const char* | 描述 |
# 25. 消息透传通知
virtual void appMessageTransmissionResponse(const char* instanceId, int code, const char* message) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
code | 是 | int | 0成 非0 失败 |
message | 是 | const char* | 描述 |
# 26. 订阅app消息通知
virtual void subscribeAppMessageResponse(const char* instanceId, int code, const char* message, const char* pkgName) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
code | 是 | int | 0成 非0 失败 |
message | 是 | const char* | 描述 |
pkgName | 是 | const char* | 包名 |
# 27. 截图通知
virtual void screenshotResponse(const char* instanceId, int code, const char* message, const char* imagePath) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
code | 是 | int | 0成 非0 失败 |
message | 是 | const char* | 描述 |
imagePath | 是 | const char* | 文件路径 |
# 28. 文件上传通知
virtual void uploadResponse(int64_t taskId, const char* filename, int type, int progress) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
taskId | 是 | int64_t | 任务id |
filename | 是 | const char* | 文件名称 |
type | 是 | int | 0:相册,1:SD卡 |
progress | 是 | int | 进度值 |
# 29. 文件下载通知
virtual void downloadResponse(int64_t taskId, const char* filename, int type, int progress) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
taskId | 是 | int64_t | 任务id |
filename | 是 | const char* | 文件名称 |
progress | 是 | int | 进度值 |
# 30. 应用清理通知
virtual void cleanAppDataResponse(const char* instanceId, int code, const char* message) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
code | 是 | int | 0成 非0 失败 |
message | 是 | const char* | 描述 |
# 31. 设备新机通知
virtual void setSysPropResponse(const char* instanceId, int code, const char* message) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
code | 是 | int | 0成 非0 失败 |
message | 是 | const char* | 描述 |
# 32. 超时通知
virtual void onTimeOutResponse(const char* instanceId, int code, const char* message) {};
返回值 | 类型 | 说明 | |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
code | 是 | int | 0成 非0 失败 |
message | 是 | const char* | 描述 |
# 33. 应用停用通知
virtual void disableAppResponse(const char* instanceId, int code, const char* message) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
code | 是 | int | 0成 非0 失败 |
message | 是 | const char* | 描述 |
# 34. 应用启用通知
virtual void disableAppResponse(const char* instanceId, int code, const char* message) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
code | 是 | int | 0成 非0 失败 |
message | 是 | const char* | 描述 |
# 35. 获取导航栏状态通知
virtual void onGetNavBarStatusResponse(const char* instanceId, int code, const char* message, int status) {}
返回值 | 类型 | 说明 | |
---|---|---|---|
instanceId | 是 | const char* | 实例id |
code | 是 | int | 0成 非0 失败 |
message | 是 | const char* | 描述 |
status | 是 | int | 0:显示,1:隐藏 |