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">
|
package="com.rtbishop.look4sat">
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
<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" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
|
|||||||
@@ -17,6 +17,11 @@
|
|||||||
*/
|
*/
|
||||||
package com.rtbishop.look4sat.utility
|
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 android.os.Bundle
|
||||||
import androidx.annotation.IdRes
|
import androidx.annotation.IdRes
|
||||||
import androidx.navigation.NavController
|
import androidx.navigation.NavController
|
||||||
@@ -24,6 +29,10 @@ import androidx.navigation.NavOptions
|
|||||||
import androidx.navigation.Navigator
|
import androidx.navigation.Navigator
|
||||||
import com.github.amsacode.predict4java.GroundStationPosition
|
import com.github.amsacode.predict4java.GroundStationPosition
|
||||||
import com.github.amsacode.predict4java.Satellite
|
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
|
import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
fun Long.formatForTimer(): String {
|
fun Long.formatForTimer(): String {
|
||||||
@@ -55,3 +64,22 @@ fun NavController.navigateSafe(
|
|||||||
navigate(resId, args, navOptions, navExtras)
|
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