android EasyLink给wifi模块配网

相关文章 博客 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地址不一样

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值