Я хочу получить «скорость» для моего соединения 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