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()Register Callback
Section titled “Register Callback”networkManager.registerNetworkCallback(networkRequest, networkCallback)Network Capabilities
Section titled “Network Capabilities”Common options for NetworkCapabilities:
NET_CAPABILITY_INTERNET- Network is intended to provide internet access (works in local-only networks)NET_CAPABILITY_VALIDATED- System successfully verified internet connectivity (e.g., pinged a server)NET_CAPABILITY_NOT_RESTRICTED- Network is not restricted (excludes non-standard network environments)
Transport Types
Section titled “Transport Types”TRANSPORT_WIFI- Monitor WiFi connectionsTRANSPORT_CELLULAR- Monitor mobile data connectionsTRANSPORT_ETHERNET- Monitor ethernet connections