Wi-Fi แƒ“แƒ แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒกแƒฎแƒ•แƒ แƒแƒ‘แƒ แƒ”แƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ. แƒ แƒแƒ’แƒแƒ  แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ Wi-Fi แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ Android แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒจแƒ˜ แƒจแƒ”แƒจแƒฃแƒžแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”

แƒ”แƒ แƒ— แƒ“แƒฆแƒ”แƒก แƒ“แƒแƒ›แƒญแƒ˜แƒ แƒ“แƒ Android แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ Wi-Fi แƒฅแƒกแƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒ™แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ แƒ“แƒ แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ.

แƒแƒฅ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒกแƒ˜แƒ แƒ—แƒฃแƒšแƒ˜แƒก แƒฌแƒ˜แƒœแƒแƒจแƒ” แƒ“แƒแƒ•แƒ“แƒ”แƒฅแƒ˜แƒ—: แƒ’แƒแƒ›แƒแƒ แƒ—แƒฃแƒšแƒ˜แƒ. Android แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒ™แƒšแƒแƒกแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒ›แƒแƒซแƒ•แƒ”แƒšแƒ“แƒ (API แƒ“แƒแƒœแƒ” > 26), แƒ แƒแƒช แƒ›แƒแƒกแƒจแƒ˜ แƒแƒ  แƒแƒ˜แƒกแƒแƒฎแƒ; แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒแƒจแƒ˜ แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒœแƒ˜แƒ•แƒ—แƒ˜แƒก แƒแƒฆแƒฌแƒ”แƒ แƒ แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜แƒ (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ™แƒšแƒแƒกแƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ•แƒ”แƒšแƒ˜ แƒกแƒ™แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ แƒฌแƒ”แƒ แƒ˜แƒก แƒ“แƒ แƒแƒก แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒแƒ แƒแƒคแƒ”แƒ แƒ˜แƒ แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜, แƒ—แƒฃแƒ›แƒชแƒ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒฃแƒแƒ›แƒ แƒแƒ• แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒก). แƒ›แƒ”แƒกแƒแƒ›แƒ” แƒกแƒ˜แƒ แƒ—แƒฃแƒšแƒ” แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ“แƒ”แƒก แƒ˜แƒ›แƒแƒจแƒ˜, แƒ แƒแƒ› แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“ แƒ›แƒ˜แƒฃแƒแƒฎแƒšแƒแƒ•แƒ“แƒ”แƒ‘แƒ˜แƒ— Wi-Fi-แƒก, แƒ—แƒ”แƒแƒ แƒ˜แƒ˜แƒก แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒกแƒ แƒ“แƒ แƒ แƒแƒฃแƒขแƒ”แƒ แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ“แƒ แƒšแƒแƒ™แƒแƒšแƒฐแƒแƒกแƒขแƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒฃแƒ›แƒ™แƒšแƒแƒ•แƒ“แƒ”แƒ— แƒ›แƒ—แƒ”แƒš แƒ แƒ˜แƒ’ แƒแƒ‘แƒ แƒ”แƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช, แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก, แƒ’แƒแƒกแƒแƒ’แƒ”แƒ‘แƒ˜แƒ แƒ˜แƒœแƒ“แƒ˜แƒ•แƒ˜แƒ“แƒฃแƒแƒšแƒฃแƒ แƒแƒ“. แƒ›แƒแƒ’แƒ แƒแƒ› แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒ  แƒ˜แƒงแƒแƒก แƒชแƒฎแƒแƒ“แƒ˜, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒแƒ— แƒ˜แƒกแƒ˜แƒœแƒ˜ (แƒ’แƒแƒœแƒกแƒฏแƒ แƒกแƒฃแƒ‘แƒ˜แƒ”แƒฅแƒขแƒฃแƒ แƒ˜แƒ แƒ“แƒ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒฌแƒ˜แƒœแƒ แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒแƒ–แƒ”).

แƒ”แƒก แƒกแƒขแƒแƒขแƒ˜แƒ แƒ’แƒแƒœแƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒก, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ›แƒ˜แƒ˜แƒฆแƒแƒ— แƒงแƒแƒ•แƒšแƒ˜แƒกแƒ›แƒแƒ›แƒชแƒ•แƒ”แƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ Wi-Fi แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒแƒœแƒ“แƒ แƒแƒ˜แƒ“แƒ˜แƒก แƒ™แƒแƒ“แƒ˜แƒ“แƒแƒœ NDK-แƒ˜แƒก, แƒฐแƒแƒ™แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒฎแƒแƒšแƒแƒ“ Android API-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒ’แƒ•แƒ”แƒกแƒ›แƒแƒ“แƒ”แƒก, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ’แƒแƒœแƒ˜แƒ›แƒแƒ แƒขแƒแƒก แƒ˜แƒ’แƒ˜.

แƒแƒ  แƒ“แƒแƒ•แƒแƒ’แƒ•แƒ˜แƒแƒœแƒแƒ— แƒ“แƒ แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒแƒ— แƒ™แƒแƒ“แƒ˜แƒก แƒฌแƒ”แƒ แƒ.

1. แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜

แƒ”แƒก แƒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ แƒ’แƒแƒœแƒ™แƒฃแƒ—แƒ•แƒœแƒ˜แƒšแƒ˜แƒ แƒ›แƒแƒ—แƒ—แƒ•แƒ˜แƒก, แƒ•แƒ˜แƒœแƒช แƒจแƒ”แƒฅแƒ›แƒœแƒ Android แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ แƒแƒ แƒแƒ”แƒ แƒ—แƒฎแƒ”แƒš, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒขแƒแƒ•แƒ”แƒ‘แƒ— แƒแƒ› แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒก. แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒ™แƒแƒ“แƒ˜ แƒฌแƒแƒ แƒ›แƒแƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ Kotlin-แƒจแƒ˜, minSdkVersion=23.

2. แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒœแƒ”แƒ‘แƒแƒ แƒ—แƒ•แƒ”แƒ‘แƒ˜

แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒ“แƒแƒœ Wi-Fi-แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ›แƒ˜แƒ˜แƒฆแƒแƒ— แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒกแƒ’แƒแƒœ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒœแƒ”แƒ‘แƒแƒ แƒ—แƒ•แƒ. แฒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ8.0-แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ OS-แƒ˜แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ›แƒฅแƒแƒœแƒ” แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ”แƒ‘แƒ–แƒ” แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒกแƒ™แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ˜แƒก แƒกแƒแƒœแƒแƒฎแƒแƒ•แƒแƒ“ แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ แƒ“แƒ, แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ˜แƒก Wi-Fi แƒ›แƒแƒ“แƒฃแƒšแƒ˜แƒก แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒชแƒ•แƒšแƒ”แƒšแƒแƒ“, แƒแƒœ แƒ™แƒแƒแƒ แƒ“แƒ˜แƒœแƒแƒขแƒ”แƒ‘แƒ–แƒ” แƒฌแƒ•แƒ“แƒแƒ›แƒ (แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— แƒแƒœ แƒ–แƒฃแƒกแƒขแƒแƒ“). 9.0 แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒ— แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒฃแƒšแƒ˜, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ›แƒแƒกแƒ—แƒฎแƒแƒ•แƒแƒ— แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒก แƒแƒ แƒ˜แƒ•แƒ”, แƒ“แƒ แƒแƒกแƒ”แƒ•แƒ” แƒ›แƒ™แƒแƒคแƒ˜แƒแƒ“ แƒกแƒ—แƒฎแƒแƒ•แƒแƒ— แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒก แƒฉแƒแƒ แƒ—แƒแƒก แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”แƒแƒ‘แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜. แƒแƒ  แƒ“แƒแƒ’แƒแƒ•แƒ˜แƒฌแƒงแƒ“แƒ”แƒ— แƒ’แƒแƒšแƒแƒœแƒขแƒฃแƒ แƒแƒ“ แƒแƒฃแƒฎแƒกแƒœแƒแƒ— แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒก, แƒ แƒแƒ› แƒ”แƒก แƒแƒ แƒ˜แƒก Google-แƒ˜แƒก แƒแƒฎแƒ˜แƒ แƒ”แƒ‘แƒ แƒ“แƒ แƒแƒ แƒ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒฃแƒ แƒ•แƒ˜แƒšแƒ˜, แƒ แƒแƒ› แƒฏแƒแƒจแƒฃแƒจแƒแƒ‘แƒ แƒ’แƒ•แƒฅแƒแƒœแƒ“แƒ”แƒก :)

แƒแƒกแƒ” แƒ แƒแƒ›, AndroidManifest.xml-แƒจแƒ˜ แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ—:

    <uses-permission android_name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android_name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android_name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android_name="android.permission.ACCESS_FINE_LOCATION"/>

แƒ“แƒ แƒ™แƒแƒ“แƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒแƒฅแƒขแƒ˜แƒ•แƒแƒ‘แƒ˜แƒก แƒ‘แƒ›แƒฃแƒšแƒก:

import android.app.Activity
import android.content.Context
import android.location.LocationManager
import androidx.core.app.ActivityCompat

....

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            ActivityCompat.requestPermissions(
                activity,
                arrayOf(Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.CHANGE_WIFI_STATE),
                1
            )
            makeEnableLocationServices(activity.applicationContext)
        } else {
            ActivityCompat.requestPermissions(
                activity,
                arrayOf(Manifest.permission.CHANGE_WIFI_STATE),
                1
            )
        }

    /* ะฒะบะปัŽั‡ะฐะตั‚ ัะบั€ะฐะฝ ะฒะบะปัŽั‡ะตะฝะธั ัะปัƒะถะฑั‹ ะฟะพ ะพะฟั€ะตะดะตะปะตะฝะธัŽ ะผะตัั‚ะพะฟะพะปะพะถะตะฝะธั */
    fun makeEnableLocationServices(context: Context) {
        // TODO: ะฟะตั€ะตะด ะฒั‹ะทะพะฒะพะผ ัั‚ะพะน ั„ัƒะฝะบั†ะธะธ ะฝะฐะดะพ ั€ะฐััะบะฐะทะฐั‚ัŒ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัŽ, ะทะฐั‡ะตะผ ะ’ะฐะผ ะดะพัั‚ัƒะฟ ะบ ะผะตัั‚ะพะฟะพะปะพะถะตะฝะธัŽ
        val lm: LocationManager =
            context.applicationContext.getSystemService(Context.LOCATION_SERVICE) as LocationManager

        val gpsEnabled: Boolean = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
        val networkEnabled: Boolean = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

        if (!gpsEnabled && !networkEnabled) {
            context.startActivity(Intent(ACTION_LOCATION_SOURCE_SETTINGS));
        }
    }

3. แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— BroadcastReceiver แƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒฌแƒ”แƒ แƒ”แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ˜แƒก แƒฆแƒแƒœแƒ˜แƒกแƒซแƒ˜แƒ”แƒ‘แƒ”แƒ‘แƒ˜ Wi-Fi แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒกแƒ™แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘

val wifiManager = context.getSystemService(Context.WIFI_SERVICE) as WifiManager

val wifiScanReceiver = object : BroadcastReceiver() {

  override fun onReceive(context: Context, intent: Intent) {
    val success = intent.getBooleanExtra(WifiManager.EXTRA_RESULTS_UPDATED, false)
    if (success) {
      scanSuccess()
    } 
  }
}

val intentFilter = IntentFilter()
/* ะฟะพะดะฟะธัั‹ะฒะฐะตะผัั ะฝะฐ ัะพะพะฑั‰ะตะฝะธั ะพ ะฟะพะปัƒั‡ะตะฝะธะธ ะฝะพะฒั‹ั… ั€ะตะทัƒะปัŒั‚ะฐั‚ะพะฒ ัะบะฐะฝะธั€ะพะฒะฐะฝะธั */
intentFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)
context.registerReceiver(wifiScanReceiver, intentFilter)

val success = wifiManager.startScan()
if (!success) {
  /* ั‡ั‚ะพ-ั‚ะพ ะฝะต ะฟะพะปัƒั‡ะธะปะพััŒ ะฟั€ะธ ะทะฐะฟัƒัะบะต ัะบะฐะฝะธั€ะพะฒะฐะฝะธั, ะฟั€ะพะฒะตั€ัŒั‚ะต ะฒั‹ะดะฐะฝั‹ะต ั€ะฐะทั€ะตัˆะตะฝะธั */
}

....

private fun scanSuccess() {
 /* ะฒะพั‚ ะพะฝะธ, ั€ะตะทัƒะปัŒั‚ะฐั‚ั‹ ัะบะฐะฝะธั€ะพะฒะฐะฝะธั */
  val results: List<ScanResult> = wifiManager.scanResults
}

แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒแƒจแƒ˜ WiFiManager.startScan แƒ›แƒ”แƒ—แƒแƒ“แƒ˜ แƒ›แƒแƒœแƒ˜แƒจแƒœแƒฃแƒšแƒ˜แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ API 28 แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒ“แƒแƒœ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ’แƒแƒ›แƒแƒ แƒ—แƒฃแƒšแƒ˜แƒ. แƒฃแƒฎแƒ”แƒšแƒ›แƒซแƒฆแƒ•แƒแƒœแƒ”แƒšแƒ”แƒ‘แƒก แƒ’แƒ—แƒแƒ•แƒแƒ–แƒแƒ‘แƒ— แƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒก.

แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ‘แƒแƒจแƒ˜ แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒ”แƒ— แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ แƒกแƒ™แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜.

4. แƒจแƒ”แƒฎแƒ”แƒ“แƒ”แƒ— ScanResult-แƒก แƒ“แƒ แƒ’แƒแƒ˜แƒ’แƒ”แƒ— แƒžแƒ˜แƒ แƒแƒ‘แƒ”แƒ‘แƒ˜

แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒแƒ› แƒ™แƒšแƒแƒกแƒ˜แƒก แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ— แƒ•แƒ”แƒšแƒก แƒ“แƒ แƒแƒฆแƒ•แƒฌแƒ”แƒ แƒแƒ— แƒ แƒแƒก แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก แƒ˜แƒกแƒ˜แƒœแƒ˜:

SSID โ€” แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒแƒ แƒ˜ แƒแƒ แƒ˜แƒก แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜

BSSID โ€“ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒแƒ แƒ˜ โ€“ แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒแƒ“แƒแƒžแƒขแƒ”แƒ แƒ˜แƒก MAC แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜ (Wi-Fi แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜)

แƒ“แƒแƒœแƒ” โ€” แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒก แƒกแƒ˜แƒซแƒšแƒ˜แƒ”แƒ แƒ˜แƒก แƒ˜แƒœแƒ“แƒ˜แƒ™แƒแƒขแƒแƒ แƒ˜ [dBm (แƒ แƒฃแƒกแƒฃแƒšแƒ˜ dBm) โ€” แƒ“แƒ”แƒชแƒ˜แƒ‘แƒ”แƒšแƒ˜, แƒกแƒแƒชแƒœแƒแƒ‘แƒแƒ แƒ แƒกแƒ˜แƒ›แƒซแƒšแƒแƒ•แƒ แƒ” 1 แƒ›แƒ•แƒข.] โ€” แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒก แƒกแƒ˜แƒซแƒšแƒ˜แƒ”แƒ แƒ˜แƒก แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜. แƒ˜แƒฆแƒ”แƒ‘แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒแƒก 0-แƒ“แƒแƒœ -100-แƒ›แƒ“แƒ”, แƒ แƒแƒช แƒฃแƒคแƒ แƒ แƒจแƒแƒ แƒก แƒแƒ แƒ˜แƒก 0-แƒ“แƒแƒœ, แƒ›แƒ˜แƒ— แƒ›แƒ”แƒขแƒ˜ แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒก แƒกแƒ˜แƒ›แƒซแƒšแƒแƒ•แƒ แƒ” แƒ˜แƒ™แƒแƒ แƒ’แƒ”แƒ‘แƒ Wi-Fi แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜แƒ“แƒแƒœ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒแƒ›แƒ“แƒ” แƒ’แƒ–แƒแƒ–แƒ”. แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒฎแƒ˜แƒšแƒแƒ—, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ–แƒ” แƒ•แƒ˜แƒ™แƒ˜แƒžแƒ”แƒ“แƒ˜แƒ. แƒแƒฅ แƒ›แƒ” แƒ’แƒ”แƒขแƒงแƒ•แƒ˜แƒ—, แƒ แƒแƒ› Android แƒ™แƒšแƒแƒกแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— WifiManager แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒก แƒ“แƒแƒœแƒ˜แƒก แƒ“แƒแƒ™แƒแƒšแƒ˜แƒ‘แƒ แƒ”แƒ‘แƒ แƒ›แƒแƒกแƒจแƒขแƒแƒ‘แƒ˜แƒ— แƒจแƒ”แƒกแƒแƒœแƒ˜แƒจแƒœแƒแƒ•แƒ˜แƒ“แƒแƒœ แƒกแƒแƒจแƒ˜แƒœแƒ”แƒšแƒ”แƒ‘แƒแƒ›แƒ“แƒ” แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒ›แƒ˜แƒ”แƒ  แƒแƒ แƒฉแƒ”แƒฃแƒš แƒกแƒแƒคแƒ”แƒฎแƒฃแƒ แƒ–แƒ”:

        val wifiManager = context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
        val numberOfLevels = 5
        val level = WifiManager.calculateSignalLevel(level, numberOfLevels)

