Live Network Status
Monitor network connectivity changes in real-time using ConnectivityManager and NetworkCallback.
Get ConnectivityManager
Section titled “Get ConnectivityManager”val networkManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManagerCreate Network Callback
Section titled “Create Network Callback”val networkCallback = object : ConnectivityManager.NetworkCallback() { override fun onAvailable(network: Network) { super.onAvailable(network) _networkStatus.value = true }
override fun onLost(network: Network) { super.onLost(network) _networkStatus.value = false }
override fun onCapabilitiesChanged( network: Network, networkCapabilities: NetworkCapabilities ) { super.onCapabilitiesChanged(network, networkCapabilities) // Detect network speed, connection type when network is available }}Note: onCapabilitiesChanged() detects network speed and connection type only when network is available, not when lost.
Easy way to make it work
Section titled “Easy way to make it work”just use the default capability options
connectivityManager.registerDefaultNetworkCallback(networkCallback)Build Network Request
Section titled “Build Network Request”val networkRequest = NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED) .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) .addTransportType(NetworkCapabilities.TRANSPORT_ETHERNET) .build()