투케이2K

213. (kotlin/코틀린) [유틸 파일] wifi_Info_Print : 현재 연결된 와이파이 정보 출력 실시 본문

Kotlin

213. (kotlin/코틀린) [유틸 파일] wifi_Info_Print : 현재 연결된 와이파이 정보 출력 실시

투케이2K 2023. 2. 10. 18:34

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

        // ----------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : [RETURN] wifi_Info_Print : 현재 연결된 와이파이 정보 출력 실시
        // ----------------------------------------------------------------------------------
        fun wifi_Info_Print(mContext: Context) {

            /**
             * // -----------------------------------------
             * [wifi_Info_Print 메소드 설명]
             * // -----------------------------------------
             * 1. wifi_Info_Print : 현재 연결된 와이파이 정보 출력 실시
             * // -----------------------------------------
             * 2. 호출 방식 :
             *
             * C_App.wifi_Info_Print(A_Intro@this)
             *
             * // -----------------------------------------
             * 3. 필요 퍼미션 :
             *
             * <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
             * <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
             * // -----------------------------------------
             */


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

                // [현재 와이파이 연결된 상태 체크]
                if (C_StateCheck.isWifiConnected(mContext) === true) {


                    // [Android 12 이상 분기 처리]
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {

                        //*
                        // [ConnectivityManager 생성]
                        val cm = mContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
                        val networkRequest = NetworkRequest.Builder()
                            .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
                            .build()

                        // [와이파이 정보 확인]
                        val networkCallback: NetworkCallback = object : NetworkCallback(FLAG_INCLUDE_LOCATION_INFO) {
                            override fun onAvailable(network: Network) {
                                super.onAvailable(network)
                            }

                            override fun onCapabilitiesChanged(network: Network, net: NetworkCapabilities) {

                                // [와이파이 정보 확인]
                                val wifiInfo = net.transportInfo as WifiInfo?

                                val getSsid = wifiInfo!!.ssid.replace("[\"]".toRegex(), "")

                                val wIp = wifiInfo!!.ipAddress
                                val getIpAddress = String.format(
                                    "%d.%d.%d.%d",
                                    wIp and 0xff,
                                    wIp shr 8 and 0xff,
                                    wIp shr 16 and 0xff,
                                    wIp shr 24 and 0xff
                                )

                                val getBSSID = wifiInfo!!.bssid.trim { it <= ' ' }

                                // [로그 출력]
                                S_Log.ltd("================================================")
                                S_Log.cnt("[" + ACTIVITY_NAME + " >> wifi_Info_Print :: [HIGHT] 현재 연결된 와이파이 정보 출력 실시]")
                                S_Log.cnt("-----------------------------------------")
                                S_Log.cnt("[getSsid :: $getSsid]")
                                S_Log.cnt("-----------------------------------------")
                                S_Log.cnt("[getIpAddress :: $getIpAddress]")
                                S_Log.cnt("-----------------------------------------")
                                S_Log.cnt("[getBSSID :: $getBSSID]")
                                S_Log.lbd("================================================")
                            }
                        }
                        cm.requestNetwork(networkRequest, networkCallback)
                        // */
                    } else {

                        // [와이파이 정보 확인]
                        val wifimanager = mContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
                        val wifiInfo = wifimanager.connectionInfo
                        val dhcpInfo = wifimanager.dhcpInfo
                        val wIp = dhcpInfo.ipAddress

                        var getSsid = wifiInfo.ssid
                        getSsid = getSsid.replace("[\"]".toRegex(), "")

                        val getIpAddress = String.format(
                            "%d.%d.%d.%d",
                            wIp and 0xff,
                            wIp shr 8 and 0xff,
                            wIp shr 16 and 0xff,
                            wIp shr 24 and 0xff
                        )

                        var getBSSID = wifiInfo.bssid
                        getBSSID = getBSSID.trim { it <= ' ' }

                        // [로그 출력]
                        S_Log.ltd("================================================")
                        S_Log.cnt("[" + ACTIVITY_NAME + " >> " + C_Util.getNowMethod(1) + " :: [LOW] 현재 연결된 와이파이 정보 출력 실시]")
                        S_Log.cnt("-----------------------------------------")
                        S_Log.cnt("[getSsid :: $getSsid]")
                        S_Log.cnt("-----------------------------------------")
                        S_Log.cnt("[getIpAddress :: $getIpAddress]")
                        S_Log.cnt("-----------------------------------------")
                        S_Log.cnt("[getBSSID :: $getBSSID]")
                        S_Log.lbd("================================================")
                    }
                } else {
                    S_Log.lte("================================================")
                    S_Log.cnt("[" + ACTIVITY_NAME + " >> " + C_Util.getNowMethod(1) + " :: 현재 연결된 와이파이 정보 출력 실시]")
                    S_Log.cnt("-----------------------------------------")
                    S_Log.cnt("[error :: wifi is not connected]")
                    S_Log.lbe("================================================")
                }
            } catch (e: Exception) {
                e.printStackTrace()
                S_Log.lte("================================================")
                S_Log.cnt("[" + ACTIVITY_NAME + " >> " + C_Util.getNowMethod(1) + " :: 현재 연결된 와이파이 정보 출력 실시]")
                S_Log.cnt("-----------------------------------------")
                S_Log.cnt("[exception :: " + e.message.toString() + "]")
                S_Log.lbe("================================================")
            }
        }
 

[결과 출력]

 

D///===========//: ================================================
I/: [C_App >> wifi_Info_Print :: [HIGHT] 현재 연결된 와이파이 정보 출력 실시]
I/: -----------------------------------------
I/: [getSsid :: twok]
I/: -----------------------------------------
I/: [getIpAddress :: 192.168.0.10]
I/: -----------------------------------------
I/: [getBSSID :: 88:36:6c:1f:27:4e]
D///===========//: ================================================

 

반응형
Comments