diff --git a/android/app/src/main/kotlin/com/traccar/traccar_client/network/ConnectivityReceiver.kt b/android/app/src/main/kotlin/com/traccar/traccar_client/network/ConnectivityReceiver.kt new file mode 100644 index 0000000..646ebb1 --- /dev/null +++ b/android/app/src/main/kotlin/com/traccar/traccar_client/network/ConnectivityReceiver.kt @@ -0,0 +1,32 @@ +package com.traccar.traccar_client.network + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.net.ConnectivityManager +import android.net.Network +import android.net.NetworkCapabilities + +class ConnectivityReceiver( + private val onConnectivityChange: (Boolean) -> Unit +) : BroadcastReceiver() { + + private var isNetworkAvailable = false + + override fun onReceive(context: Context, intent: Intent) { + val newNetworkState = isNetworkAvailable(context) + if (newNetworkState != isNetworkAvailable) { + isNetworkAvailable = newNetworkState + onConnectivityChange(isNetworkAvailable) + } + } + + companion object { + fun isNetworkAvailable(context: Context): Boolean { + val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager + val network = connectivityManager.activeNetwork ?: return false + val capabilities = connectivityManager.getNetworkCapabilities(network) ?: return false + return capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) + } + } +}