相关文章 博客 http://blog.csdn.net/u010924834/article/details/49491349

本文使用的是庆科wifi模块

http://developer.mico.io/downloads 庆科的开发者地址 有配网的sdk demo下载

下载下来的demo 有可能gradle不过 可以找他们工程师 android studio项目 ,看别人项目 细心 耐心 下面是主要配网代码

package com.example.administrator.easylinkdemo;import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;import java.util.List;import io.fogcloud.easylink.api.EasyLink;
import io.fogcloud.easylink.helper.EasyLinkCallBack;
import io.fogcloud.easylink.helper.EasyLinkParams;
import io.fog.fog2sdk.MiCODevice;
import io.fogcloud.fog_mdns.helper.SearchDeviceCallBack;public class MainActivity extends AppCompatActivity implements View.OnClickListener {private static final String TAG = "MainActivity";private EasyLink elink;private MiCODevice mMiCODevice;private EditText ex_password;private Spinner mSpinner;private List<String> mList;private ArrayAdapter<String> mAdapter;private WifiUtils mWifiUtils;private String ssId;private LayoutInflater mLayoutInflater;private LinearLayout lin_showmdns;@Override
    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);lin_showmdns = (LinearLayout) findViewById(R.id.showmdns);mLayoutInflater = LayoutInflater.from(this);mWifiUtils = new WifiUtils(this);elink = new EasyLink(this);mMiCODevice = new MiCODevice(this);Button btn_start = (Button) findViewById(R.id.start);Button btn_end = (Button) findViewById(R.id.end);btn_start.setOnClickListener(MainActivity.this);btn_end.setOnClickListener(MainActivity.this);ex_password = (EditText) findViewById(R.id.password);mSpinner = (Spinner) findViewById(R.id.spinner);initWidget();}private void initWidget(){mList = mWifiUtils.getScanWifiResult();mList = mWifiUtils.getNewList(mList);//去重复
        //适配器
        mAdapter= new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, mList);//设置样式
        mAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);//加载适配器
        mSpinner.setAdapter(mAdapter);//刷新适配器
        mAdapter.notifyDataSetChanged();mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {@Override
            public void onItemSelected(AdapterView<?> parent, View view,int pos, long id) {ssId = mList.get(pos);}@Override
            public void onNothingSelected(AdapterView<?> parent) {// Another interface callback
            }});}@Override
    public void onClick(View v) {switch (v.getId()){case R.id.start:configureNetwork();searchDevice();break;case R.id.end:stopConfig();stopSearchDevice();break;}}//配网
    public void configureNetwork(){EasyLinkParams easylinkPara = new EasyLinkParams();easylinkPara.ssid = ssId;easylinkPara.password = ex_password.getText().toString().trim();easylinkPara.runSecond = 20000;easylinkPara.sleeptime = 50;Log.e(TAG,"=========ssId="+ssId +"password=" + easylinkPara.password);elink.startEasyLink(easylinkPara, new EasyLinkCallBack() {@Override
            public void onSuccess(int code, String message) {Message msg = new Message();msg.what = 0x00001;msg.arg1 = code;msg.obj = message;myHandle.sendMessage(msg);}@Override
            public void onFailure(int code, String message) {Message msg = new Message();msg.what = 0x00002;msg.arg1 = code;msg.obj = message;myHandle.sendMessage(msg);}});}//查找设备 如果查到设备 代表配网成功
    private void searchDevice(){String serviceName = "_easylink._tcp.local.";mMiCODevice.startSearchDevices(serviceName, new SearchDeviceCallBack() {@Override
            public void onSuccess(int code, String message) {super.onSuccess(code, message);Log.e(TAG,"=========startSearchDevices onSuccess");}@Override
            public void onFailure(int code, String message) {super.onFailure(code, message);Log.e(TAG,"=========startSearchDevices onFailure");}@Override
            public void onDevicesFind(int code, JSONArray deviceStatus) {super.onDevicesFind(code, deviceStatus);Log.e(TAG,"=========startSearchDevices onDevicesFind"+deviceStatus.toString());Message msg = new Message();msg.what = 0x00005;msg.obj = deviceStatus.toString();myHandle.sendMessage(msg);}});}//停止查找设备
    public void stopSearchDevice(){mMiCODevice.stopSearchDevices(new SearchDeviceCallBack() {@Override
            public void onSuccess(int code, String message) {super.onSuccess(code, message);Log.e(TAG,"=========stopSearchDevices onSuccess");}@Override
            public void onFailure(int code, String message) {super.onFailure(code, message);Log.e(TAG,"=========stopSearchDevices onFailure");}@Override
            public void onDevicesFind(int code, JSONArray deviceStatus) {super.onDevicesFind(code, deviceStatus);Log.e(TAG,"=========stopSearchDevices onDevicesFind" +deviceStatus.toString());}});}//停止配网
    public void stopConfig(){elink.stopEasyLink(new EasyLinkCallBack() {@Override
            public void onSuccess(int code, String message) {Message msg = new Message();msg.what = 0x00003;msg.arg1 = code;msg.obj = message;myHandle.sendMessage(msg);}@Override
            public void onFailure(int code, String message) {Message msg = new Message();msg.what = 0x00004;msg.arg1 = code;msg.obj = message;myHandle.sendMessage(msg);}});}private MyHandle myHandle = new MyHandle();private class MyHandle extends Handler{@Override
        public void handleMessage(Message msg) {super.handleMessage(msg);String codeString = codeDescribe(msg.arg1);switch (msg.what){case 0x00001://Toast.makeText(MainActivity.this,codeString,Toast.LENGTH_LONG).show();
                    break;case 0x00002:Toast.makeText(MainActivity.this,codeString,Toast.LENGTH_LONG).show();break;case 0x00003:Toast.makeText(MainActivity.this,codeString,Toast.LENGTH_LONG).show();break;case 0x00004:Toast.makeText(MainActivity.this,codeString,Toast.LENGTH_LONG).show();break;case 0x00005:updateDeviceList(msg.obj.toString());break;}}}private void updateDeviceList(String message) {lin_showmdns.removeAllViews();if (null != mLayoutInflater) {try {JSONArray jsonArray = new JSONArray(message);if(jsonArray.length()>0)Toast.makeText(MainActivity.this,"查找到设备配网成功",Toast.LENGTH_LONG).show();JSONObject temp;for (int i = 0; i < jsonArray.length(); i++) {View viewOne1 = mLayoutInflater.inflate(R.layout.deviceitem, null);temp = (JSONObject) jsonArray.get(i);//更新页面内容
                    TextView mdnsname = (TextView) viewOne1.findViewById(R.id.mdnsname);TextView mdnsmac = (TextView) viewOne1.findViewById(R.id.mdnsmac);TextView mdnsip = (TextView) viewOne1.findViewById(R.id.mdnsip);ImageView mdnsbtn = (ImageView) viewOne1.findViewById(R.id.mdnsbtn);LinearLayout mdnsinfo = (LinearLayout) viewOne1.findViewById(R.id.mdnsinfo);final String devinfo = temp.toString();final String devip = temp.getString("IP");final String devmac = temp.getString("MAC");mdnsname.setText(temp.getString("Name"));mdnsmac.setText("MAC:" + temp.getString("MAC"));mdnsip.setText("IP:" + temp.getString("IP"));mdnsinfo.setOnClickListener(new View.OnClickListener() {@Override
                        public void onClick(View v) {Toast.makeText(MainActivity.this,"详细信息",Toast.LENGTH_LONG).show();}});lin_showmdns.addView(viewOne1, LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT);}} catch (JSONException e) {e.printStackTrace();}}}public String codeDescribe(int arg1){Log.e(TAG,"=========="+arg1);switch (arg1){case 0:return "各种成功";case 4000:return "stopeasylink成功";case 4003:return "EasyLink正在工作中";case 4004:return "EasyLink已经关闭";case 4006:return "异常";}return ""+arg1;}

