Почему показания скорости и полосы пропускания WiFi не коррелируют? - PullRequest
0 голосов
/ 21 ноября 2018

Я хочу получить «скорость» для моего соединения WiFi.

Из класса NetworkCapabilities я получаю:

Link downstream bandwidth: 1048576 Kbps
Link upstream bandwidth:   1048576 Kbps

Однако, используя класс WiFiInfo, я получаю:

Link speed:                200000 Kbps

Почему значения отличаются?

Из моего исследования я пришел к выводу, что класс NetworkCapabilities на самом деле не ИЗМЕРЯЕТ пропускную способность - он просто возвращает ОЖИДАЕМЫЕ значения для обнаруженной технологии (WiFi,сотовый и т. д.).Я думаю, что WiFiInfo делает то же самое.Я запускал код много раз в течение длительного периода времени и получил те же значения, которые вы видите выше.


Код

Вот код с NetworkCapabilities:

val connectivityManager = context.getSystemService(ConnectivityManager::class.java)    

val networkCapabilities: NetworkCapabilities?
            get() = connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork)

    networkCapabilities?.linkDownstreamBandwidthKbps // 1048576
    networkCapabilities?.linkUpstreamBandwidthKbps   // 1048576

Вот код с WiFiInfo:

val wifiManager = context.getSystemService(WifiManager::class.java)
wifiManager.connectionInfo.linkSpeed // returns 200 Mbps
...