Wifi 주파수대역에 따른 채널값 구하는 방법
이 포스팅에서 다루게 될 내용 :
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를 스캔하여 현재 연결된 Wifi의 BSSID와 일치하는 와이파이의 주파수를 추출하고 있다.
이렇게 추출된 주파수와 채널값에는 일정한 규칙이 있다.
이 규칙을 공식으로 만들어 채널값을 계산할 수 있다.
방법은 아래와 같다.
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;
}
}
해당 계산식을 적용하면 표에 나와있는 채널값과 동일한 값이 얻어지는것을 확인 할 수 있다.
범위 확인중인 주파수 영역을 벗어나는 새로운 주파수가 추가된다면 소스코드의 수정이 필요할 수 있다.