mirror of
https://github.com/rt-bishop/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
Added isNetworkAvailable extension function
This commit is contained in:
1 parent
a6d63748fb
commit
d013afbf50
2 files changed
+29
No files matched your search
@@ -3,6 +3,7 @@
|
||||
package="com.rtbishop.look4sat">
|
||||
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
|
||||
<application
|
||||
|
||||
@@ -17,6 +17,11 @@
|
||||
*/
|
||||
package com.rtbishop.look4sat.utility
|
||||
|
||||
import android.content.Context
|
||||
import android.net.ConnectivityManager
|
||||
import android.net.Network
|
||||
import android.net.NetworkCapabilities
|
||||
import android.net.NetworkRequest
|
||||
import android.os.Bundle
|
||||
import androidx.annotation.IdRes
|
||||
import androidx.navigation.NavController
|
||||
@@ -24,6 +29,10 @@ import androidx.navigation.NavOptions
|
||||
import androidx.navigation.Navigator
|
||||
import com.github.amsacode.predict4java.GroundStationPosition
|
||||
import com.github.amsacode.predict4java.Satellite
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.channels.awaitClose
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.callbackFlow
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
fun Long.formatForTimer(): String {
|
||||
@@ -55,3 +64,22 @@ fun NavController.navigateSafe(
|
||||
navigate(resId, args, navOptions, navExtras)
|
||||
}
|
||||
}
|
||||
|
||||
@ExperimentalCoroutinesApi
|
||||
fun Context.isNetworkAvailableFlow(): Flow<Boolean> = callbackFlow {
|
||||
val callback = object : ConnectivityManager.NetworkCallback() {
|
||||
override fun onAvailable(network: Network) {
|
||||
offer(true)
|
||||
}
|
||||
|
||||
override fun onLost(network: Network) {
|
||||
offer(false)
|
||||
}
|
||||
}
|
||||
val manager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
|
||||
manager.registerNetworkCallback(NetworkRequest.Builder().run {
|
||||
addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
|
||||
build()
|
||||
}, callback)
|
||||
awaitClose { manager.unregisterNetworkCallback(callback) }
|
||||
}
|
||||
Reference in new issue
Block a user