配网 SDK

更新时间:2018-05-24 23:15:44

概述

提供了把 WiFi 设备配置上家庭路由器以及局域网内已联网设备的发现能力,具体方案包括一键广播配网(P2P)、手机热点配网、智能路由器配网以及设备间相互配网等。

依赖SDK 概述
API 通道 提供云端 API 通道能力
身份认证 提供云端 API 通道身份认证

初始化

配网SDK 的初始化依赖 身份认证 模块的初始化,请参见:身份认证 - 初始化 (包含API通道初始化和账号初始化)。

使用方式

设备配置添加

关于设备配置添加相关 API 说明: AddDeviceBiz

设置待添加设备信息

热点配网在正式开始添加设备之前需要先调用 HotspotHelper 相关接口,完成配网前置工作再进入该流程。

DeviceInfo deviceInfo = new DeviceInfo();
deviceInfo.productKey = "xx"; // 商家后台注册的 productKey,不可为空
deviceInfo.deviceName = "xxx";// 设备名, 可为空
deviceInfo.linkType = "ForceAliLinkTypeNone"; // 配网方式,可为空

//设置待添加设备的基本信息
AddDeviceBiz.getInstance().setDevice(DeviceInfo deviceinfo);

配网时,指定的配网方式 linkType,请参见 LinkType
设备信息相关实体类,请参见 DeviceInfo

开始设备添加

上述设置好待添加设备信息,进入配网。

DeviceInfo deviceInfo = new DeviceInfo();
deviceInfo.productKey = "xx"; // 商家后台注册的 productKey, 不可为空
deviceInfo.deviceName = "xxx";// 设备名, 可为空

// 开始添加设备
AddDeviceBiz.getInstance().startAddDevice(deviceinfo, new IAddDeviceListener(){
    @Override
    public void onPreCheck(boolean b, DCErrorCode dcErrorCode) {
        // 参数检测回调 
    }

    @Override
    public void onProvisionPrepare() {
        // 提示用户输入账号密码
    }

    @Override
    public void onProvisioning() {
        // 配网中
    }

    @Override
    public void onProvisionStatus(ProvisionStatus provisionStatus) {
        // 配网状态

    }

    @Override
    public void onProvisionedResult(boolean b, DeviceInfo deviceInfo, DCErrorCode dcErrorCode) {
        // 配网结果
    }
});

配网回调接口,请参见 IAddDeviceListener

开始广播配网

在收到 onProvisionPrepare 回调后,引导用户输入 ssid 和 password ,并调用此方法传入 ssid、password、timeout 信息启动配网。 只有广播配网场景下,才会触发 onProvisionPrepare 回调。

String ssid = "ssid";
String ssid = "xxxxxxxx";
int timeout = 60;//单位秒
AddDeviceBiz.getInstance().toggleProvision(ssid, password, timeout);

获取当前配网进度

// 获取配网进度
AddDeviceBiz.getInstance().getProcedureState();

配网抽象模型状态,请参见 AddDeviceState

停止配网

// 停止配网
AddDeviceBiz.getInstance().stopAddDevice(context);

设置配网模式

String linkType = "ForceAliLinkTypeBroadcast"; 
// 设置配网模式
AddDeviceBiz.getInstance().setAliProvisionMode(linkType);

获取当前 WiFi 类型

// 获取当前连接 WiFi 的类型 是 2.4G 还是 5G 
AddDeviceBiz.getInstance().getWifiType(context);

获取 WiFi 的 RSSID

// 获取 WiFi 的信号强度
AddDeviceBiz.getInstance().getWifiRssid(context);

获取当前 WiFi 的 SSID

// 获取 WiFi ssid
AddDeviceBiz.getInstance().getCurrentSsid(context);

设备发现

提供获取局域网待配网设备、零配、路由器发现待添加设备发现功能。
关于设备发现相关 API,请参见:LocalDeviceMgr

启动设备发现

发现本地的待配网设备、或者零配、路由器发现设备

