从log中分析Android wifi连接状态及相关信息的方法

一、通过搜索Log中关键字 wpa_supplicant: wlan0: State 分析wifi连接过程:

04-11 10:01:32.080  9177  9177 D wpa_supplicant: wlan0: State: DISCONNECTED -> DISCONNECTED        //未连接
04-11 10:01:32.090  9177  9177 D wpa_supplicant: wlan0: State: DISCONNECTED -> DISCONNECTED        //未连接
04-11 10:01:32.090  9177  9177 D wpa_supplicant: wlan0: State: DISCONNECTED -> INTERFACE_DISABLED        //未连接 ->接口禁用
04-11 10:01:32.092  9177  9177 D wpa_supplicant: wlan0: State: INTERFACE_DISABLED -> DISCONNECTED        //接口禁用 -> 未连接
04-11 10:01:32.092  9177  9177 D wpa_supplicant: wlan0: State: DISCONNECTED -> DISCONNECTED        //未连接
04-11 10:01:32.123  9177  9177 D wpa_supplicant: wlan0: State: DISCONNECTED -> ASSOCIATING        //未连接 -> 配对
04-11 10:01:32.213  9177  9177 D wpa_supplicant: wlan0: State: ASSOCIATING -> ASSOCIATED        //重新配对,配对成功
04-11 10:01:32.215  9177  9177 D wpa_supplicant: wlan0: State: ASSOCIATED -> 4WAY_HANDSHAKE        //配对 -> 四次握手
04-11 10:01:32.222  9177  9177 D wpa_supplicant: wlan0: State: 4WAY_HANDSHAKE -> 4WAY_HANDSHAKE
04-11 10:01:32.223  9177  9177 D wpa_supplicant: wlan0: State: 4WAY_HANDSHAKE -> GROUP_HANDSHAKE
04-11 10:01:32.225  9177  9177 D wpa_supplicant: wlan0: State: GROUP_HANDSHAKE -> COMPLETED        建立连接

前5行我们可以理解为当前状态处于断开状态,第6~11行为从扫描到匹配,再到四次握手,最后连接成功。

二、从Log中搜索关键字 RSSI 获取当前连接wifi的状态及信息:

04-11 09:56:55.127  1279  4240 D AgpsApn : mDefaultNetworkcallback onCapabilitiesChanged: network=102, nc=[ Transports: WIFI Capabilities: NOT_METERED&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED&NOT_VCN_MANAGED LinkUpBandwidth>=12000Kbps LinkDnBandwidth>=60000Kbps TransportInfo: <SSID: <unknown ssid>, BSSID: 02:00:00:00:00:00, MAC: 02:00:00:00:00:00, IP: /192.168.4.217, Security type: 2, Supplicant state: COMPLETED, Wi-Fi standard: 5, RSSI: -52, Link speed: 180Mbps, Tx Link speed: 180Mbps, Max Supported Tx Link speed: 200Mbps, Rx Link speed: 6Mbps, Max Supported Rx Link speed: 200Mbps, Frequency: 5745MHz, Net ID: -1, Metered hint: false, score: 60, isUsable: true, CarrierMerged: false, SubscriptionId: -1, IsPrimary: 1, Trusted: true, Restricted: false, Ephemeral: false, OEM paid: false, OEM private: false, OSU AP: false, FQDN: <none>, Provider friendly name: <none>, Requesting package name: <none><none>MLO Information: , AP MLD Address: <none>, AP MLO Link Id: <none>, AP MLO Affiliated links: <none>> SignalStrength: -52 AdminUids: [1000] SSID: "dazhi-5G" UnderlyingNetworks: Null]

1、AgpsApn : mDefaultNetworkcallback onCapabilitiesChanged: 这是一个回调方法,当默认网络的能力发生变化时,它会被触发。

2、network=109: 这可能是网络的唯一标识符。

