设备发现
更新时间:2019-04-03 13:43:17
在WiFi进行配网的时候需要进行设备发现,同样在对WiFi或者以太网设备进行绑定的时候,也需要发现设备的ProductKey和DeviceName。SDK提供了接口用于发现待配网设备或者待绑定设备:
安卓系统
启动设备发现
通过调用LocalDeviceMgr的startDiscovery可以发现局域网内的设备,代码如下所示:
// 开始发现设备
// enumSet 是需要使用的方显方式 EnumSet<DiscoveryType>
// 第三个参数是获取 零配或智能路由器发现的待配设备 请求时需要携带的参数
LocalDeviceMgr.getInstance().startDiscovery(context, enumSet, null, new IDeviceDiscoveryListener() {
@Override
public void onDeviceFound(DiscoveryType discoveryType, List<DeviceInfo> list) {
// 发现的设备
// LOCAL_ONLINE_DEVICE 当前和手机在同一局域网已配网在线的设备
// CLOUD_ENROLLEE_DEVICE 零配或智能路由器发现的待配设备
// BLE_ENROLLEE_DEVICE 发现的是蓝牙设备,需要根据设备的productId查询设备是否是wifi+蓝牙双模设备
// SOFT_AP_DEVICE 发现的设备热点
}
});
注:
- 只需要关心发现的LOCAL_ONLINE_DEVICE类型的设备
停止设备发现
停止发现本地已配和线上待配设备,调用该接口会清除已发现设备列表,确保与 startDiscovery 成对调用。
// 停止设备发现
LocalDeviceMgr.getInstance().stopDiscovery();
iOS系统
启动设备发现
// 引入头文件
#import <IMSDeviceCenter/IMLDeviceCenter.h>
// 本地发现入口
[[IMLLocalDeviceMgr sharedMgr] startDiscovery:^(NSArray *devices, NSError *err) {
if (devices && [devices count] > 0) {
IMSLifeLogVerbose(@"发现本地设备: %@", devices);
// 将与用户没有绑定关系的设备显示在本地发现设备中
for (IMLCandDeviceModel *device in devices) {
if (![self checkBindWithLocalDevice:device]) {
[wSelf.localDeviceList addObject:device];
}
}
[wSelf.tableView reloadData];
} else if (err) {
IMSLifeLogError(@"本地发现设备出错: %@", err);
}
}];
停止设备发现
停止发现本地已配和线上待配设备,调用该接口会清除已发现设备列表,确保和startDiscovery成对调用。
// 引入头文件
#import <IMSDeviceCenter/IMLDeviceCenter.h>
// 停止发现设备
[kLKLocalDeviceMgr stopDiscovery];