แƒกแƒ˜แƒฎแƒจแƒ˜แƒ แƒ” โ€” Wi-Fi แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒกแƒ˜แƒฎแƒจแƒ˜แƒ แƒ” [Hz]. แƒ’แƒแƒ แƒ“แƒ แƒ—แƒแƒ•แƒแƒ“ แƒกแƒ˜แƒฎแƒจแƒ˜แƒ แƒ˜แƒกแƒ, แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒ“แƒแƒ’แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒแƒ— แƒแƒ แƒฎแƒ˜ แƒ”.แƒฌ. แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒก แƒแƒฅแƒ•แƒก แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒฃแƒคแƒ—แƒแƒ•แƒ”. แƒฌแƒ”แƒ แƒ˜แƒก แƒ“แƒ แƒแƒก, Wi-Fi แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒžแƒแƒžแƒฃแƒšแƒแƒ แƒฃแƒšแƒ˜ แƒ“แƒ˜แƒแƒžแƒแƒ–แƒแƒœแƒ˜ แƒแƒ แƒ˜แƒก 2.4 แƒ’แƒฐแƒช. แƒ›แƒแƒ’แƒ แƒแƒ›, แƒฃแƒคแƒ แƒ แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒ แƒแƒ› แƒ•แƒ—แƒฅแƒ•แƒแƒ—, แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜ แƒ’แƒแƒ“แƒแƒกแƒชแƒ”แƒ›แƒก แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒแƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒขแƒ”แƒšแƒ”แƒคแƒแƒœแƒก แƒ“แƒแƒœแƒแƒ›แƒ แƒ˜แƒšแƒ˜ แƒกแƒ˜แƒฎแƒจแƒ˜แƒ แƒ˜แƒ—, แƒ“แƒแƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ—แƒแƒœ แƒแƒฎแƒšแƒแƒก. แƒแƒ แƒฎแƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ แƒ“แƒ แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒ˜ แƒกแƒ˜แƒฎแƒจแƒ˜แƒ แƒ”แƒ”แƒ‘แƒ˜ แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜. แƒ”แƒก แƒ™แƒ”แƒ—แƒ“แƒ”แƒ‘แƒ แƒ˜แƒกแƒ”, แƒ แƒแƒ› แƒ›แƒ˜แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ” แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ”แƒ‘แƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ”แƒœ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒกแƒ˜แƒฎแƒจแƒ˜แƒ แƒ”แƒ–แƒ”, แƒ แƒ˜แƒ—แƒแƒช แƒแƒ  แƒ”แƒ แƒ”แƒ•แƒ˜แƒแƒœ แƒ”แƒ แƒ—แƒ›แƒแƒœแƒ”แƒ—แƒก แƒ“แƒ แƒแƒ  แƒแƒ›แƒชแƒ˜แƒ แƒ”แƒ‘แƒ”แƒœ แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒ˜แƒก แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ”แƒก แƒ“แƒ แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒก. แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ”แƒ‘แƒ˜ แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒก แƒแƒ แƒ แƒ”แƒ แƒ— แƒกแƒ˜แƒฎแƒจแƒ˜แƒ แƒ”แƒ–แƒ”, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒกแƒ˜แƒฎแƒจแƒ˜แƒ แƒ”แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ˜แƒแƒžแƒแƒ–แƒแƒœแƒ–แƒ” (แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜ แƒแƒ แƒฎแƒ˜แƒก แƒกแƒ˜แƒ’แƒแƒœแƒ”), แƒ”แƒฌแƒแƒ“แƒ”แƒ‘แƒ แƒแƒ แƒฎแƒ˜แƒก แƒกแƒ˜แƒ’แƒแƒœแƒ”. แƒแƒœแƒฃ แƒ›แƒ”แƒ–แƒแƒ‘แƒ”แƒš (แƒ“แƒ แƒแƒ แƒ แƒ›แƒแƒ แƒขแƒ แƒ›แƒ˜แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”, แƒแƒ แƒแƒ›แƒ”แƒ“ 3 แƒ—แƒแƒ•แƒ˜แƒกแƒ’แƒแƒœแƒแƒช แƒ™แƒ˜) แƒแƒ แƒฎแƒ”แƒ‘แƒ–แƒ” แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ˜ แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ”แƒ‘แƒ˜ แƒ”แƒ แƒ”แƒ•แƒ˜แƒแƒœ แƒ”แƒ แƒ—แƒ›แƒแƒœแƒ”แƒ—แƒก. แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ’แƒแƒ“แƒ’แƒ”แƒ— แƒ”แƒก แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ™แƒแƒ“แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ’แƒแƒ›แƒแƒ—แƒ•แƒแƒšแƒแƒ— แƒแƒ แƒฎแƒ˜แƒก แƒœแƒแƒ›แƒ”แƒ แƒ˜ แƒกแƒ˜แƒฎแƒจแƒ˜แƒ แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ˜แƒ“แƒแƒœ 2.4 แƒ“แƒ 5 แƒ’แƒฐแƒช แƒกแƒ˜แƒฎแƒจแƒ˜แƒ แƒ˜แƒก แƒ›แƒฅแƒแƒœแƒ” แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก:


    /* ะฟะพ ั‡ะฐัั‚ะพั‚ะต ะพะฟั€ะตะดะตะปัะตะผ ะฝะพะผะตั€ ะบะฐะฝะฐะปะฐ */
    val channel: Int
        get() {
            return if (frequency in 2412..2484) {
                (frequency - 2412) / 5 + 1
            } else if (frequency in 5170..5825) {
                (frequency - 5170) / 5 + 34
            } else {
                -1
            }
        }

แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜ - แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ แƒกแƒคแƒ”แƒ แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ—แƒแƒœแƒแƒช แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒ“แƒ˜แƒ“ แƒ“แƒ แƒแƒก แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒ“แƒ. แƒแƒฅ แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜แƒก "แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜" แƒ˜แƒฌแƒ”แƒ แƒ”แƒ‘แƒ แƒฎแƒแƒ–แƒจแƒ˜. แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒ  แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ แƒžแƒ แƒ”แƒขแƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒซแƒ˜แƒ”แƒ‘แƒ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒแƒจแƒ˜. แƒแƒฅ แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ—แƒฃ แƒ แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒแƒ› แƒฎแƒแƒ–แƒจแƒ˜:

[WPA-PSK-TKIP+CCMP][WPA2-PSK-TKIP+CCMP][WPS][ESS]
[WPA2-PSK-CCMP][ESS]
[WPA2-PSK-CCMP+TKIP][ESS]
[WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS]
[ESS][WPS]

5. แƒแƒ‘แƒ แƒ”แƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒแƒ–แƒ แƒ”แƒ‘แƒ แƒ“แƒ แƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜

แƒแƒฆแƒกแƒแƒœแƒ˜แƒจแƒœแƒแƒ•แƒ˜แƒ, แƒ แƒแƒ› android.net.wifi.* แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ™แƒšแƒแƒกแƒ”แƒ‘แƒ˜ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒšแƒ˜แƒœแƒฃแƒฅแƒกแƒ˜แƒก แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ . wpa_supplicant แƒ“แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ•แƒ”แƒšแƒจแƒ˜ แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ แƒแƒ แƒ˜แƒก แƒ“แƒ แƒแƒจแƒ”แƒ‘แƒ˜แƒก แƒ•แƒ”แƒšแƒ˜แƒก แƒแƒกแƒšแƒ˜ แƒกแƒ™แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒแƒก.

แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ— แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒฃแƒšแƒแƒ“. แƒฏแƒ”แƒ  แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒคแƒแƒ แƒ›แƒแƒขแƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช แƒคแƒ แƒฉแƒฎแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ— แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒ’แƒแƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒ˜แƒ โ€ž-โ€œ แƒœแƒ˜แƒจแƒœแƒ˜แƒ—:

[WPA-PSK-TKIP+CCMP]
[WPA2-PSK-CCMP]

แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ แƒแƒฆแƒฌแƒ”แƒ แƒก แƒ”.แƒฌ. แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒ˜. แƒแƒœแƒฃ แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ แƒ แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒแƒกแƒ แƒฃแƒšแƒแƒก แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒแƒ› แƒ“แƒ แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ›แƒ, แƒ แƒแƒ—แƒ แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ›แƒ แƒ—แƒแƒ•แƒ˜แƒกแƒ—แƒแƒ•แƒแƒ“ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒก แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒจแƒ˜แƒคแƒ แƒแƒก แƒขแƒ•แƒ˜แƒ แƒ—แƒ˜แƒก แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ. แƒแƒ› แƒžแƒแƒกแƒขแƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒก แƒ“แƒ แƒแƒก แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ’แƒแƒ•แƒ แƒชแƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ”แƒ‘แƒ˜แƒ WPA แƒ“แƒ WPA2, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒจแƒ˜แƒช แƒแƒœ แƒงแƒแƒ•แƒ”แƒšแƒ˜ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒแƒœ แƒ”.แƒฌ. RADIUS แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ (WPA-Enterprice) แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก แƒžแƒแƒ แƒแƒšแƒก แƒ“แƒแƒจแƒ˜แƒคแƒ แƒฃแƒš แƒแƒ แƒฎแƒ–แƒ”. แƒกแƒแƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ“, แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒกแƒแƒฎแƒšแƒจแƒ˜ แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒก แƒแƒ› แƒกแƒฅแƒ”แƒ›แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—. แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ แƒ›แƒ”แƒแƒ แƒ” แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒกแƒ แƒ“แƒ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒก แƒจแƒแƒ แƒ˜แƒก แƒแƒ แƒ˜แƒก แƒ˜แƒก, แƒ แƒแƒ› แƒ›แƒแƒก แƒแƒฅแƒ•แƒก แƒฃแƒคแƒ แƒ แƒซแƒšแƒ˜แƒ”แƒ แƒ˜ แƒจแƒ˜แƒคแƒ แƒ˜: AES แƒ“แƒแƒฃแƒชแƒ•แƒ”แƒšแƒ˜ TKIP-แƒ˜แƒก แƒฌแƒ˜แƒœแƒแƒแƒฆแƒ›แƒ“แƒ”แƒ’. WPA3, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฃแƒคแƒ แƒ แƒ แƒ—แƒฃแƒšแƒ˜ แƒ“แƒ แƒ›แƒแƒฌแƒ˜แƒœแƒแƒ•แƒ”แƒ, แƒแƒกแƒ”แƒ•แƒ” แƒ—แƒแƒœแƒ“แƒแƒ—แƒแƒœแƒแƒ‘แƒ˜แƒ— แƒ˜แƒœแƒ”แƒ แƒ’แƒ”แƒ‘แƒ. แƒ—แƒ”แƒแƒ แƒ˜แƒฃแƒšแƒแƒ“, แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ“แƒ”แƒก แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜ แƒกแƒแƒฌแƒแƒ แƒ›แƒแƒก แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒ— CCKM (Cisco Centralized Key Management), แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒ” แƒแƒ แƒแƒกแƒแƒ“แƒ”แƒก แƒจแƒ”แƒ›แƒฎแƒ•แƒ”แƒ“แƒ แƒ˜แƒ.

แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜ แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒงแƒแƒก MAC แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜แƒ— แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒแƒœ, แƒ—แƒฃ แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜ แƒ’แƒ•แƒแƒฌแƒ•แƒ“แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒ›แƒแƒซแƒ•แƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ WEP แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ›แƒแƒจแƒ˜แƒœ แƒ แƒ”แƒแƒšแƒฃแƒ แƒแƒ“ แƒแƒ  แƒแƒ แƒ˜แƒก แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ (แƒแƒฅ แƒกแƒแƒ˜แƒ“แƒฃแƒ›แƒšแƒ แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜ แƒแƒ แƒ˜แƒก แƒ“แƒแƒจแƒ˜แƒคแƒ•แƒ แƒ˜แƒก แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜). แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ”แƒ‘แƒ— แƒแƒกแƒ”แƒ— แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ”แƒ‘แƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒกแƒฎแƒ•แƒ.
แƒแƒกแƒ”แƒ•แƒ” แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒžแƒแƒžแƒฃแƒšแƒแƒ แƒฃแƒšแƒ˜แƒ แƒกแƒแƒฏแƒแƒ แƒ wi-fi-แƒจแƒ˜ แƒคแƒแƒ แƒฃแƒšแƒ˜ Captive Portal Detection-แƒ˜แƒ— - แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒ‘แƒ แƒแƒฃแƒ–แƒ”แƒ แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—. แƒแƒกแƒ”แƒ—แƒ˜ แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ”แƒ‘แƒ˜ แƒกแƒ™แƒแƒœแƒ”แƒ แƒก แƒฆแƒ˜แƒแƒ“ แƒ”แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ (แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒแƒ แƒ˜แƒแƒœ แƒคแƒ˜แƒ–แƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒก แƒ—แƒ•แƒแƒšแƒกแƒแƒ–แƒ แƒ˜แƒกแƒ˜แƒ—). แƒแƒ›แƒ˜แƒขแƒแƒ›, แƒฉแƒ•แƒ”แƒœ แƒ›แƒแƒ— แƒ•แƒแƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ”แƒ‘แƒ— แƒ แƒแƒ’แƒแƒ แƒช แƒฆแƒ˜แƒ.

แƒ›แƒ”แƒแƒ แƒ” แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒฆแƒ˜แƒœแƒ˜แƒจแƒœแƒแƒก แƒ แƒแƒ’แƒแƒ แƒช แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ˜. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ–แƒ”แƒ›แƒแƒ— แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜. แƒกแƒแƒฃแƒ‘แƒแƒ แƒ˜แƒ แƒ˜แƒ›แƒแƒ–แƒ”, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฎแƒ“แƒ”แƒ‘แƒ แƒ“แƒแƒจแƒ˜แƒคแƒ•แƒ แƒ˜แƒก แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒชแƒ•แƒšแƒ. แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒจแƒ”แƒกแƒแƒซแƒšแƒ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ”แƒ‘แƒ˜. EAP - แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒแƒฆแƒœแƒ˜แƒจแƒœแƒฃแƒš WPA-Enterprice-แƒจแƒ˜, แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒšแƒ˜ แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒšแƒแƒ“. SAE - แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ›แƒแƒฌแƒ˜แƒœแƒแƒ•แƒ” WPA3-แƒจแƒ˜, แƒฃแƒคแƒ แƒ แƒ›แƒ“แƒ’แƒ แƒแƒ“แƒ˜แƒ แƒฃแƒฎแƒ”แƒจแƒ˜ แƒซแƒแƒšแƒ˜แƒก แƒ›แƒ˜แƒ›แƒแƒ แƒ—. PSK - แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ’แƒแƒ•แƒ แƒชแƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜, แƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒแƒ‘แƒก แƒžแƒแƒ แƒแƒšแƒ˜แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒแƒก แƒ“แƒ แƒ“แƒแƒจแƒ˜แƒคแƒ แƒฃแƒšแƒ˜ แƒคแƒแƒ แƒ›แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒแƒก. IEEE8021X - แƒกแƒแƒ”แƒ แƒ—แƒแƒจแƒแƒ แƒ˜แƒกแƒ แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ— (แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ WPA แƒแƒฏแƒแƒฎแƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒกแƒ’แƒแƒœ). OWE (แƒแƒžแƒแƒ แƒขแƒฃแƒœแƒ˜แƒกแƒขแƒฃแƒšแƒ˜ แƒฃแƒกแƒแƒ“แƒ”แƒœแƒ แƒ“แƒแƒจแƒ˜แƒคแƒ•แƒ แƒ) แƒแƒ แƒ˜แƒก IEEE 802.11 แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒ˜แƒก แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ แƒ˜แƒ› แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒฉแƒ•แƒ”แƒœ แƒ™แƒšแƒแƒกแƒ˜แƒคแƒ˜แƒชแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ แƒแƒ’แƒแƒ แƒช OPEN. OWE แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก แƒ“แƒแƒฃแƒชแƒ•แƒ”แƒš แƒฅแƒกแƒ”แƒšแƒจแƒ˜ แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒแƒก แƒ›แƒ˜แƒกแƒ˜ แƒ“แƒแƒจแƒ˜แƒคแƒ•แƒ แƒ˜แƒก แƒ’แƒ–แƒ˜แƒ—. แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜ แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒแƒ  แƒแƒ แƒ˜แƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ”แƒ‘แƒ˜, แƒ›แƒแƒ“แƒ˜แƒ— แƒ•แƒฃแƒฌแƒแƒ“แƒแƒ— แƒแƒ› แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒก NONE.

