API目录
Nebula接口模块介绍
Nebula接口是Kalay SDK针对Android平台提供的核心设备交互接口集,主要用于设备绑定、Nebula协议连接、局域网设备搜索、Wi-Fi配置、区域设置等关键场景,为APP与Nebula协议设备的全生命周期交互提供标准化调用方式。
KY_nebulaLanSearch
功能描述:Nebula AP模式添加时,在局域网内搜索设备UDID列表。
接口定义
public static st_UDIDInfo[] KY_nebulaLanSearch(int timeoutMs);
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| timeoutMs | int | 搜索的超时时间,单位为毫秒。 |
回调说明
暂无额外回调,搜索结果通过接口返回值直接返回
返回码
返回
st_UDIDInfo[]类型数组:- 非空数组:包含搜索到的设备UDID信息
- 空数组:未搜索到设备或搜索超时
代码示例
// 设置超时时间为3000毫秒,搜索本地UDID列表
int timeout = 3000;
st_UDIDInfo[] udidList = KY_nebulaLanSearch(timeout);
if (udidList != null && udidList.length > 0) {
// 处理搜索到的UDID列表
for (st_UDIDInfo info : udidList) {
Log.d("Nebula", "搜索到设备UDID: " + info.udid);
}
} else {
Log.d("Nebula", "未搜索到设备或搜索超时");
}
KY_nebulaStartBind
功能描述:启动 Nebula 设备绑定流程,将设备与用户账号关联起来。
接口定义
public abstract void KY_nebulaStartBind(String udid,
Camera.BindType bindType,
String bindKey);
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| udid | string | 设备的唯一标识符(40位字符串)。 |
| bindType | Camera.BindType | 绑定类型枚举。详细定义参考:BindType 枚举。 |
| bindKey | string | 绑定密钥,其内容取决于 `bindType`:
|
BindType 枚举
| 枚举值 | 枚举常量 | 说明 |
|---|---|---|
| 0 | PIN_CODE | 通过PIN码进行远程绑定。 |
| 1 | CREDENTIAL | 通过凭证进行绑定。 |
| 2 | AP | 在设备的 AP 模式下进行局域网绑定。 |
回调说明
暂无额外回调,绑定结果需通过
KY_registerSDKListener注册的全局监听器获取返回码
暂无固定返回码,绑定结果通过SDK全局错误回调返回
代码示例
// AP模式绑定设备
String udid = "设备40位UDID序列号";
Camera.BindType bindType = Camera.BindType.AP;
String bindKey = "AP模式绑定密码";
// 开始绑定
kyCamera.KY_nebulaStartBind(udid, bindType, bindKey);
KY_nebulaStopBind
功能描述:终止 Nebula 设备绑定流程,停止当前的绑定操作。
接口定义
public abstract void KY_nebulaStopBind();
参数说明
此接口无入参。
回调说明
停止绑定结果通过
KY_registerSDKListener注册的全局监听器返回返回码
暂无固定返回码,停止绑定状态通过SDK全局回调返回
代码示例
// 停止设备绑定操作
kyCamera.KY_nebulaStopBind();
KY_nebulaConnect
功能描述:通过 Nebula 协议与已绑定的设备建立连接并出图。
接口定义
// 基础版接口
public abstract void KY_nebulaConnect(String udid,
String credential,
String avToken,
String realm,
int channel,
boolean isDecode,
KYCamera.KYRenderType callbackType);
// 带唤醒参数版接口
public abstract void KY_nebulaConnect(String udid,
String credential,
String avToken,
String realm,
boolean isWakeup,
boolean isNebulaOnly,
int channel,
boolean isDecode,
KYCamera.KYRenderType callbackType);
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| udid | string | 设备的唯一标识符(40位字符串)。 |
| credential | string | 设备的认证凭证,在绑定成功后获得。 |
| avToken | string | 连线所需的令牌,由AM Server提供。 |
| realm | string | 认证领域,需要与设备配置保持一致。 |
| isWakeup | Boolean | 是否在连接前尝试唤醒设备。 |
| isNebulaOnly | Boolean | 是否仅使用 Nebula 协议进行连接。 |
| channel | int | 要建立的 AV 通道号,通常为 0。 |
| isDecode | Boolean | 是否自动解码视频流并显示,默认为 `true`。 |
| callbackType | KYCamera.KYRenderType | 视频数据输出格式枚举,参考:KYRenderType 枚举。 |
KYRenderType 枚举
| 枚举值 | 枚举常量 | 说明 |
|---|---|---|
| 0 | OUTPUT_NULL | 输出数据为空。 |
| 1 | OUTPUT_YUV | 输出YUV格式视频数据(耗时)。 |
| 2 | OUTPUT_RGB_8888 | 输出RGB_8888格式视频数据(耗时)。 |
| 3 | OUTPUT_RGB_565 | 输出RGB_565格式视频数据(耗时)。 |
| 4 | OUTPUT_YUV_NV12 | 输出YUV_NV12格式视频数据(耗时)。 |
回调说明
连接结果通过SDK的连接状态回调方法返回,包含连接成功/失败状态及错误信息;视频数据通过指定格式回调返回
返回码
失败信息可通过SDK全局错误回调的错误码判断具体连接失败原因
代码示例
// 设备连线并出图(基础版)
String udid = "设备40位UDID";
String credential = "设备绑定凭证";
String avToken = "AM Server提供的Token";
String realm = "设备对应的realm";
int channel = 0;
boolean isDecode = true;
KYCamera.KYRenderType renderType = KYCamera.KYRenderType.OUTPUT_YUV_NV12;
kyCamera.KY_nebulaConnect(udid, credential, avToken, realm, channel, isDecode, renderType);
// 设备连线并出图(带唤醒参数版)
boolean isWakeup = true;
boolean isNebulaOnly = true;
kyCamera.KY_nebulaConnect(udid, credential, avToken, realm,
isWakeup, isNebulaOnly, channel, isDecode, renderType);
KY_nebulaSendData
功能描述:通过 Nebula 通道向设备发送 JSON 格式的指令数据,并等待响应。
接口定义
public abstract void KY_nebulaSendData(String jsonRequest, int timeoutMs);
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| jsonRequest | string | 要发送的指令数据,格式为 JSON 字符串。 |
| timeoutMs | int | 等待响应的超时时间,单位为毫秒。 |
回调说明
设备响应结果通过
KY_registerSDKListener注册的监听器返回,超时或发送失败时无回调返回码
无固定返回码,响应结果通过监听器回调的错误码判断,0 表示成功,非0为错误码
代码示例
// 构造JSON指令
JSONObject jsonCmd = new JSONObject();
try {
jsonCmd.put("cmd", "device_info");
jsonCmd.put("action", "get");
} catch (JSONException e) {
e.printStackTrace();
}
String jsonRequest = jsonCmd.toString();
int timeoutMs = 5000; // 5秒超时
// 发送JSON指令
kyCamera.KY_nebulaSendData(jsonRequest, timeoutMs);
KY_nebulaSsidListReq
功能描述:向处于 AP 模式的设备发送请求,获取其周围可用的 Wi-Fi 网络列表(SSID 列表)。
接口定义
public abstract ListKY_nebulaSsidListReq();
参数说明
此接口无入参。
回调说明
暂无额外回调,Wi-Fi列表获取结果通过接口返回值直接返回
返回码
无固定返回码,通过返回列表长度判断结果(空列表表示获取失败)
代码示例
// 先进行AP模式绑定
String udid = "设备UDID";
Camera.BindType bindType = Camera.BindType.AP;
String bindKey = "AP绑定密码";
kyCamera.KY_nebulaStartBind(udid, bindType, bindKey);
// 获取设备WiFi列表
ListssidList = kyCamera.KY_nebulaSsidListReq();
if (ssidList != null && !ssidList.isEmpty()) {
// 遍历WiFi列表
for (String ssid : ssidList) {
Log.d("Nebula", "设备搜索到WiFi: " + ssid);
}
} else {
Log.d("Nebula", "获取WiFi列表失败");
}
KY_nebulaSetWifiReq
功能描述:配置处于 AP 模式的设备,使其连接到指定的 Wi-Fi 网络。
接口定义
public abstract NebulaWiFiConfig.NebulaIOCtrlMsgSetWifiResp
KY_nebulaSetWifiReq(NebulaWiFiConfig.NebulaIOCtrlMsgSSIDListResp wifi,
String password);
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| wifi | NebulaWiFiConfig.NebulaIOCtrlMsgSSIDListResp | 目标 Wi-Fi 网络的信息对象,包含SSID等信息。 |
| password | string | 目标 Wi-Fi 网络的密码。 |
回调说明
暂无额外回调,Wi-Fi配置结果通过接口返回值直接返回
返回码
配置结果通过返回对象中的
code字段判断,0 表示成功,非0为错误码代码示例
// 选择要连接的WiFi
ListssidList = kyCamera.KY_nebulaSsidListReq();
String targetSsid = "目标WiFi名称";
NebulaWiFiConfig.NebulaIOCtrlMsgSSIDListResp wifiInfo = null;
// 假设从ssidList中获取对应的wifiInfo对象
for (String ssid : ssidList) {
if (ssid.equals(targetSsid)) {
// 构建wifiInfo对象(实际需根据SDK返回的列表构建)
wifiInfo = new NebulaWiFiConfig.NebulaIOCtrlMsgSSIDListResp();
wifiInfo.ssid = targetSsid;
break;
}
}
// 设置WiFi密码
String wifiPassword = "WiFi密码";
NebulaWiFiConfig.NebulaIOCtrlMsgSetWifiResp resp =
kyCamera.KY_nebulaSetWifiReq(wifiInfo, wifiPassword);
// 检查设置结果
if (resp != null && resp.code == 0) {
Log.d("Nebula", "WiFi设置成功");
} else {
Log.d("Nebula", "WiFi设置失败,错误码:" + (resp != null ? resp.code : -1));
}
KY_nebulaSetRegionReq
功能描述:设置Nebula设备的P2P分区分流区域信息。
接口定义
public abstract NebulaWiFiConfig.NebulaIOCtrlMsgSetRegionResp
KY_nebulaSetRegionReq(TUTKRegion region);
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| region | TUTKRegion | 区域代码枚举:
|
回调说明
暂无额外回调,区域设置结果通过接口返回值直接返回
返回码
设置结果通过返回对象中的状态码字段判断,0 表示成功
代码示例
// 设置P2P分区分流为大中华地区
TUTKRegion region = TUTKRegion.CN; // 假设TUTKRegion枚举值1对应CN
NebulaWiFiConfig.NebulaIOCtrlMsgSetRegionResp resp =
kyCamera.KY_nebulaSetRegionReq(region);
// 检查设置结果
if (resp != null && resp.success) {
Log.d("Nebula", "P2P分区分流设置成功");
} else {
Log.d("Nebula", "P2P分区分流设置失败:" + (resp != null ? resp.errorMsg : "未知错误"));
}
