투케이2K

116. (TWOK/LOGIC) [android] 안드로이드 기기 로컬 핫스팟 WIFI 와이파이 SSID 조회 및 다이렉트 AP 연결 로직 - WifiNetworkSpecifier 본문

투케이2K 로직정리

116. (TWOK/LOGIC) [android] 안드로이드 기기 로컬 핫스팟 WIFI 와이파이 SSID 조회 및 다이렉트 AP 연결 로직 - WifiNetworkSpecifier

투케이2K 2024. 11. 4. 19:54

[로직 정리]

정리 로직 : Android / 안드로이드

상태 : [android] 안드로이드 기기 로컬 핫스팟 WIFI 와이파이 SSID 조회 및 다이렉트 AP 연결 로직 - WifiNetworkSpecifier

 

[설 명]

 

// --------------------------------------------------------------------------------------
[사전) 설정 및 정보 확인 사항]
// --------------------------------------------------------------------------------------

- 안드로이드 프로젝트에서 와이파이 스캔 및 AP 연결을 위해 AndroidManifest.xml 파일에 권한 설정 필요

/**
  * // --------------------------------------------------------------------------------------
  * [필요 퍼미션] :
  * // --------------------------------------------------------------------------------------
  *
  * TODO [안드로이드 13 이상] : [근처 기기 스캔 + 와이파이 접근 + 위치 접근]
  *
  * <uses-permission android:name="android.permission.BLUETOOTH_SCAN"/>
  *
  * <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
  * <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
  *
  * <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  * <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
  * <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
  * <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  * <uses-feature android:name="android.hardware.location.network"/>
  *
  *
  * TODO [안드로이드 13 미만] : [와이파이 접근 + 위치 접근]
  *
  * <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
  * <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
  *
  * <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  * <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
  * <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
  * <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  * <uses-feature android:name="android.hardware.location.network"/>
  * 
  * // --------------------------------------------------------------------------------------
  * */


- AP 연결을 하기 위해서는 안드로이드 OS 10 이상부터 지원하기로 정책 협의

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[로직 설명]
// --------------------------------------------------------------------------------------

1. 애플리케이션 실행 및 사용자에게 위치 권한 및 근처기기 접근 권한이 부여 된 상태 인지 확인


2. 정상적으로 권한이 부여 된 경우 다이렉트 AP 연결 화면으로 이동 수행

  >> 권한이 부여 되어 있지 않은 경우는 사용자에게 [AP 연결에 필요한 위치 및 근처기기 접근 권한을 활성해 주세요.] 팝업창 표시 및 설정창 이동


3. AP 연결 화면 접속 시 자동 와이파이 리스트 스캔 동작 실시


4. 와이파이 스캔 결과에서 특정 SSID 값 추출 실시 (정의 된 SSID 규약으로 스캔 된 결과 확인)

  >> 사전 하드웨어 기기를 로컬 핫스팟 활성 상태로 만들고 , App 에서는 정상적으로 활성화 되었는지 체크 수행


5. 특정 SSID 가 App 스캔 목록에 잡힌 경우 App 에서 휴대폰 와이파이 기능이 활성화 된 상태 인지 확인 수행

  >> WifiNetworkSpecifier , NetworkRequest , ConnectivityManager 를 사용하기 위해서는 App 에서 와이파이 기능이 활성화 되어 있어야함

  >> 와이파이 기능이 활성화 되지 않은 경우 >> [AP 연결을 하기 위해서는 와이파이 기능이 활성화 되어있어야합니다.] 팝업창 표시


6. 와이파이 기능이 활성화 되어 있는 경우 WifiNetworkSpecifier , NetworkRequest , ConnectivityManager 를 사용해 특정 SSID 에 와이파이 연결 수행 실시


7. 정상적으로 와이파이 연결이 된 경우 >> 로컬 핫스팟 IP 정보 확인 및 TCP/IP 소켓 통신 연결 수행

  >> 와이파이 연결이 되지 않은 경우는 [와이파이 연결에 실패했습니다. 기기 페어링 모드를 확인해 주세요] 알림창 표시

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

[삼성 갤럭시 S24 울트라 개발자 모드 WIFI 와이파이 검색 제한 활성 및 비활성 방법]

https://blog.naver.com/kkh0977/223591390878?trackingCode=blog_bloghome_searchlist


[안드로이드 (android) OS 상 와이파이 (WIFI) 검색 제한 이유로 와이파이 스캔 리스트 확인 문제 이슈]

https://blog.naver.com/kkh0977/223591408711?trackingCode=blog_bloghome_searchlist


[android - 휴대폰 Wifi 와이파이 스캔 시 신규 AP (와이파이) 정보가 표시 되지 않는 이슈 문의]

https://blog.naver.com/kkh0977/223578159044?trackingCode=blog_bloghome_searchlist


[observableWifiScanList : Wifi 와이파이 스캔 리스트 목록 결과 반환]

https://blog.naver.com/kkh0977/223077683541?trackingCode=blog_bloghome_searchlist


[와이파이 활성 및 연결 상태 확인 - WifiManager, ConnectivityManager, NetworkInfo]

https://blog.naver.com/kkh0977/222317648187?trackingCode=blog_bloghome_searchlist


[안드로이드 WifiNetworkSpecifier , NetworkRequest , ConnectivityManager 사용 WPA 와이파이 연결]

https://blog.naver.com/kkh0977/223554797505?trackingCode=blog_bloghome_searchlist


[안드로이드 하위 버전 빌드 수행 및 WifiConfiguration 사용해 WPA , WPA2 와이파이 연결 수행]

https://blog.naver.com/kkh0977/223554794953?trackingCode=blog_bloghome_searchlist

// --------------------------------------------------------------------------------------

 

반응형
Comments