android wifi 的链接

来源:互联网 发布:单片机地址寄存器 编辑:程序博客网 时间:2024/06/05 18:53

  wifi链接的步骤如下(至于wifi通讯部分是没有的):



1.得到wifimanager对象

// 构造器public WifiUtil(Context context) {    // 取得WifiManager对象    mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);    // 取得WifiInfo对象    mWifiInfo = mWifiManager.getConnectionInfo();}

2.检查wifi状态

// 检查当前WIFI状态public int checkState() {    return mWifiManager.getWifiState();}

3.打开wifi

// 打开WIFIpublic void openWifi() {    if (!mWifiManager.isWifiEnabled()) {        mWifiManager.setWifiEnabled(true);    }}

4.扫描wifi并得到最新扫描的结果

//扫描public void startScan() {    mWifiManager.startScan();    // 得到扫描结果    mWifiList = mWifiManager.getScanResults();    // 得到配置好的网络连接    mWifiConfiguration = mWifiManager.getConfiguredNetworks();}

5.连接wifi

mConnect.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {        String pass = mPass.getText().toString();        mWifiInfo = new WifiInfo(name, pass);        new Thread(new Runnable() {            @Override            public void run() {                mWifiUtil.connectWifi(mWifiInfo);            }        }).start();        if (!mRegister) {//第一次链接注册链接成功的广播            mWifiBroadcastReceiver = new WifiBroadcastReceiver();            IntentFilter filter = new IntentFilter();            filter.addAction(WifiManager.RSSI_CHANGED_ACTION);  //信号强度变化            filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);  //网络状态变化(是否连接上WIFI)            filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);  //wifi是否打开            registerReceiver(mWifiBroadcastReceiver, filter);            mRegister = true;        }    }});
public void connectWifi(com.example.a111.github_settings.bean.WifiInfo remove) {    openWifi();    String pass = remove.getPass();    String ssid = remove.getName();    int type;    if (pass.equals("null") || pass.equals("")) {        pass = "";        type = 1;    } else {        type = 3;    }    addNetwork(CreateWifiInfo(ssid, pass, type));}
// 添加一个网络并连接public void addNetwork(WifiConfiguration wcg) {    int wcgID = mWifiManager.addNetwork(wcg);    mWifiManager.enableNetwork(wcgID, true);}

public WifiConfiguration CreateWifiInfo(String SSID, String Password, int Type) {    WifiConfiguration config = new WifiConfiguration();    config.allowedAuthAlgorithms.clear();    config.allowedGroupCiphers.clear();    config.allowedKeyManagement.clear();    config.allowedPairwiseCiphers.clear();    config.allowedProtocols.clear();    config.SSID = "\"" + SSID + "\"";    WifiConfiguration tempConfig = this.IsExsits(SSID);    if (tempConfig != null) {        mWifiManager.removeNetwork(tempConfig.networkId);    }    if (Type == 1) //WIFICIPHER_NOPASS    {        config.wepKeys[0] = "";        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);        config.wepTxKeyIndex = 0;    }    if (Type == 2) //WIFICIPHER_WEP    {        config.hiddenSSID = true;        config.wepKeys[0] = "\"" + Password + "\"";        config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);        config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);        config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);        config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);        config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);        config.wepTxKeyIndex = 0;    }    if (Type == 3) //WIFICIPHER_WPA    {        config.preSharedKey = "\"" + Password + "\"";        config.hiddenSSID = true;        config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);        config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);        config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);        //config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);        config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);        config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);        config.status = WifiConfiguration.Status.ENABLED;    }    return config;}

wifi之间的通讯可以查看  这里

原创粉丝点击