EasyLink SDK 主要功能:
- 将手机端设置的Wi-Fi网络参数发送到设备端
- 支持EasyLink模式
- 支持EasyLink—AWS模式
- 到新入网的设备,并且交互。实现参数设置,OTA等功能
**注意:**EasyLink模式仅支持在IPv4网络中进行操作。
- 简单EasyLink的示例程序:
1)简单的示例程序:
提供了一个简单的UI,展示EasyLink SDK的使用方法 ,主要功能是配网和设备发现。
app链接如下:easylink-app-url
dependencies {
// 只发广播的版本
compile 'io.fogcloud.sdk:easylinkv3:0.1.4'
// 广播组播同时发的版本
compile 'io.fogcloud.sdk:easylinkv3:0.1.5'
// AWS配网版本
compile 'io.fogcloud.sdk:easylinkv3:0.1.6'
}
一般情况使用只发广播的版本就可以了,特殊需求,比如广播收不到的情况可以使用0.1.5版本,广播组播一起发。
需要现在manifest.xml中开启服务
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
获取当前手机连接的WIFI的名称,即ssid
String getSSID()
ssid
- 类型:String
- 描述:当前WIFI的名称
EasylinkP2P elp2p = new EasylinkP2P(mContext);
elink.getSSID()
发送数据包(包含ssid和password)给设备,连续发10s,再停止3s,再继续发,如此反复
startEasyLink(EasyLinkParams easylinkPara, EasyLinkCallBack easylinkcb)
参数名 | 类型 | 描述 |
---|---|---|
easylinkPara | EasyLinkParams | EasyLinkParams包含以下的信息 |
参数名 | 类型 | 默认值 | 描述 |
---|---|---|---|
ssid | String | 无默认值,不可为空 | 当前wifi的名称 |
password | String | 无默认值,可为空 | 当前wifi的密码(8-64个字节,越长配网速度越慢) |
isSendIP | Boolean | 默认值为false,可为空 | 是否发送手机的IP,默认不发送,如果此参数为false,那么extraData也不可用 |
runSecond | int | 默认值50,可为空 | 发送持续的时间,到点了就停止发送, 单位s |
sleeptime | int | 默认值50,可为空 | 每包数据的间隔时间,建议20-200, 单位ms |
extraData | String | 无默认值,可为空 | 需要发送给设备的额外信息 |
rc4key | String | 无默认值,可为空 | 如果需要RC4加密,这里就输入字符串密钥 |
easylinkcb
- 类型:EasyLinkCallBack
- 描述:接口调用成功后的回调函数
EasyLinkParams easylinkPara = new EasyLinkParams();
easylinkPara.ssid = "mxchip";
easylinkPara.password = "12345678";
easylinkPara.runSecond = 60000;
easylinkPara.sleeptime = 20;
elink.startEasyLink(easylinkPara, new EasyLinkCallBack() {
@Override
public void onSuccess(int code, String message) {
Log.d(TAG, code + message);
}
@Override
public void onFailure(int code, String message) {
Log.d(TAG, code + message);
}
});
停止发送数据包
stopEasyLink(EasyLinkCallBack easylinkcb)
easylinkcb
- 类型:EasyLinkCallBack
- 描述:接口调用成功后的回调函数
elink.stopEasyLink(new EasyLinkCallBack() {
@Override
public void onSuccess(int code, String message) {
Log.d(TAG, code + message);
}
@Override
public void onFailure(int code, String message) {
Log.d(TAG, code + message);
}
});
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
...
listenwifichange();
}
private void listenwifichange() {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
registerReceiver(broadcastReceiver, intentFilter);
}
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if (info.getDetailedState() == NetworkInfo.DetailedState.CONNECTED) {
Log.d(TAG, "---heiheihei---");
wifissid.setText(elink.getSSID());
}
}
}
};
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(broadcastReceiver);
}
设备会在连上路由器后通过广播方式通知到手机,可以在easylink success callback
里面获取到相应的信息,在message中。
elp2p.startEasyLink(elp, new EasyLinkCallBack() {
@Override
public void onSuccess(int code, String message) {
Log.d(TAG, message);
}
@Override
public void onFailure(int code, String message) {
Log.d(TAG, message);
}
});