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
// 打开WIFI public 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之间的通讯可以查看 这里