반응형
현재 주변의 AP를 검색하는 코드입니다.
1 2 3 4 5 6 7 8 | WifiManager wifiManager; wifiManager = (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE); List<ScanResult> sr = wifiManager.getScanResults(); wifi_list=new String[sr.size()]; Log.e("ssid","size="+sr.size()); for(ScanResult r : sr){ Log.e("ssid",r.toString()); } | cs |
주변의 AP를 검색하기 위해서는 WifiManager를 이용합니다.
Line 3 : 리스트에 wifimanager를 통해 검색한 ap리스트가 저장됩니다.
Line 4 : 검색된 ap개수를 알 수 있습니다.
Line 6~8 : AP리스트를 보여줍니다.
AP에 접속하는 코드입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | private void connect_ap(String ssid) { String key="key"; String network="open or wpa or wep"; try{ WifiConfiguration wifiConfig = new WifiConfiguration(); wifiConfig.SSID = "\"" + ssid + "\""; wifiConfig.status = WifiConfiguration.Status.DISABLED; wifiConfig.priority = 40; if (network.contains("open")) { wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); wifiConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN); wifiConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA); wifiConfig.allowedAuthAlgorithms.clear(); wifiConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); wifiConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104); wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); } else if (network.contains("wpa")) { wifiConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN); wifiConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA); wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); wifiConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); wifiConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104); wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); wifiConfig.preSharedKey = "\"".concat(key).concat("\""); } else if (network.contains("wep")) { wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); wifiConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN); wifiConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA); wifiConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); wifiConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED); wifiConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); wifiConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104); wifiConfig.wepKeys[0] = "\"".concat(key).concat("\""); wifiConfig.wepTxKeyIndex = 0; } int id=wifiManager.addNetwork(wifiConfig); if(wifiManager.getWifiState()!=WifiManager.WIFI_STATE_ENABLED) wifiManager.setWifiEnabled(true); List<WifiConfiguration> list = wifiManager.getConfiguredNetworks(); for( WifiConfiguration i : list ) { if(i.SSID != null && i.SSID.equals("\"" + ssid + "\"")) { wifiManager.disconnect(); wifiManager.enableNetwork(i.networkId, true); wifiManager.reconnect(); break; } } }catch(Exception e){ e.printStackTrace(); } } | cs |
Line 2~3 : AP의 방식을 선택하고, AP의 key를 적어줍니다.
key를 이전코드에서 받아와도 됩니다.
Line 5~8 : AP에 대한 공통 설정입니다.
Line 9~19 : AP의 key가 open일때의 설정입니다.
Line 20~20 : AP의 key가 wpa일때의 설정입니다.
Line 31~42 : AP의 key가 wep일때의 설정입니다.
Line 44 : 설정이 완료된 AP의 정보를 추가해 줍니다.
Line 45~46 : 현재 wifi가 켜져있지 않다면 켜줍니다.
Line 47~54 : 선택한 AP를 등록된 AP리스트에서 검색하여 접속합니다.
반응형