// 开始发现设备
LocalDeviceMgr.getInstance().startDiscovery(context, new HotspotHelper.IDiscoveryListener() {
    @Override
    public void onLocalDeviceFound(DeviceInfo deviceInfo) {
        // 已配网设备
    }

    @Override
    public void onEnrolleeDeviceFound(List<DeviceInfo> devices) {
        //待配网设备
    }
});

停止发现设备

停止发现本地已配和线上待配设备,调用该接口会清除已发现设备列表,确保与 startDiscovery 成对调用。

// 停止设备发现
LocalDeviceMgr.getInstance().stopDiscovery();

获取发现设备列表

// 获取发现的设备列表
LocalDeviceMgr.getInstance().getLanDevices();

获取设备绑定 Token

// 获取设备绑定 token
LocalDeviceMgr.getInstance().getDeviceToken(productKey, deviceName, 60*1000, new IOnDeviceTokenGetListener() {
            @Override
            public void onSuccess(String token) {
                // TODO bind
            }

            @Override
            public void onFail(String reason) {
            }
        });

手机热点配网

提供手机热点配网支持的相关 API。
关于热点配网相关 API,请参见:HotspotHelper

创建热点

// 创建热点
HotspotHelper.getInstance().setupWifiAP(context,new HotspotHelper.ISetupWifiAPListener(){
    @Override
    public void onEnable() {
        // 热点开启成功
    }

    @Override
    public void onFail() {
        // 热点开启失败
    }
});

创建热点回调接口,请参见: ISetupWifiAPListener

开始发现

开始发现连接到热点的设备,可能会多次回调。

// 开发发现设备
HotspotHelper.getInstance().discoveryDevices(new HotspotHelper.IPAPDiscoveryListener(){
    @Override
    public void onFound(LocalDevice localDevice) {
        // 发现的设备
    }
});

连接上热点的设备信息实体类,请参见: LocalDevice
连接热点设备发现回调接口,请参见: IPAPDiscoveryListener

停止发现

// 停止设备发现
HotspotHelper.getInstance().stopDiscovery();

获取设备 WiFi 列表(Deprecated)

根据获取到的设备列表信息来调用。

// 获取设备的发现 WiFi 列表
HotspotHelper.getInstance().getWiFiList(device, new HotspotHelper.IGetWiFiListListener(){
    @Override
    public void onResult(List<WiFiModel> list) {

    }

    @Override
    public void onTimeOut() {

    }
});

获取指定设备能够搜索到的 WiFi 列表信息的回调接口,请参见: IGetWiFiListListener

停止获取设备 WiFi 列表(Deprecated)

// 停止获取 WiFi 列表
HotspotHelper.getInstance().stopGetWiFiList();

设备切换 WiFi

// 发送账号密码到待配网设备
HotspotHelper.getInstance().switchAP(device, ssid, pwd, new HotspotHelper.ISwitchApResultListenr(){
    public void onSucc(DeviceInfo info){}
    public void onFail(String msg){}
};

发送AP账号密码给指定的已连接热点的设备回调接口,请参见: ISwitchApResultListenr

恢复手机 WiFi 连接

// 关闭热点 恢复 WiFi 连接
HotspotHelper.getInstance().recoverWiFiConnect(context);

获取发现的所有设备

// 获取发现的设备列表
HotspotHelper.getInstance().getDiscoveryDevices();

混淆配置


-keep public class com.aliyun.alink.business.devicecenter.** {*;}

-keep public class com.aliyun.alink.linksdk.alcs.coap.**{*;}

更多功能

在插件中使用配网能力

如果需要在插件中使用配网能力,需要向 BoneMobile 容器中注册配网 API,请在插件加载前,调用如下注册代码:

BonePluginRegistry.register("BoneAddDeviceBiz",BoneAddDeviceBiz.class);
BonePluginRegistry.register("BoneLocalDeviceMgr",BoneLocalDeviceMgr.class);
BonePluginRegistry.register("BoneHotspotHelper",BoneHotspotHelper.class);

results matching ""

    No results matching ""