API目錄
- KY_nebulaLanSearch - 局域網(wǎng)搜索Nebula設(shè)備
- KY_nebulaStartBind - 啟動(dòng)Nebula設(shè)備綁定流程
- KY_nebulaStopBind - 終止Nebula設(shè)備綁定流程
- KY_nebulaConnect - 通過(guò)Nebula協(xié)議連接已綁定設(shè)備
- KY_nebulaSendData - 向Nebula設(shè)備發(fā)送JSON指令
- KY_nebulaSsidListReq - 獲取AP模式設(shè)備周邊Wi-Fi列表
- KY_nebulaSetWifiReq - 配置AP模式設(shè)備連接指定Wi-Fi
- KY_nebulaSetRegionReq - 設(shè)置Nebula設(shè)備區(qū)域信息
Nebula接口模塊介紹
Nebula接口是Kalay SDK針對(duì)Android平臺(tái)提供的核心設(shè)備交互接口集,主要用于設(shè)備綁定、Nebula協(xié)議連接、局域網(wǎng)設(shè)備搜索、Wi-Fi配置、區(qū)域設(shè)置等關(guān)鍵場(chǎng)景,為APP與Nebula協(xié)議設(shè)備的全生命周期交互提供標(biāo)準(zhǔn)化調(diào)用方式。
KY_nebulaLanSearch
功能描述:Nebula AP模式添加時(shí),在局域網(wǎng)內(nèi)搜索設(shè)備UDID列表。
接口定義
public static st_UDIDInfo[] KY_nebulaLanSearch(int timeoutMs);
參數(shù)說(shuō)明
| 參數(shù) | 類型 | 說(shuō)明 |
|---|---|---|
| timeoutMs | int | 搜索的超時(shí)時(shí)間,單位為毫秒。 |
回調(diào)說(shuō)明
暫無(wú)額外回調(diào),搜索結(jié)果通過(guò)接口返回值直接返回
返回碼
返回
st_UDIDInfo[]類型數(shù)組:- 非空數(shù)組:包含搜索到的設(shè)備UDID信息
- 空數(shù)組:未搜索到設(shè)備或搜索超時(shí)
代碼示例
// 設(shè)置超時(shí)時(shí)間為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", "搜索到設(shè)備UDID: " + info.udid);
}
} else {
Log.d("Nebula", "未搜索到設(shè)備或搜索超時(shí)");
}
KY_nebulaStartBind
功能描述:啟動(dòng) Nebula 設(shè)備綁定流程,將設(shè)備與用戶賬號(hào)關(guān)聯(lián)起來(lái)。
接口定義
public abstract void KY_nebulaStartBind(String udid,
Camera.BindType bindType,
String bindKey);
參數(shù)說(shuō)明
| 參數(shù) | 類型 | 說(shuō)明 |
|---|---|---|
| udid | string | 設(shè)備的唯一標(biāo)識(shí)符(40位字符串)。 |
| bindType | Camera.BindType | 綁定類型枚舉。詳細(xì)定義參考:BindType 枚舉。 |
| bindKey | string | 綁定密鑰,其內(nèi)容取決于 `bindType`:
|
BindType 枚舉
| 枚舉值 | 枚舉常量 | 說(shuō)明 |
|---|---|---|
| 0 | PIN_CODE | 通過(guò)PIN碼進(jìn)行遠(yuǎn)程綁定。 |
| 1 | CREDENTIAL | 通過(guò)憑證進(jìn)行綁定。 |
| 2 | AP | 在設(shè)備的 AP 模式下進(jìn)行局域網(wǎng)綁定。 |
回調(diào)說(shuō)明
暫無(wú)額外回調(diào),綁定結(jié)果需通過(guò)
KY_registerSDKListener注冊(cè)的全局監(jiān)聽(tīng)器獲取返回碼
暫無(wú)固定返回碼,綁定結(jié)果通過(guò)SDK全局錯(cuò)誤回調(diào)返回
代碼示例
// AP模式綁定設(shè)備
String udid = "設(shè)備40位UDID序列號(hào)";
Camera.BindType bindType = Camera.BindType.AP;
String bindKey = "AP模式綁定密碼";
// 開(kāi)始綁定
kyCamera.KY_nebulaStartBind(udid, bindType, bindKey);
KY_nebulaStopBind
功能描述:終止 Nebula 設(shè)備綁定流程,停止當(dāng)前的綁定操作。
接口定義
public abstract void KY_nebulaStopBind();
參數(shù)說(shuō)明
此接口無(wú)入?yún)ⅰ?/div>
回調(diào)說(shuō)明
停止綁定結(jié)果通過(guò)
KY_registerSDKListener注冊(cè)的全局監(jiān)聽(tīng)器返回返回碼
暫無(wú)固定返回碼,停止綁定狀態(tài)通過(guò)SDK全局回調(diào)返回
代碼示例
// 停止設(shè)備綁定操作
kyCamera.KY_nebulaStopBind();
KY_nebulaConnect
功能描述:通過(guò) Nebula 協(xié)議與已綁定的設(shè)備建立連接并出圖。
接口定義
// 基礎(chǔ)版接口
public abstract void KY_nebulaConnect(String udid,
String credential,
String avToken,
String realm,
int channel,
boolean isDecode,
KYCamera.KYRenderType callbackType);
// 帶喚醒參數(shù)版接口
public abstract void KY_nebulaConnect(String udid,
String credential,
String avToken,
String realm,
boolean isWakeup,
boolean isNebulaOnly,
int channel,
boolean isDecode,
KYCamera.KYRenderType callbackType);
參數(shù)說(shuō)明
| 參數(shù) | 類型 | 說(shuō)明 |
|---|---|---|
| udid | string | 設(shè)備的唯一標(biāo)識(shí)符(40位字符串)。 |
| credential | string | 設(shè)備的認(rèn)證憑證,在綁定成功后獲得。 |
| avToken | string | 連線所需的令牌,由AM Server提供。 |
| realm | string | 認(rèn)證領(lǐng)域,需要與設(shè)備配置保持一致。 |
| isWakeup | Boolean | 是否在連接前嘗試喚醒設(shè)備。 |
| isNebulaOnly | Boolean | 是否僅使用 Nebula 協(xié)議進(jìn)行連接。 |
| channel | int | 要建立的 AV 通道號(hào),通常為 0。 |
| isDecode | Boolean | 是否自動(dòng)解碼視頻流并顯示,默認(rèn)為 `true`。 |
| callbackType | KYCamera.KYRenderType | 視頻數(shù)據(jù)輸出格式枚舉,參考:KYRenderType 枚舉。 |
KYRenderType 枚舉
| 枚舉值 | 枚舉常量 | 說(shuō)明 |
|---|---|---|
| 0 | OUTPUT_NULL | 輸出數(shù)據(jù)為空。 |
| 1 | OUTPUT_YUV | 輸出YUV格式視頻數(shù)據(jù)(耗時(shí))。 |
| 2 | OUTPUT_RGB_8888 | 輸出RGB_8888格式視頻數(shù)據(jù)(耗時(shí))。 |
| 3 | OUTPUT_RGB_565 | 輸出RGB_565格式視頻數(shù)據(jù)(耗時(shí))。 |
| 4 | OUTPUT_YUV_NV12 | 輸出YUV_NV12格式視頻數(shù)據(jù)(耗時(shí))。 |
回調(diào)說(shuō)明
連接結(jié)果通過(guò)SDK的連接狀態(tài)回調(diào)方法返回,包含連接成功/失敗狀態(tài)及錯(cuò)誤信息;視頻數(shù)據(jù)通過(guò)指定格式回調(diào)返回
返回碼
失敗信息可通過(guò)SDK全局錯(cuò)誤回調(diào)的錯(cuò)誤碼判斷具體連接失敗原因
代碼示例
// 設(shè)備連線并出圖(基礎(chǔ)版)
String udid = "設(shè)備40位UDID";
String credential = "設(shè)備綁定憑證";
String avToken = "AM Server提供的Token";
String realm = "設(shè)備對(duì)應(yīng)的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);
// 設(shè)備連線并出圖(帶喚醒參數(shù)版)
boolean isWakeup = true;
boolean isNebulaOnly = true;
kyCamera.KY_nebulaConnect(udid, credential, avToken, realm,
isWakeup, isNebulaOnly, channel, isDecode, renderType);
KY_nebulaSendData
功能描述:通過(guò) Nebula 通道向設(shè)備發(fā)送 JSON 格式的指令數(shù)據(jù),并等待響應(yīng)。
接口定義
public abstract void KY_nebulaSendData(String jsonRequest, int timeoutMs);
參數(shù)說(shuō)明
| 參數(shù) | 類型 | 說(shuō)明 |
|---|---|---|
| jsonRequest | string | 要發(fā)送的指令數(shù)據(jù),格式為 JSON 字符串。 |
| timeoutMs | int | 等待響應(yīng)的超時(shí)時(shí)間,單位為毫秒。 |
回調(diào)說(shuō)明
設(shè)備響應(yīng)結(jié)果通過(guò)
KY_registerSDKListener注冊(cè)的監(jiān)聽(tīng)器返回,超時(shí)或發(fā)送失敗時(shí)無(wú)回調(diào)返回碼
無(wú)固定返回碼,響應(yīng)結(jié)果通過(guò)監(jiān)聽(tīng)器回調(diào)的錯(cuò)誤碼判斷,0 表示成功,非0為錯(cuò)誤碼
代碼示例
// 構(gòu)造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秒超時(shí)
// 發(fā)送JSON指令
kyCamera.KY_nebulaSendData(jsonRequest, timeoutMs);
KY_nebulaSsidListReq
功能描述:向處于 AP 模式的設(shè)備發(fā)送請(qǐng)求,獲取其周圍可用的 Wi-Fi 網(wǎng)絡(luò)列表(SSID 列表)。
接口定義
public abstract ListKY_nebulaSsidListReq();
參數(shù)說(shuō)明
此接口無(wú)入?yún)ⅰ?/div>
回調(diào)說(shuō)明
暫無(wú)額外回調(diào),Wi-Fi列表獲取結(jié)果通過(guò)接口返回值直接返回
返回碼
無(wú)固定返回碼,通過(guò)返回列表長(zhǎng)度判斷結(jié)果(空列表表示獲取失?。?/div>
代碼示例
// 先進(jìn)行AP模式綁定
String udid = "設(shè)備UDID";
Camera.BindType bindType = Camera.BindType.AP;
String bindKey = "AP綁定密碼";
kyCamera.KY_nebulaStartBind(udid, bindType, bindKey);
// 獲取設(shè)備WiFi列表
ListssidList = kyCamera.KY_nebulaSsidListReq();
if (ssidList != null && !ssidList.isEmpty()) {
// 遍歷WiFi列表
for (String ssid : ssidList) {
Log.d("Nebula", "設(shè)備搜索到WiFi: " + ssid);
}
} else {
Log.d("Nebula", "獲取WiFi列表失敗");
}
KY_nebulaSetWifiReq
功能描述:配置處于 AP 模式的設(shè)備,使其連接到指定的 Wi-Fi 網(wǎng)絡(luò)。
接口定義
public abstract NebulaWiFiConfig.NebulaIOCtrlMsgSetWifiResp
KY_nebulaSetWifiReq(NebulaWiFiConfig.NebulaIOCtrlMsgSSIDListResp wifi,
String password);
參數(shù)說(shuō)明
| 參數(shù) | 類型 | 說(shuō)明 |
|---|---|---|
| wifi | NebulaWiFiConfig.NebulaIOCtrlMsgSSIDListResp | 目標(biāo) Wi-Fi 網(wǎng)絡(luò)的信息對(duì)象,包含SSID等信息。 |
| password | string | 目標(biāo) Wi-Fi 網(wǎng)絡(luò)的密碼。 |
回調(diào)說(shuō)明
暫無(wú)額外回調(diào),Wi-Fi配置結(jié)果通過(guò)接口返回值直接返回
返回碼
配置結(jié)果通過(guò)返回對(duì)象中的
code字段判斷,0 表示成功,非0為錯(cuò)誤碼代碼示例
// 選擇要連接的WiFi
ListssidList = kyCamera.KY_nebulaSsidListReq();
String targetSsid = "目標(biāo)WiFi名稱";
NebulaWiFiConfig.NebulaIOCtrlMsgSSIDListResp wifiInfo = null;
// 假設(shè)從ssidList中獲取對(duì)應(yīng)的wifiInfo對(duì)象
for (String ssid : ssidList) {
if (ssid.equals(targetSsid)) {
// 構(gòu)建wifiInfo對(duì)象(實(shí)際需根據(jù)SDK返回的列表構(gòu)建)
wifiInfo = new NebulaWiFiConfig.NebulaIOCtrlMsgSSIDListResp();
wifiInfo.ssid = targetSsid;
break;
}
}
// 設(shè)置WiFi密碼
String wifiPassword = "WiFi密碼";
NebulaWiFiConfig.NebulaIOCtrlMsgSetWifiResp resp =
kyCamera.KY_nebulaSetWifiReq(wifiInfo, wifiPassword);
// 檢查設(shè)置結(jié)果
if (resp != null && resp.code == 0) {
Log.d("Nebula", "WiFi設(shè)置成功");
} else {
Log.d("Nebula", "WiFi設(shè)置失敗,錯(cuò)誤碼:" + (resp != null ? resp.code : -1));
}
KY_nebulaSetRegionReq
功能描述:設(shè)置Nebula設(shè)備的P2P分區(qū)分流區(qū)域信息。
接口定義
public abstract NebulaWiFiConfig.NebulaIOCtrlMsgSetRegionResp
KY_nebulaSetRegionReq(TUTKRegion region);
參數(shù)說(shuō)明
| 參數(shù) | 類型 | 說(shuō)明 |
|---|---|---|
| region | TUTKRegion | 區(qū)域代碼枚舉:
|
回調(diào)說(shuō)明
暫無(wú)額外回調(diào),區(qū)域設(shè)置結(jié)果通過(guò)接口返回值直接返回
返回碼
設(shè)置結(jié)果通過(guò)返回對(duì)象中的狀態(tài)碼字段判斷,0 表示成功
代碼示例
// 設(shè)置P2P分區(qū)分流為大中華地區(qū)
TUTKRegion region = TUTKRegion.CN; // 假設(shè)TUTKRegion枚舉值1對(duì)應(yīng)CN
NebulaWiFiConfig.NebulaIOCtrlMsgSetRegionResp resp =
kyCamera.KY_nebulaSetRegionReq(region);
// 檢查設(shè)置結(jié)果
if (resp != null && resp.success) {
Log.d("Nebula", "P2P分區(qū)分流設(shè)置成功");
} else {
Log.d("Nebula", "P2P分區(qū)分流設(shè)置失?。?quot; + (resp != null ? resp.errorMsg : "未知錯(cuò)誤"));
}
