diff --git a/app/build.gradle.kts b/app/build.gradle.kts index b3a2587..3f6d0ae 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -56,8 +56,8 @@ android { applicationId = "io.github.miuzarte.scrcpyforandroid" minSdk = 26 targetSdk = 37 - versionCode = 26 - versionName = "0.3.0" + versionCode = 27 + versionName = "0.3.1" externalNativeBuild { cmake { diff --git a/app/src/main/java/io/github/miuzarte/scrcpyforandroid/nativecore/AdbMdnsDiscoverer.kt b/app/src/main/java/io/github/miuzarte/scrcpyforandroid/nativecore/AdbMdnsDiscoverer.kt index 087f41c..0831004 100644 --- a/app/src/main/java/io/github/miuzarte/scrcpyforandroid/nativecore/AdbMdnsDiscoverer.kt +++ b/app/src/main/java/io/github/miuzarte/scrcpyforandroid/nativecore/AdbMdnsDiscoverer.kt @@ -2,6 +2,7 @@ package io.github.miuzarte.scrcpyforandroid.nativecore import android.annotation.SuppressLint import android.content.Context +import android.os.Build import android.net.nsd.NsdManager import android.net.nsd.NsdServiceInfo import android.util.Log @@ -85,7 +86,7 @@ internal object AdbMdnsDiscoverer { override fun onServiceResolved(serviceInfo: NsdServiceInfo) { if (discoveryFinished.get()) return - val hostAddress = serviceInfo.hostAddresses[0].hostAddress ?: return + val hostAddress = resolvedHostAddress(serviceInfo) ?: return if (hostAddress.isBlank()) return if (!includeLanDevices) { @@ -128,6 +129,14 @@ internal object AdbMdnsDiscoverer { return if (port > 0 && !host.isNullOrBlank()) host to port else null } + @Suppress("DEPRECATION") + @SuppressLint("NewApi") + private fun resolvedHostAddress(serviceInfo: NsdServiceInfo): String? = + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) + serviceInfo.hostAddresses.firstOrNull()?.hostAddress + else + serviceInfo.host?.hostAddress + private fun isPortOpened(port: Int): Boolean = try { ServerSocket().use { it.bind(InetSocketAddress("127.0.0.1", port), 1)