第一步:将 SDK 导入到你的工程中

  • 登录机智云官方网站下载并解压最新版本的SDK。如果您还尚未下载,请 点击这里下载

  • 将解压后的 libs 目录下的文件 复制到项目的 Android 项目 libs 目录即可

第二步:引入头文件和注册 SDK 的 AppID

  • 登录机智云官方网站查看产品信息获得 AppID 。如果尚未注册,请点击这里注册
  • 初始化 SDK

在 Application的onCreate() 方法来初始化 SDK,指定目标设备的 Product Keys,并根据调整调试参数.

  public void onCreate(){
    // 启动SDK,参数为机智云官网中查看产品信息得到的AppID
    XPGWifiSDK.sharedInstance().startWithAppID(getApplicationContext(), "appid");
    // 设定日志打印级别,日志文件的相对路径(相对于/sdcard/)
    XPGWifiSDK.sharedInstance().setLogLevel(XPGWifiSDK.XPGWifiLogLevel.XPGWifiLogLevelAll, "file path", true);
}

第三步:设置 XPGWifiSDK Listener

  • XPGWifiSDK: XPGWifiSDKListener

配置设备上线、注册登录用户、搜索发现设备、用户绑定和解绑设备相关

XPGWifiSDK.sharedInstance().setListener(<YOUR_SDK_LISTENER>);
  • Device:XPGWifiDeviceListener

设备连接断开、获取绑定参数、获取设备信息、控制和接受设备信息相关

XPGWifiDevice xpgWifiDevice = ...;
xpgWifiDevice.setListener(<YOUR_DEVICE_LISTENER>);

第四步:创建和登录用户账号

  • 在 XPGWifiSDK Listener 实现用户回调方法

如下

public void didRequestSendVerifyCode(int error, String errorMessage) {
  // 手机验证码已经发送 if error == 0
}

public void didUserLogin(int error, String errorMessage, String uid, String token) {
    // got uid & token if login success
    // otherwise got error code & error message
}

public void didRegisterUser(int error, String errorMessage, String uid, String token) {
    // got uid & token if register success
    // otherwise got error code & error message
}
  • 使用手机号注册账号

需要先请求手机验证码

XPGWifiSDK.sharedInstance().requestSendVerifyCode(<phoneNumber>); // 替换为真实手机号

然后调用注册接口进行注册,注册成功会自动登录并返回 uid 和 token

XPGWifiSDK.sharedInstance().registerPhoneUser(<phone>, <password>, <code>)
  • 登录接口包括匿名登录、明文登录和使用第三方授权登录

使用用户名或手机号登录

XPGWifiSDK.sharedInstance().userLogin(<phone>, <psw>);

如果一开始不需要直接注册账号,则需要进行匿名登录

XPGWifiSDK.sharedInstance().userLoginAnonymous();

支持第三方登录,在第三方登录成功获取 uid 和 token 后,使用这两个参数进行登录

XPGWifiSDK.sharedInstance().userLoginWithThirdAccountType(XPGWifiThirdAccountType.XPGWifiThirdAccountTypeBAIDU, <uid>,<token>)

第五步:配置设备上线

Soft AP 设备配置

在 SDK Listener 实现 Soft AP 模式下的 SSID 列表回调方法

public void didGetSSIDList(int error, List<XPGWifiSSID> ssidInfoList) {
    if (result == 0) {
        // handle returned ssid list
    }
}

获取设备上搜索到的 SSID 列表

XPGWifiSDK.sharedInstance().getSSIDList();

在 XPGWifiSDK Listener 实现 Soft AP 配置成功回调方法

public void didSetDeviceWifi(int error, XPGWifiDevice device) {
        if (result == 0) {
            // Soft AP successfully
        }
        else {
            // Soft AP failed or timeout
        }
}

设备没有配置过路由或者无法连上路由时,会自动进入 Soft AP 模式。通过 Soft AP 模式配置,手持设备需要先连接该设备的 Soft AP,向 AP 发送路由的配置信息,让 AP 连接上指定的路由。

给设备配置 SSID 和密码,指定超时时间

XPGWifiSDK.sharedInstance().setDeviceWifi(<yourssid>, <password>, XPGWifiConfigureMode.XPGWifiConfigureModeSoftAP, <YOUR_TIMEOUT_TIME>);

在 XPGWifiSDK Listener 实现 Airl Link 配置成功回调方法

public void didSetDeviceWifi(int error, XPGWifiDevice device) {
    // onboarded device
}

在硬件上按 OnBoarding 按钮进入 Air Link 配置模式 60 秒内,调用以下函数

XPGWifiSDK.sharedInstance().setDeviceWifi(<youssid>, <password>, XPGWifiConfigureMode.XPGWifiConfigureModeAirLink, <YOUR_TIMEOUT_TIME>);

第六步:搜索和绑定设备

在 XPGWifiSDK Listener 方法实现设备列表、绑定或解绑回调

// 设备列表回调
public void didDiscovered(int error, List<XPGWifiDevice> devicesList) {
    if (error == 0) { // discovery successfully
        // handle deviceList
    }
}

// 设备绑定回调,成功如果 error == 0
public void didBindDevice(int error, String errorMessage) {
}

// 设备解绑回调,成功如果 error == 0
public void didUnbindDevice(int error, String errorMessage) {

}

绑定设备,使用用户 id 和 token 以及设备 did 和 passcode 进行绑定(如果不需要通过二维码扫码方式获取passcode,则传nil)

XPGWifiSDK.sharedInstance().bindDevice(<uid>, <token>, <did>, <passcode>, <remark>);

绑定后刷新设备列表

XPGWifiSDK.sharedInstance().getBoundDevices(<your uid>, <your token>, <your productkey>);

绑定之后可以解除绑定

XPGWifiSDK.sharedInstance().unbindDevice(<uid>, <token>, <did>, <passcode>);

第七步:设备登录

使用用户和设备信息进行登录以便授权

在设备列表回调中拿到 XPGWifiDevice 后设置设备的 Listener

device.setListener(<listener>);

先实现 XPGWifiDevice Listener 相关方法

// 授权成功如果 result == 0, 失败如果 result == 2
public void didLogin(XPGWifiDevice device, int result) {
}

// socket 连接被断开
public void didDisconnected() {
}

登录设备,使用用户 uid 和 token 进行授权(绑定后才能设备登录)

device.login(<uid>,<token>);

第八步:控制和接收设备信息

发送和接收信息编码请参看机智云数据点协议使用手册

实现 Device Listener

// 收到设备数据,参数dataMap中存储data、alerts、faults、binary为关键字的数据
public boolean didReceiveData(XPGWifiDevice device, ConcurrentHashMap<String, Object> dataMap, int result) {
 // handle data、alert、fault、binary
}

发送控制数据

device.write(data);

Error codes

codemessage
9001 mac already registered!
9002 product_key invalid
9003 appid invalid
9004 token invalid
9005 user not exist
9006 token expired
9007 m2m_id invalid
9008 server error
9009 code expired
9010 code invalid
9999 reserved