แƒ›แƒ”แƒกแƒแƒ›แƒ” แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜ แƒแƒ แƒ˜แƒก แƒ”.แƒฌ. แƒ“แƒแƒจแƒ˜แƒคแƒ•แƒ แƒ˜แƒก แƒกแƒฅแƒ”แƒ›แƒ”แƒ‘แƒ˜ โ€” แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒจแƒ˜แƒคแƒ แƒ˜ แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒแƒชแƒแƒ•แƒแƒ“. แƒ›แƒแƒ“แƒ˜แƒ— แƒฉแƒแƒ›แƒแƒ•แƒ—แƒ•แƒแƒšแƒแƒ— แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ”แƒ‘แƒ˜. WEP - แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก RC4 แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก แƒจแƒ˜แƒคแƒ แƒก, แƒกแƒแƒ˜แƒ“แƒฃแƒ›แƒšแƒ แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜ แƒแƒ แƒ˜แƒก แƒ“แƒแƒจแƒ˜แƒคแƒ•แƒ แƒ˜แƒก แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒ˜แƒฃแƒฆแƒ”แƒ‘แƒšแƒแƒ“ แƒ˜แƒ—แƒ•แƒšแƒ”แƒ‘แƒ แƒ—แƒแƒœแƒแƒ›แƒ”แƒ“แƒ แƒแƒ•แƒ” แƒ™แƒ แƒ˜แƒžแƒขแƒแƒ’แƒ แƒแƒคแƒ˜แƒ˜แƒก แƒกแƒแƒ›แƒงแƒแƒ แƒแƒจแƒ˜. TKIP - แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ WPA-แƒจแƒ˜, CKIP - WPA2-แƒจแƒ˜. TKIP+CKIP - แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒงแƒแƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ”แƒ‘แƒจแƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒกแƒแƒช แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒแƒ— WPA แƒ“แƒ WPA2 แƒฃแƒ™แƒแƒœแƒ แƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒแƒ“แƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒกแƒแƒ›แƒ˜ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒžแƒแƒ•แƒแƒ— แƒ›แƒแƒ แƒขแƒแƒฎแƒ”แƒšแƒ WEP แƒœแƒ˜แƒจแƒแƒœแƒ˜:

[WEP]

แƒ แƒแƒ’แƒแƒ แƒช แƒ–แƒ”แƒ›แƒแƒ— แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ—, แƒ”แƒก แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜แƒ แƒ˜แƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒแƒ  แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒแƒ— แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ  แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ“แƒ แƒ“แƒแƒจแƒ˜แƒคแƒ•แƒ แƒ˜แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“ แƒ˜แƒ’แƒ˜แƒ•แƒ”แƒ.

แƒแƒฎแƒšแƒ แƒ’แƒแƒœแƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— แƒ”แƒก แƒคแƒ แƒฉแƒฎแƒ˜แƒšแƒ˜:

[ESS]

แƒ˜แƒ’แƒ˜ Wi-Fi แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒ แƒ”แƒŸแƒ˜แƒ›แƒ˜ แƒแƒœ Wi-Fi แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒขแƒแƒžแƒแƒšแƒแƒ’แƒ˜แƒ. แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒฎแƒ•แƒ“แƒ”แƒ— BSS (Basic Service Set) แƒ แƒ”แƒŸแƒ˜แƒ›แƒก - แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒแƒ แƒ˜แƒก แƒ”แƒ แƒ—แƒ˜ แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—แƒแƒช แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜ แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒแƒ‘แƒ”แƒœ. แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒžแƒแƒ•แƒแƒ— แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ• แƒฅแƒกแƒ”แƒšแƒ”แƒ‘แƒจแƒ˜. แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ”แƒ‘แƒ˜ แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒšแƒแƒ™แƒแƒšแƒฃแƒ แƒ˜ แƒฅแƒกแƒ”แƒšแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒšแƒแƒ“, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜แƒก - ESS-แƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒ. IBSSs (แƒ“แƒแƒ›แƒแƒฃแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜) แƒขแƒ˜แƒžแƒ˜ แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒก, แƒ แƒแƒ› แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ แƒแƒ แƒ˜แƒก Peer-to-Peer แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ˜.

แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒœแƒแƒฎแƒแƒ— WPS แƒ“แƒ แƒแƒจแƒ:

[WPS]

WPS (Wi-Fi Protected Setup) แƒแƒ แƒ˜แƒก แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜ Wi-Fi แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒœแƒแƒฎแƒ”แƒ•แƒ แƒแƒ“ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒแƒœ แƒจแƒ”แƒแƒฅแƒ•แƒก 8-แƒกแƒ˜แƒ›แƒ‘แƒแƒšแƒแƒ˜แƒแƒœ แƒžแƒแƒ แƒแƒšแƒก แƒแƒœ แƒแƒญแƒ”แƒ แƒก แƒฆแƒ˜แƒšแƒแƒ™แƒก แƒ แƒแƒฃแƒขแƒ”แƒ แƒ–แƒ”. แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜ แƒแƒ แƒ˜แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒขแƒ˜แƒžแƒ˜แƒก แƒ“แƒ แƒ”แƒก แƒ•แƒ”แƒšแƒ˜ แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ”แƒ‘แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜แƒ—, แƒ’แƒ˜แƒ แƒฉแƒ”แƒ•แƒ— แƒ’แƒแƒ“แƒแƒฎแƒ•แƒ˜แƒ“แƒ”แƒ— แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒฃแƒš แƒžแƒแƒœแƒ”แƒšแƒ–แƒ” แƒ“แƒ แƒ’แƒแƒ›แƒแƒ แƒ—แƒแƒ— WPS แƒฌแƒ•แƒ“แƒแƒ›แƒ. แƒคแƒแƒฅแƒขแƒ˜แƒ, แƒ แƒแƒ› แƒฎแƒจแƒ˜แƒ แƒแƒ“ 8-แƒœแƒ˜แƒจแƒœแƒ PIN-แƒ˜แƒก แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒ•แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ MAC แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜แƒ—, แƒแƒœ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ›แƒ˜แƒกแƒ˜ แƒ“แƒแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒ—แƒ•แƒแƒšแƒกแƒแƒฉแƒ˜แƒœแƒ แƒ“แƒ แƒแƒจแƒ˜, แƒ แƒ˜แƒ—แƒแƒช แƒ•แƒ˜แƒœแƒ›แƒ”แƒก แƒแƒ แƒแƒ™แƒ”แƒ—แƒ˜แƒšแƒกแƒ˜แƒœแƒ“แƒ˜แƒกแƒ˜แƒ”แƒ แƒแƒ“ แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ˜แƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒแƒก.

6. แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒก แƒ“แƒ แƒ’แƒแƒ แƒฉแƒ”แƒ•แƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ

แƒ˜แƒ›แƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ”, แƒ แƒแƒช แƒ–แƒ”แƒ›แƒแƒ— แƒ’แƒแƒ•แƒแƒ แƒ™แƒ•แƒ˜แƒ”แƒ—, แƒฉแƒ•แƒ”แƒœ แƒแƒฆแƒ•แƒฌแƒ”แƒ แƒ— แƒ แƒ แƒ›แƒแƒฎแƒ“แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ™แƒšแƒแƒกแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—:

/* ัั…ะตะผะฐ ะฐัƒั‚ะตะฝั‚ะธั„ะธะบะฐั†ะธะธ */
enum class AuthMethod {
    WPA3,
    WPA2,
    WPA, // Wi-Fi Protected Access
    OTHER, // ะฒะบะปัŽั‡ะฐะตั‚ ะฒ ัะตะฑั Shared Key Authentication ะธ ะดั€. ะธัะฟะพะปัŒะทัƒัŽั‰ะธะต mac-address-based ะธ WEP
    CCKM, // Cisco
    OPEN // Open Authentication. ะœะพะถะตั‚ ะฑั‹ั‚ัŒ ัะพ ัะบั€ั‹ั‚ั‹ะผ Captive Portal Detection - ะทะฐะฟั€ะพั ะฐัƒั‚ะตะฝั‚ะธั„ะธะบะฐั†ะธะธ ั‡ะตั€ะตะท ะฑั€ะฐัƒะทะตั€
}

/* ะฐะปะณะพั€ะธั‚ะผ ะฒะฒะพะดะฐ ะบะปัŽั‡ะตะน */
enum class KeyManagementAlgorithm {
    IEEE8021X, // ะฟะพ ัั‚ะฐะฝะดะฐั€ั‚ัƒ
    EAP, // Extensible Authentication Protocol, ั€ะฐััˆะธั€ัะตะผั‹ะน ะฟั€ะพั‚ะพะบะพะป ะฐัƒั‚ะตะฝั‚ะธั„ะธะบะฐั†ะธะธ
    PSK, // Pre-Shared Key โ€” ะบะฐะถะดั‹ะน ัƒะทะตะป ะฒะฒะพะดะธั‚ ะฟะฐั€ะพะปัŒ ะดะปั ะดะพัั‚ัƒะฟะฐ ะบ ัะตั‚ะธ
    WEP, // ะฒ WEP ะฟะฐั€ะพะปัŒ ัะฒะปัะตั‚ัั ะบะปัŽั‡ะพะผ ัˆะธั„ั€ะพะฒะฐะฝะธั (No auth key)
    SAE, // Simultaneous Authentication of Equals - ะผะพะถะตั‚ ะฑั‹ั‚ัŒ ะฒ WPA3
    OWE, // Opportunistic Wireless Encryption - ะฒ ั€ะพัƒั‚ะตั€ะฐั… ะฝะพะฒั‹ั… ะฟะพะบะพะปะตะฝะธะน, ะฟัƒะฑะปะธั‡ะฝั‹ั… ัะตั‚ัั… ั‚ะธะฟะฐ OPEN
    NONE // ะผะพะถะตั‚ ะฑั‹ั‚ัŒ ะฑะตะท ัˆะธั„ั€ะพะฒะฐะฝะธั ะฒ OPEN, OTHER
}

/* ะผะตั‚ะพะด ัˆะธั„ั€ะพะฒะฐะฝะธั */
enum class CipherMethod {
    WEP, // Wired Equivalent Privacy, ะะฝะฐะปะพะณ ัˆะธั„ั€ะพะฒะฐะฝะธั ั‚ั€ะฐั„ะธะบะฐ ะฒ ะฟั€ะพะฒะพะดะฝั‹ั… ัะตั‚ัั…
    TKIP, // Temporal Key Integrity Protocol
    CCMP, // Counter Mode with Cipher Block Chaining Message Authentication Code Protocol,
    // ะฟั€ะพั‚ะพะบะพะป ะฑะปะพั‡ะฝะพะณะพ ัˆะธั„ั€ะพะฒะฐะฝะธั ั ะบะพะดะพะผ ะฐัƒั‚ะตะฝั‚ะธั‡ะฝะพัั‚ะธ ัะพะพะฑั‰ะตะฝะธั ะธ ั€ะตะถะธะผะพะผ ัั†ะตะฟะปะตะฝะธั ะฑะปะพะบะพะฒ ะธ ัั‡ะตั‚ั‡ะธะบะฐ
    // ะฝะฐ ะพัะฝะพะฒะต AES
    NONE // ะผะพะถะตั‚ ะฑั‹ั‚ัŒ ะฑะตะท ัˆะธั„ั€ะพะฒะฐะฝะธั ะฒ OPEN, OTHER
}

/* ะฝะฐะฑะพั€ ะผะตั‚ะพะดะพะฒ ัˆะธั„ั€ะพะฒะฐะฝะธั ะธ ะฟั€ะพั‚ะพะบะพะปะพะฒ, ะฟะพ ะบะพั‚ะพั€ั‹ะผ ะผะพะถะตั‚ ั€ะฐะฑะพั‚ะฐั‚ัŒ ั‚ะพั‡ะบะฐ */
data class Capability(
    var authScheme: AuthMethod? = null,
    var keyManagementAlgorithm: KeyManagementAlgorithm? = null,
    var cipherMethod: CipherMethod? = null
)

/* ะ ะตะถะธะผ ั€ะฐะฑะพั‚ั‹ WiFi (ะธะปะธ ั‚ะพะฟะพะปะพะณะธั ัะตั‚ะตะน WiFi) */
enum class TopologyMode {
    IBSS, // ะญะฟะธะทะพะดะธั‡ะตัะบะฐั ัะตั‚ัŒ (Ad-Hoc ะธะปะธ IBSS โ€“ Independent Basic Service Set).
    BSS, // ะžัะฝะพะฒะฝะฐั ะทะพะฝะฐ ะพะฑัะปัƒะถะธะฒะฐะฝะธั Basic Service Set (BSS) ะธะปะธ Infrastructure Mode.
    ESS // ะ ะฐััˆะธั€ะตะฝะฝะฐั ะทะพะฝะฐ ะพะฑัะปัƒะถะธะฒะฐะฝะธั ESS โ€“ Extended Service Set.
}

