투케이2K

137. (AndroidStudio/android/java) 실시간 와이파이 (WIFI) 목록 스캔 실시 - WifiManager , IntentFilter , Broadcast 본문

Android

137. (AndroidStudio/android/java) 실시간 와이파이 (WIFI) 목록 스캔 실시 - WifiManager , IntentFilter , Broadcast

투케이2K 2021. 5. 11. 10:08

/* =========================== */

[ 개발 환경 설정 ]

개발 툴 : AndroidStudio

개발 언어 : java

/* =========================== */

/* =========================== */

[소스 코드]

[필요 퍼미션]

/**
 * TODO ===== [필요한 퍼미션 종류] =====
 * <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
 * <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
 * <uses-permission android:name="android.permission.READ_PHONE_STATE" />
 * <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
 * <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
 * <uses-feature android:name="android.hardware.location.network"/>
 * <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
 * <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
 * */

[실시간 스캔 시작]

//TODO ===== [와이파이 스캔 시작 실시] =====
public void WifiScanStart(){
	Log.d("---","---");
	Log.d("//===========//","================================================");
	Log.d("","\n"+"[A_WifiScan > WifiScanStart() 메소드 : 실시간 와이파이 스캐닝 시작]");
	Log.d("//===========//","================================================");
	Log.d("---","---");
	try {
		//TODO [와이파이 스캔 시작 플래그 설정]
		wifiStartFlag = true;

		//TODO [Wifi Scna 관련 객체 선언]
		wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
		intentFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
		//getApplicationContext().registerReceiver(wifiScanReceiver, intentFilter); //TODO 리시버 시작
		registerReceiver(wifiScanReceiver, intentFilter); //TODO 리시버 시작

		//TODO [와이파이 스캔 상태 확인]
		boolean success = wifiManager.startScan();
		if (!success) {
			Log.d("---","---");
			Log.e("//===========//","================================================");
			Log.d("","\n"+"[A_WifiScan > WifiScanStart() 메소드 : 실시간 와이파이 스캐닝 시작 할 수없는 상태]");
			Log.d("","\n"+"[로직 : 와이파이 스캔 기능이 정지 상태입니다. 와이파이 설정에서 비활성 후 다시 활성 필요]");
			Log.e("//===========//","================================================");
			Log.d("---","---");
			try {
				//TODO 실시간 와이파이 스캐닝 종료
				WifiScanStop();
			}
			catch (Exception e){
				e.printStackTrace();
			}
		}
		else {
			Log.d("---","---");
			Log.w("//===========//","================================================");
			Log.d("","\n"+"[A_WifiScan > WifiScanStart() 메소드 : 실시간 와이파이 스캐닝 진행 중인 상태]");
			Log.w("//===========//","================================================");
			Log.d("---","---");
		}
	}
	catch (Exception e){
		e.printStackTrace();
	}
}
​

[실시간 스캔 종료]

//TODO ===== [와이파이 스캔 종료 실시] =====
public void WifiScanStop(){
	Log.d("---","---");
	Log.d("//===========//","================================================");
	Log.d("","\n"+"[A_WifiScan > WifiScanStop() 메소드 : 실시간 와이파이 스캐닝 종료]");
	Log.d("//===========//","================================================");
	Log.d("---","---");
	try {
		//TODO [실시간 와이파이 목록 스캔 플래그값 초기화]
		wifiStartFlag = false;

		//TODO [등록한 리시버 해제 실시]
		if(wifiScanReceiver != null){
			unregisterReceiver(wifiScanReceiver);
			//wifiScanReceiver = null;
			//wifiManager = null;
		}
		//unregisterReceiver(wifiScanReceiver);
	}
	catch (Exception e){
		e.printStackTrace();
	}
}

/* =========================== */

/* =========================== */

[결과 출력]

/* =========================== */

/* =========================== */

[파일 첨부 : 전체 소스코드]

와이파이 스캔 소스코드.txt
0.01MB

/* =========================== */

반응형
Comments