투케이2K

119. (TWOK/LOGIC) [android] 안드로이드 특정 와이파이 SSID , PW 지정 AP 연결 수행 시 사전 와이파이 활성 및 연결 상태 체크 로직 본문

투케이2K 로직정리

119. (TWOK/LOGIC) [android] 안드로이드 특정 와이파이 SSID , PW 지정 AP 연결 수행 시 사전 와이파이 활성 및 연결 상태 체크 로직

투케이2K 2024. 11. 6. 20:09

[로직 정리]

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

상태 : [android] 안드로이드 특정 와이파이 SSID , PW 지정 AP 연결 수행 시 사전 와이파이 활성 및 연결 상태 체크 로직

 

[설 명]

 

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

- 안드로이드 AP 연결 및 와이파이 활성 , 정보 상태 확인을 위한 AndroidManifest.xml 권한 설정 필요

    /**
     * // -----------------------------------------------------
     * TODO [퍼미션 권한 설정 종류]
     * // -----------------------------------------------------
     *
     * 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"/>
     * 
     * // -----------------------------------------------------
     * */

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






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

1. 애플리케이션 수행 및 기능 사용에 필요한 권한 부여 상태 확인


2. 정상적으로 권한이 부여 된 경우 와이파이 AP 연결을 수행하는 화면으로 진입

  >> 권한이 부여되어 있지 않은 경우 [기능 사용에 필요한 권한을 부여해주세요.] 알림 팝업창 표시


3. 와이파이 AP 연결 화면에서 와이파이 활성 상태 및 와이파이 연결 상태 확인 수행

  >> 특정 와이파이에 연결하려는 SSID 와 PW 정보는 앱 내부 프리퍼런스 저장소에 가지고 있는 상태


4. [IF] 휴대폰 와이파이 기능이 비활성 상태 인 경우 >> [와이파이 기능이 비활성 상태 입니다. AP 연결을 수행하기 위해서는 와이파이 활성 상태로 변경해주세요.] 알림 팝업창 표시

  >> 해당 팝업창에서 [와이파이 설정 이동] 버튼을 추가해 인텐트 화면 전환 유도


5. [ESLE] 휴대폰이 와이파이 연결 상태 인 경우 >> 연결 된 와이파이 SSID 정보 추출 후 AP 연결을 수행하기 위한 프리퍼런스에 저장 된 SSID 와 동일 여부 비교

  >> 이미 사용자 휴대폰이 특정 와이파이에 연결 된 경우는 다시 연결을 끊고 , 재연결을 수행할 필요가 없으므로 사전) SSID 동일 여부 값 체크


6. [ELSE] - [IF] : SSID 값이 동일한 경우 TCP/IP 소켓 통신 즉시 수행


7. [ELSE] - [ESLE] : SSID 값이 다른 경우 앱 내부 프리퍼런스 저장소에서 SSID 값과 PW 값을 확인해 AP 연결 수행 실시

  >> Build.VERSION_CODES.Q 이상 인 경우 : WifiNetworkSpecifier , NetworkRequest , ConnectivityManager 를 사용해 특정 와이파이 연결 수행

  >> Build.VERSION_CODES.Q 미만 인 경우 : WifiConfiguration 을 사용해 와이파이 연결 수행

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






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

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

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


[isWifiConnected : 현재 와이파이 연결 상태 확인]

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


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

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


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

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


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

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

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

 

반응형
Comments