Android/WI-FI
Wifi 비활성화일 때 스캔하는 방법
덩치
2015. 5. 8. 11:13
일반적으로 많이 알려진 Wifi Scan 방법은 Wifi가 활성화 돼 있을때만 가능하다.
때문에 Wifi Scan이 필요할 때, 사용자의 Wifi를 강제로 Enable 시킨 뒤 스캔을 하고, 스캔이 끝다면 다시 비활성화 시키는
방식으로 많이들 구현한다.
그런데 Android 버전 4.3(SDK 18)부터 추가된 '항상 검색 허용' 설정을 이용하면 Wifi가 비활성화 상태라도
Wifi를 스캔할 수 있다.
해당 옵션이 활성화 돼 있을때만 위와같은 동작이 가능하다.
소스코드상으로는 해당 설정을 컨트롤 할 수 없으며, 사용자가 직접 설정할 수 있다.
따라서 SDK 버전이 18 이상인지, '항상 검색 허용' 설정이 활성화상태인지 체크를 한 다음
조건을 만족하지 않는다면 기존 방식을 이용하고, 만족한다면 Wifi를 건들지 않고 바로 스캔을 진행할 수 있다.
위 조건을 구현하는 방법은 아래와 같다.
if (Build.VERSION.SDK_INT >= 18) { // 4.3 버전 이상인지 체크한다.
if (mWM.isScanAlwaysAvailable()) { // 항상검색 허용 설정이 활성화상태인지 체크한다.
mWM.startScan(); // 바로 스캔 실행
return;
}
}
mWM.setWifiEnabled(true);
// 위 조건을 만족하지 않는다면 Wifi 상태에 변화를 줘서 BroadcastReceiver에 액션이 들어오게 하여 스캔을 진행한다.
// 자세한 방법은 http://biig.tistory.com/14 참조
끝.