Skip to content

Commit b5d7a46

Browse files
matteoKuamakuamanet
authored andcommitted
Upgrade to kotlin 1.6.21
Upgrade gradle to 7.0.4 Change flow publisher type to WifiInfo? Remove unused res
1 parent c319297 commit b5d7a46

File tree

7 files changed

+23
-15
lines changed

7 files changed

+23
-15
lines changed

build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
buildscript {
2-
ext.kotlin_version = "1.5.31"
2+
ext.kotlin_version = "1.6.21"
33
repositories {
44
google()
55
mavenCentral()
66
dependencies {
7-
classpath "com.android.tools.build:gradle:7.0.3"
7+
classpath "com.android.tools.build:gradle:7.0.4"
88
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
99
classpath "com.diffplug.spotless:spotless-plugin-gradle:5.17.1"
1010
}
@@ -50,7 +50,7 @@ android {
5050

5151
kotlinOptions {
5252
allWarningsAsErrors = true
53-
freeCompilerArgs += ["-Xopt-in=kotlin.RequiresOptIn"]
53+
freeCompilerArgs += ["-opt-in=kotlin.RequiresOptIn"]
5454
}
5555

5656
buildTypes {
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package net.kuama.wifiMonitor
22

33
import android.content.Context
4+
import android.net.wifi.WifiInfo
45
import kotlinx.coroutines.flow.Flow
56

67
/**
78
* Interface for a platform-specific WiFi monitoring implementation.
89
*/
910
interface WifiListener {
10-
fun listen(context: Context): Flow<Unit>
11+
fun listen(context: Context): Flow<WifiInfo?>
1112
}

src/main/java/net/kuama/wifiMonitor/WifiMonitor.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,13 @@ class WifiMonitor private constructor(
5656
*
5757
* @return A flow of WiFi statuses.
5858
*/
59-
fun monitor(): Flow<WifiStatus> = listener.listen(context).map {
59+
fun monitor(): Flow<WifiStatus> = listener.listen(context).map { wifiInfo ->
6060
when (wifiManager.wifiState) {
6161
WifiManager.WIFI_STATE_DISABLED, WifiManager.WIFI_STATE_DISABLING -> WifiStatus(
6262
State.DISCONNECTED
6363
)
6464
WifiManager.WIFI_STATE_ENABLED -> {
65-
// TODO: WiFiManager.getConnectionInfo() is deprecated in Android SDK 31 (Android 12).
66-
val connectionInfo = @Suppress("DEPRECATION") wifiManager.connectionInfo
67-
65+
val connectionInfo = wifiInfo ?: @Suppress("DEPRECATION") wifiManager.connectionInfo
6866
WifiStatus(
6967
state = if (isFineLocationAccessGranted) State.CONNECTED else State.CONNECTED_MISSING_FINE_LOCATION_PERMISSION,
7068
ssid = connectionInfo.ssid,

src/main/java/net/kuama/wifiMonitor/implementation/AndroidQWifiListener.kt

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import android.content.Context
55
import android.net.ConnectivityManager
66
import android.net.Network
77
import android.net.NetworkCapabilities
8+
import android.net.NetworkRequest
9+
import android.net.wifi.WifiInfo
810
import android.os.Build
911
import kotlinx.coroutines.ExperimentalCoroutinesApi
1012
import kotlinx.coroutines.channels.awaitClose
@@ -24,19 +26,25 @@ import net.kuama.wifiMonitor.WifiListener
2426
@TargetApi(Build.VERSION_CODES.Q)
2527
internal 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 {

src/main/java/net/kuama/wifiMonitor/implementation/BeforeAndroidQWifiListener.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.content.BroadcastReceiver
44
import android.content.Context
55
import android.content.Intent
66
import android.content.IntentFilter
7+
import android.net.wifi.WifiInfo
78
import kotlinx.coroutines.ExperimentalCoroutinesApi
89
import kotlinx.coroutines.channels.awaitClose
910
import kotlinx.coroutines.channels.trySendBlocking
@@ -18,11 +19,11 @@ import net.kuama.wifiMonitor.WifiListener
1819
*/
1920
internal class BeforeAndroidQWifiListener : WifiListener {
2021
@OptIn(ExperimentalCoroutinesApi::class)
21-
override fun listen(context: Context): Flow<Unit> = callbackFlow {
22+
override fun listen(context: Context): Flow<WifiInfo?> = callbackFlow {
2223
val receiver = object : BroadcastReceiver() {
2324
override fun onReceive(context: Context?, intent: Intent?) {
2425
@Suppress("BlockingMethodInNonBlockingContext")
25-
trySendBlocking(Unit)
26+
trySendBlocking(null)
2627
}
2728
}
2829

src/main/res/values/strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
<resources>
2-
<string name="app_name">K Wi-Fi Spy</string>
2+
33
</resources>

src/test/java/net/kuama/wifiMonitor/WifiMonitorTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class WifiMonitorTest {
3333
every {
3434
wifiListener.listen(context)
3535
} answers {
36-
flowOf(Unit)
36+
flowOf(null)
3737
}
3838

3939
// Act

0 commit comments

Comments
 (0)