设备发现

更新时间: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];

results matching ""

    No results matching ""