3、nc=[ ... ]: 这部分详细描述了网络的能力(Capabilities)和状态:

        Transports: WIFI: 这表示该网络是通过WiFi连接的。

        Capabilities: 列出了一系列的能力标志,包括:

                NOT_METERED: 表示此网络不收费或不计费。

                INTERNET: 表示此网络可以连接到互联网。

                NOT_RESTRICTED: 表示此网络没有限制。

                TRUSTED: 表示此网络是可信的。

                NOT_VPN: 表示此网络不是VPN连接。

                VALIDATED: 表示此网络已经验证过。

                NOT_ROAMING: 表示设备不在漫游状态。

                FOREGROUND: 表示此网络当前处于前台状态。

                NOT_CONGESTED: 表示网络没有拥塞。

                NOT_SUSPENDED: 表示网络没有被暂停。

                NOT_VCN_MANAGED: 表示此网络不是由VCN(可能是一个特定于供应商或地区的网络管理方案)管理的。

        LinkUpBandwidth>=12000Kbps, LinkDnBandwidth>=60000Kbps: 这些是上行和下行带宽的最小值。

        TransportInfo: 提供了更多关于WiFi连接的详细信息,包括SSID(网络名称)、BSSID(基本服务集标识符,即WiFi MAC地址)、IP地址、安全类型、Wi-Fi标准、信号强度(RSSI)、链接速度等。

        SignalStrength: -78: 这是WiFi信号的强度,数值越低,信号越弱。

        SSID: "GQ_TestRoom02_5G": 这是WiFi网络的名称。

从这段日志中,我们可以得出以下结论:

  • 设备正在通过WiFi连接到名为"dazhi-5G"的网络。
  • 该网络具有一系列特定的能力,包括连接到互联网、不受限制、可信等。
  • WiFi信号的强度为-52,这是一个非常好的信号强度,显示满格信号。

    <integer-array translatable="false" name="config_wifiRssiLevelThresholds">
                                                         <!-- RSSI              RSSI Level -->
        <item>-88</item>            <!-- (-infinity, -88)              0 -->
        <item>-77</item>            <!-- [-88, -77)                       1 -->
        <item>-66</item>            <!-- [-77, -66)                       2 -->
        <item>-55</item>            <!-- [-66, -55)                       3 -->
                                                         <!-- [-55, +infinity)             4 -->
    </integer-array>

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是 Kotlin 代码示例,用于检测 WiFi 连接状态的更改: ```kotlin import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.net.ConnectivityManager import android.net.NetworkCapabilities import android.net.NetworkInfo import android.net.NetworkRequest import android.net.wifi.WifiInfo import android.net.wifi.WifiManager import android.os.Build import android.util.Log class WifiStateReceiver : BroadcastReceiver() { private var wifiManager: WifiManager? = null private var connectivityManager: ConnectivityManager? = null private var networkCallback: ConnectivityManager.NetworkCallback? = null override fun onReceive(context: Context, intent: Intent) { wifiManager = context.getSystemService(Context.WIFI_SERVICE) as WifiManager connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager if (wifiManager?.isWifiEnabled == true) { Log.d(TAG, "WiFi is enabled.") if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { networkCallback = object : ConnectivityManager.NetworkCallback() { override fun onAvailable(network: android.net.Network) { super.onAvailable(network) Log.d(TAG, "WiFi is connected.") } override fun onLost(network: android.net.Network) { super.onLost(network) Log.d(TAG, "WiFi is disconnected.") } } val builder = NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) connectivityManager?.registerNetworkCallback(builder.build(), networkCallback!!) } else { context.registerReceiver(this, IntentFilter(WifiManager.NETWORK_STATE_CHANGED_ACTION)) } } else { Log.d(TAG, "WiFi is disabled.") } } companion object { private const val TAG = "WifiStateReceiver" } } ``` 在 `onReceive()` 方法,我们检查 WiFi 是否已启用。如果是,则根据设备的 Android 版本注册网络回调或广播接收器以监听网络状态更改。 如果 Android 版本大于或等于 N,我们将创建一个 `NetworkRequest` 并将其传递给 `registerNetworkCallback()` 方法以注册网络回调。在回调,我们将检查网络是否可用,并相应地记录连接或断开连接状态。 如果 Android 版本低于 N,则我们将注册一个广播接收器以侦听 `WifiManager.NETWORK_STATE_CHANGED_ACTION` 意图。在接收器,我们将检查网络信息是否可用,并相应地记录连接或断开连接状态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值