펌 OK (출처 표시), 상업적 이용 NO, 컨텐츠 변경 NO


이 포스팅에서 다루게 될 내용 :

1. Wi-Fi 주파수 추출법

2. 주파수에 다른 채널값 추출법




위 표는 IEEE 802.11b/g/n 2.4GHz 방식과 IEEE 802.11a/n 5GHz 방식의 표준을 나타낸 표이다.


쉽게 말해 일반적으로 말하는 2.4G 대역 와이파이와 5G 대역 와이파이의 주파수와 채널에 대한 정보이다.


먼저 연결된 Wi-Fi의 주파수를 검출하는 방법에 대해 알아보자.


주파수는 WifiManager를 이용하여 와이파이 스캔을 실시하고, 이 결과를 이용하여 추출하게 되는데 방법은 아래와 같다.


WifiManager mWM = (WifiManager) context.getSystemService(WIFI_SERVICE);

WifiInfo wifiInfo = mWM.getConnectionInfo();


try {

for (ScanResult scanResult : mWM.getScanResults()) {

if (wifiInfo != null && wifiInfo.getBSSID() != null

&& wifiInfo.getBSSID().equals(scanResult.BSSID)) {


mCurrentFrequency = scanResult.frequency;

break;

}

}

} catch (Exception e) {


}


주변 Wifi를 스캔하여 현재 연결된 WifiBSSID와 일치하는 와이파이의 주파수를 추출하고 있다.


이렇게 추출된 주파수와 채널값에는 일정한 규칙이 있다.


이 규칙을 공식으로 만들어 채널값을 계산할 수 있다.


방법은 아래와 같다.


public static int convertFrequencyToChannel(int freq) {

if(freq >= 2412 && freq <= 2484) {

if (freq == 2484)

return (freq-2412) /5;

return (freq-2412) /5 + 1;

}else if( freq >= 5170 && freq <= 5825) {

return (freq-5170) /5 + 34;

}

else {

return -1;

}

}


해당 계산식을 적용하면 표에 나와있는 채널값과 동일한 값이 얻어지는것을 확인 할 수 있다.


범위 확인중인 주파수 영역을 벗어나는 새로운 주파수가 추가된다면 소스코드의 수정이 필요할 수 있다.



댓글을 달아 주세요

  1.  댓글주소  수정/삭제  댓글쓰기 컴공초보자 2015.05.05 14:12

    저 채널값이 현재 접속한 와이파이의 채널값인가요? 그렇다면 그 채널을 변경할 수 있나요? 현재 접속한 와이파이의 채널을 변경하는 건 어떻게 코드를 짜야되는지 궁금합니다.

    •  댓글주소  수정/삭제 덩치 2015.05.06 10:32 신고

      와이파이의 채널은 어플에서 변경할 수 없을것같습니다.
      장치 자체에 할당된 채널이기때문에 .. 와이파이장치를 직접 수정하지 않는 이상 채널 변경은 어려워보입니다.

    •  댓글주소  수정/삭제 덩치 2015.05.06 10:33 신고

      그리고 현재 접속하고있는 와이파이의 채널 뿐만이 아니라, 스캔된 모든 와이파이의 채널을 알 수있습니다.
      접속된 와이파이의 채널만 알고싶다면, ScanResult에서 WifiInfo.getBSSID 와 동일한 값을 가진 와이파이의 채널을 뽑으시면 됩니다.