[kotlin] 안드로이드에서의 코틀린 네트워크 연결 상태 모니터링하기

안드로이드 앱을 개발할 때, 네트워크 연결 상태를 모니터링하는 것은 매우 중요합니다. 사용자가 인터넷에 연결되어 있지 않을 때 알림을 표시하거나, 네트워크 연결이 다시 활성화되었을 때 자동으로 데이터를 다시 동기화하는 등의 기능을 구현할 수 있습니다. Kotlin을 사용하여 안드로이드 앱에서 네트워크 연결 상태를 모니터링하는 방법에 대해 알아보겠습니다.

권한 추가

먼저, 네트워크 상태를 확인하려면 해당 기능을 사용할 수 있는 권한을 추가해야 합니다. AndroidManifest.xml 파일에 아래와 같은 권한을 추가해주세요.

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

네트워크 상태 모니터링

ConnectivityManager를 사용하여 네트워크 상태를 모니터링할 수 있습니다. 아래의 코드는 네트워크 연결 상태를 모니터링하는 Kotlin 함수의 예시입니다.

import android.content.Context
import android.net.ConnectivityManager
import android.net.Network
import android.net.NetworkCapabilities
import android.net.NetworkRequest
import android.os.Build

class NetworkMonitor(private val context: Context) {
    private var isNetworkAvailable = false

    fun startNetworkCallback() {
        val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            connectivityManager.registerDefaultNetworkCallback(object : ConnectivityManager.NetworkCallback() {
                override fun onAvailable(network: Network) {
                    isNetworkAvailable = true
                }

                override fun onLost(network: Network) {
                    isNetworkAvailable = false
                }
            })
        } else {
            val builder = NetworkRequest.Builder()
                .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
            connectivityManager.registerNetworkCallback(builder.build(), object : ConnectivityManager.NetworkCallback() {
                override fun onAvailable(network: Network) {
                    isNetworkAvailable = true
                }

                override fun onLost(network: Network) {
                    isNetworkAvailable = false
                }
            })
        }
    }

    fun stopNetworkCallback() {
        val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        connectivityManager.unregisterNetworkCallback(ConnectivityManager.NetworkCallback())
    }

    fun isNetworkAvailable(): Boolean {
        return is
    gNetworkAvailable
    }
}

위의 예제 코드는 NetworkMonitor 클래스를 통해 네트워크 상태를 모니터링합니다. 이 클래스는 네트워크 연결 상태를 추적하고 변화에 따른 콜백을 처리합니다.

사용

이제 NetworkMonitor 클래스를 사용하여 네트워크 상태를 모니터링할 수 있습니다.

val networkMonitor = NetworkMonitor(context)
networkMonitor.startNetworkCallback()

// 앱이 종료되거나 더 이상 네트워크 상태를 모니터링하지 않는다면 다음을 호출합니다.
// networkMonitor.stopNetworkCallback()

이제, 안드로이드 앱에서 Kotlin을 사용하여 네트워크 상태를 감지하고 모니터링할 수 있습니다. 네트워크 연결 상태에 따라 사용자에게 알림을 표시하거나 적절한 조치를 취할 수 있습니다.

참고 자료: