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.
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