투케이2K

212. (kotlin/코틀린) [유틸 파일] isWifiConnected : 현재 와이파이 연결 상태 확인 본문

Kotlin

212. (kotlin/코틀린) [유틸 파일] isWifiConnected : 현재 와이파이 연결 상태 확인

투케이2K 2023. 2. 9. 22:47
반응형

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

        // ----------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : [isWifiConnected] : 현재 와이파이 연결 상태 확인
        // ----------------------------------------------------------------------------------
        fun isWifiConnected(mContext: Context) : Boolean {

            /**
             * // -----------------------------------------
             * [isWifiConnected 메소드 설명]
             * // -----------------------------------------
             * 1. 현재 와이파이 연결 상태 확인
             * // -----------------------------------------
             * 2. 호출 방법 : C_StateCheck.isWifiConnected(this@A_Intro)
             * // -----------------------------------------
             * 3. 리턴 데이터 : 와이파이가 연결된 경우 true / 아니면 false
             * // -----------------------------------------
             * 4. 필요 퍼미션 설정 :
             *
             * <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
             * // -----------------------------------------
             * */


            // [초기 리턴 데이터 선언 실시]
            var returnData = true
            var networkName = ""


            // [로직 처리 실시]
            try {

                // [ConnectivityManager 생성]
                val cm = mContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager


                // [버전 분기 처리]
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ // [마시멜로우 이상]

                    val networkCapabilities = cm.getNetworkCapabilities(cm.activeNetwork)
                    if (networkCapabilities != null){
                        if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)){
                            networkName = "[capabilities] WIFI"
                        }
                        else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)){
                            returnData = false
                            networkName = "[capabilities] MOBILE"
                        }
                        else {
                            returnData = false
                            networkName = "[capabilities] network is null"
                        }
                    }
                    else {
                        returnData = false
                        networkName = "[ERROR] networkCapabilities is null"
                    }

                }
                else { // [마시멜로우 미만]

                    val activeNetwork = cm.activeNetworkInfo
                    if (activeNetwork != null) {
                        if (activeNetwork.type == ConnectivityManager.TYPE_WIFI) {
                            networkName = "[activeNetwork] WIFI"
                        }
                        else if (activeNetwork.type == ConnectivityManager.TYPE_MOBILE){
                            returnData = false
                            networkName = "[activeNetwork] MOBILE"
                        }
                        else {
                            returnData = false
                            networkName = "[activeNetwork] network is null"
                        }

                    }
                    else {
                        returnData = false
                        networkName = "[ERROR] activeNetwork is null"
                    }
                }

            }
            catch (e: Exception) {
                e.printStackTrace()
                returnData = false
                networkName = e.message.toString()
            }


            // [로그 출력 실시]
            S_Log.ltd("================================================")
            S_Log.cnt("[" + ACTIVITY_NAME + " >> " + C_Util.getNowMethod(1) + " :: 현재 와이파이 연결 상태 확인]")
            S_Log.cnt("-----------------------------------------")
            S_Log.cnt("[NETWORK :: $networkName]")
            S_Log.cnt("-----------------------------------------")
            S_Log.cnt("[RETURN :: $returnData]")
            S_Log.lbd("================================================")
            // */


            // [리턴 반환 실시]
            return returnData

        }
 

[결과 출력]

 

D///===========//: ================================================
I/: [C_StateCheck >> isWifiConnected :: 현재 와이파이 연결 상태 확인]
I/: -----------------------------------------
I/: [NETWORK :: [capabilities] MOBILE]
I/: -----------------------------------------
I/: [RETURN :: false]
D///===========//: ================================================

 

반응형
Comments