แƒแƒฎแƒšแƒ แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒแƒ— แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ•แƒ”แƒšแƒก:


private fun parseCapabilities(capabilitiesString: String): List < Capability > {
    val capabilities: List < Capability > = capabilitiesString
        .splitByBrackets()
        .filter {
            !it.isTopology() && !it.isWps()
        }
        .flatMap {
            parseCapability(it)
        }
    return
        if (!capabilities.isEmpty()) {
            capabilities
        } else {
            listOf(Capability(AuthMethod.OPEN, KeyManagementAlgorithm.NONE, CipherMethod.NONE))
        }
}

private fun parseCapability(part: String): List < Capability > {
    if (part.contains("WEP")) {
        return listOf(Capability(
            AuthMethod.OTHER,
            KeyManagementAlgorithm.WEP,
            CipherMethod.WEP
        ))
    }

    val authScheme = when {
        part.contains("WPA3") - > AuthMethod.WPA3
        part.contains("WPA2") - > AuthMethod.WPA2
        part.contains("WPA") - > AuthMethod.WPA
        else - > null
    }

    val keyManagementAlgorithm = when {
        part.contains("OWE") - > KeyManagementAlgorithm.OWE
        part.contains("SAE") - > KeyManagementAlgorithm.SAE
        part.contains("IEEE802.1X") - > KeyManagementAlgorithm.IEEE8021X
        part.contains("EAP") - > KeyManagementAlgorithm.EAP
        part.contains("PSK") - > KeyManagementAlgorithm.PSK
        else - > null
    }

    val capabilities = ArrayList < Capability > ()
    if (part.contains("TKIP") || part.contains("CCMP")) {
        if (part.contains("TKIP")) {
            capabilities.add(Capability(
                authScheme ? : AuthMethod.OPEN,
                keyManagementAlgorithm ? : KeyManagementAlgorithm.NONE,
                CipherMethod.TKIP
            ))
        }
        if (part.contains("CCMP")) {
            capabilities.add(Capability(
                authScheme ? : AuthMethod.OPEN,
                keyManagementAlgorithm ? : KeyManagementAlgorithm.NONE,
                CipherMethod.CCMP
            ))
        }
    } else if (authScheme != null || keyManagementAlgorithm != null) {
        capabilities.add(Capability(
            authScheme ? : AuthMethod.OPEN,
            keyManagementAlgorithm ? : KeyManagementAlgorithm.NONE,
            CipherMethod.NONE
        ))
    }

    return capabilities
}

private fun parseTopologyMode(capabilitiesString: String): TopologyMode ? {
    return capabilitiesString
        .splitByBrackets()
        .mapNotNull {
            when {
                it.contains("ESS") - > TopologyMode.ESS
                it.contains("BSS") - > TopologyMode.BSS
                it.contains("IBSS") - > TopologyMode.IBSS
                else - > null
            }
        }
        .firstOrNull()
}

private fun parseWPSAvailable(capabilitiesString: String): Boolean {
    return capabilitiesString
        .splitByBrackets()
        .any {
            it.isWps()
        }
}

private fun String.splitByBrackets(): List < String > {
    val m = Pattern.compile("[(.*?)]").matcher(this)
    val parts = ArrayList < String > ()
    while (m.find()) {
        parts.add(m.group().replace("[", "").replace("]", ""))
    }
    return parts
}

private fun String.isTopology(): Boolean {
    return TopologyMode.values().any {
        this == it.name
    }
}

private fun String.isWps(): Boolean {
    return this == "WPS"
}

8. แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜

แƒฅแƒกแƒ”แƒšแƒก แƒ“แƒแƒ•แƒแƒ—แƒ•แƒแƒšแƒ˜แƒ”แƒ แƒ”แƒ‘ แƒ“แƒ แƒ’แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ— แƒ แƒแƒช แƒ•แƒ˜แƒžแƒแƒ•แƒ”. แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒ Log.d-แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ— แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ’แƒแƒ›แƒแƒขแƒแƒœแƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜:

Capability of Home-Home [WPA2-PSK-CCMP][ESS][WPS]
...
capabilities=[Capability(authScheme=WPA2, keyManagementAlgorithm=PSK, cipherMethod=CCMP)], topologyMode=ESS, availableWps=true

แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ™แƒแƒ“แƒ˜แƒ“แƒแƒœ แƒฅแƒกแƒ”แƒšแƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ˜ แƒ’แƒแƒ›แƒแƒฃแƒ™แƒ•แƒšแƒ”แƒ•แƒ”แƒšแƒ˜ แƒ“แƒแƒ แƒฉแƒ. แƒ›แƒ” แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ•แƒ˜แƒขแƒงแƒ•แƒ˜, แƒ แƒแƒ› แƒ›แƒแƒ‘แƒ˜แƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ˜แƒก OS-แƒ“แƒแƒœ แƒจแƒ”แƒœแƒแƒฎแƒฃแƒšแƒ˜ แƒžแƒแƒ แƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒฌแƒแƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒแƒ“, แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— root แƒฃแƒคแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒคแƒแƒ˜แƒšแƒฃแƒ แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒซแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒกแƒฃแƒ แƒ•แƒ˜แƒšแƒ˜, แƒ แƒแƒ› แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒ— wpa_supplicant.conf. แƒ—แƒฃ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒšแƒแƒ’แƒ˜แƒ™แƒ แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒžแƒแƒ แƒแƒšแƒ˜แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒแƒก แƒ’แƒแƒ แƒ”แƒ“แƒแƒœ, แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒก แƒ™แƒšแƒแƒกแƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ— android.net.wifi.WifiManager.

แƒ›แƒแƒ“แƒšแƒแƒ‘แƒ แƒ”แƒ’แƒแƒ  แƒžแƒแƒœแƒแƒ›แƒแƒ แƒ”แƒ•แƒ˜ แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ“แƒแƒœแƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ—แƒฃ แƒคแƒ˜แƒฅแƒ แƒแƒ‘แƒ—, แƒ แƒแƒ› แƒ แƒแƒ˜แƒ›แƒ”แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ แƒแƒœ แƒ’แƒแƒ›แƒแƒกแƒฌแƒแƒ แƒ”แƒ‘แƒแƒ แƒกแƒแƒญแƒ˜แƒ แƒ, แƒ“แƒแƒฌแƒ”แƒ แƒ”แƒ— แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ”แƒ‘แƒจแƒ˜ :)

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