第一步:将 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>);
Air Link 一键配置¶
在 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¶
code | message |
---|---|
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 |