-1

Sup guys, I'm working with app installed on harvester machines, each working in fields. It needs to connect on one of fragments to wifi without loosing connection to mobile. This wifi without access to internet - only for getting images from camera. How to get this directly without suggesting in 31 api? I'm totally stacked, look's like it impossible, but it working in a phone of my colleague in video-registrator app

ArchkWay
  • 119
  • 1
  • 6

1 Answers1

0

it worked for me:

    val connectivityManager: ConnectivityManager? = getSystemService(Context.CONNECTIVITY_SERVICE) as? ConnectivityManager
    val capabilities = connectivityManager?.getNetworkCapabilities(connectivityManager.activeNetwork)
    if (capabilities?.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) == true) {
        Toast.makeText(this,"wifi_success",Toast.LENGTH_SHORT).show()
    } else {
        Toast.makeText(this,"wifi_off",Toast.LENGTH_SHORT).show()
        startActivity( Intent(Settings.Panel.ACTION_WIFI))

    }
    val wifiManager: WifiManager? = getSystemService(Context.WIFI_SERVICE) as? WifiManager
    val needingWifi = wifiManager?.networkSuggestions?.firstOrNull()//for my case could be only one wifi

    val specifier: NetworkSpecifier =
        WifiNetworkSpecifier.Builder()
            .setSsidPattern(PatternMatcher(needingWifi?.ssid, PatternMatcher.PATTERN_PREFIX))
            .setWpa2Passphrase("12345678")
        .build()
    val  request: NetworkRequest =
        NetworkRequest.Builder()
            .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
            .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
            .setNetworkSpecifier(specifier)
            .build();
    val networkCallback: ConnectivityManager.NetworkCallback = object :ConnectivityManager.NetworkCallback() {
        override fun onAvailable(network: Network) {
            super.onAvailable(network)
            connectivityManager?.bindProcessToNetwork(network)
            Toast.makeText(this@MainActivity, "CONNECTED", Toast.LENGTH_SHORT).show()
        }
    }
    connectivityManager?.requestNetwork(request, networkCallback)
ArchkWay
  • 119
  • 1
  • 6