@@ -5,6 +5,8 @@ import android.content.Context
55import android.net.ConnectivityManager
66import android.net.Network
77import android.net.NetworkCapabilities
8+ import android.net.NetworkRequest
9+ import android.net.wifi.WifiInfo
810import android.os.Build
911import kotlinx.coroutines.ExperimentalCoroutinesApi
1012import kotlinx.coroutines.channels.awaitClose
@@ -24,19 +26,25 @@ import net.kuama.wifiMonitor.WifiListener
2426@TargetApi(Build .VERSION_CODES .Q )
2527internal class AndroidQWifiListener : WifiListener {
2628 @OptIn(ExperimentalCoroutinesApi ::class )
27- override fun listen (context : Context ): Flow <Unit > = callbackFlow {
29+ override fun listen (context : Context ): Flow <WifiInfo ? > = callbackFlow {
2830 val callback = object : ConnectivityManager .NetworkCallback () {
2931 override fun onCapabilitiesChanged (network : Network , networkCapabilities : NetworkCapabilities ) {
3032 super .onCapabilitiesChanged(network, networkCapabilities)
33+
34+ val wifiInfo = networkCapabilities.transportInfo as WifiInfo
3135 @Suppress(" BlockingMethodInNonBlockingContext" )
32- trySendBlocking(Unit )
36+ trySendBlocking(wifiInfo )
3337 }
3438 }
3539
40+ val request = NetworkRequest .Builder ()
41+ .addTransportType(NetworkCapabilities .TRANSPORT_WIFI )
42+ .build()
43+
3644 val connectivityManager = context.applicationContext.getSystemService(Context .CONNECTIVITY_SERVICE ) as ConnectivityManager
3745
3846 // Register the callback on network changes.
39- connectivityManager.registerDefaultNetworkCallback( callback)
47+ connectivityManager.registerNetworkCallback(request, callback)
4048
4149 // Wait for flow cancellation, then unregister the callback.
4250 awaitClose {
0 commit comments