给智能家居wifi模块配网 总结

1,wifi模块有个EasyLink按钮 当按钮按下只有绿灯亮时 此时进入配网模式 android端可以通过startEasyList方法发送SSID和PASSWORD实现配网

2,绿灯配网模式设定为60s 当规定时间一过 就不能在进行配网 需重新按下EasyLink按钮

3,配网模式配置成功后通过startSearchDevices方法查询设备 显示在android端 如果查到设备 证明配网成功

4,长按EasyLink按钮 可以清楚已经配置好的网络

5,发送的SSID和PASSWORD 一定是手机当前连接的网络 才能配网成功?(待测试)

6,当wifi模块已经配置好A网络的情况,要更换配置B网络 需先长按EasyLink清空配网

7,配置好网络 路由器会给wifi模块分配动态IP地址 PC机可以通过ping ipAddress的方式查看

8,不同路由器给wifi模块分配的IP地址不一样

android EasyLink给wifi模块配网相关推荐

  1. android easylink 搜索设备_Android开发 EasyLink给wifi模块配网

    本文使用的是庆科wifi模块 ------------------------------------------------------------------------------------- ...

  2. wifi模块配网解析

    本文转载:https://blog.csdn.net/zhejfl/article/details/78722930 智能家居/家电现阶段还处于普及阶段,由于家庭wifi网络的普及,目前普遍采用wif ...

  3. wifi模块配网方式锦集

    来源:http://www.jxtobo.com/4572.html 和 http://blog.csdn.net/flyingcys/article/details/49283273?reload ...

  4. Android 物联网基于WIFI tcp配网流程

    1配网流程 1.2流程说明 1.2.1 由用户手动输入WiFi的SSID 和pwd 1.2.2 此时需要配网的设备进入配网模式打开热点,热点令名规则为Tlink-xxx-xxx格式,第一个xxx为设备 ...

  5. android 使用EasyLink给硬件WiFi模块配网

    最近做了一个小项目,项目中有个需求是,向硬件发送wifi参数,来实现硬件的联网.嵌入式工程师那边要求使用EasyLink来发送Wifi参数. EasyLink ,可以将手机端设置的 Wi-Fi 网络参 ...

  6. Wifi设备配网问题

    今天写个物联网的技术文章--关于Wifi设备为什么配网失败. 这相信是很多做过Wifi产品的制造业企业遇到的客诉最多的问题--消费者因Wifi产品配网失败,投诉.申请退货. 据我了解,有客户使用201 ...

  7. WIFI配网方案:1、蓝牙配网 2、WIFI自身配网 3、SmartConfig一键配网

    蓝牙配网: 顾名思义,通过蓝牙给WIFI配网,过程相对较为简单,首先设备上具有WIFI和蓝牙两种功能.然后通过手机的小程序或者APP连接产品蓝牙,连接之后发送WIFI连接所需要的SSID和PASSID ...

  8. 【IoT】物联网之 WIFI 一键配网 smartConfig 浅析(ESP32)

    一.背景 物联网时代技术开始规模化服务于民众,方便快捷显得尤为重要,WIFI 直连便是一个典型案例. 目前主流的 WIFI 配置模式有以下 2 种: 1.智能硬件处于 AP 模式(类似路由器,组成局域 ...

  9. wifi一键配网smartconfig原理及应用

    版权声明:本文为博主原创文章,未经博主允许不得转载. http://blog.csdn.net/flyingcys/article/details/49283273 智能家居/家电现阶段还处于普及阶段 ...

最新文章

  1. 在 VC6 中使用 GdiPlus-使用
  2. android .a .so区别,.so,.la和.a库文件有什么区别?
  3. 手把手带你入门 Spring Security!
  4. VC++ 连接SQL Server数据库(远程+本地)
  5. NDK(三方库引入、Mk文件)
  6. 单身的原因终于找到了!原来是这几个......
  7. radmin提示授权码过期_IdentityServer4 客户端授权模式(Client Credentials)
  8. [转载] python循环中break、continue 、exit() 、pass的区别
  9. JavaWeb项目实战(3)软件快速下载
  10. laravel 环境自编译过程
  11. leetcode 506 相对名次
  12. 51php服务器稳不稳定,百度经验:两步搞定PHP-FPM优化,让服务器更平稳
  13. 9大门类,99个系列课程,几乎所有AI免费课程都在这里啦
  14. Unsupervised Deep Homography - Pytorch实现
  15. python问卷星微信登录_使用Python自动填写问卷星(pyppeteer反爬虫版)
  16. SharePoint 2013 安装中间出错了怎么办? 每一次安装都是一段曲折的路【1603(0x643) 】...
  17. nginx反向代理获取用户真实Ip地址
  18. java文本反垃圾_java毕业设计_springboot框架的反垃圾邮件管理分析系统
  19. Github之First day on Github,带你学习并完成任务点,纯手敲超详细教程!(下)
  20. 高德地图加载不出来,有高德的logo,但地图一片空白

热门文章

  1. 【因果推断与机器学习】带入坑——之辛普森悖论
  2. EmWin自定义消息发送
  3. atof()函数总是返回0.0
  4. 1212 带你们看看淘系的看家宝贝!
  5. 【C语言】判断素数的方法
  6. 英国24岁大猩猩成精了 像人一样直立行走
  7. 计算机配置故障的处理方法,电脑配置低怎么办(教你5个简单的处理方法)
  8. ubuntu 保存只读文件
  9. 10 nginx 中的 slab
  10. 愿天下无萝卜章---Android studio下载构建工具时出现403错误