gpt4 book ai didi

android - 如何检测Android应用程序中的慢速互联网连接

转载 作者:行者123 更新时间:2023-12-04 23:57:42 27 4
gpt4 key购买 nike

我想检测手机是网速慢还是网速快。

现在他们已经弃用了 NetworkInfo 并建议我们应该使用 ConnectivityManager#getNetworkCapabilities 使用它我能够获得信号强度但无法弄清楚如何使用networkCapabilities.getSignalStrength()

返回的整数值

它返回一个整数值我得到这些值(-39、-71、-31)。我的问题是我们应该如何定义信号强度好/差。

这是我获取信号强度的代码:

ConnectivityManager cm = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
Network activeNetwork = cm.getActiveNetwork();
NetworkCapabilities networkCapabilities = cm.getNetworkCapabilities(activeNetwork);
int signalStrength = networkCapabilities.getSignalStrength();

最佳答案

首先,这是一种指导性方法,而不是对问题的直接回答。

int signalStrength = networkCapabilities.getSignalStrength();

文档:

This is a signed integer, with higher values indicating a stronger signal. The exact units are bearer-dependent. For example, Wi-Fi uses the same RSSI units reported by wifi code.

这意味着 signalStrength 持有一个与信号承载相关的值;例如,如果承载是 WiFi,则 signalStrength 将反射(reflect)相同的 WiFi RSSI 单位。

RSSI, or “Received Signal Strength Indicator,” is a measurement of how well your device can hear a signal from an access point or router. It’s a value that is useful for determining if you have enough signal to get a good wireless connection.

因此,您需要将这些单位映射到某种质量指标,以了解信号是弱还是强。这是通信/信号相关的,而不是编程的观点... This thread还有this one在 WiFi 承载的情况下可能会帮助您。

但您需要根据其 RSSI 单位同样地为其他类型的信号承载自定义此质量级别。

GSM 信号 例如你可以使用 CellSignalStrengthGsm其中有 getRssi()

CellSignalStrengthLte适用于 LTE 等。

您还可以从 android.telephony API 的 SignalStrength 获取信号强度级别类...有一个getLevel()方法返回一个从 0 到 4 的整数,表示一般信号质量。 Here你可以找到一个听众。

关于android - 如何检测Android应用程序中的慢速互联网连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65593185/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com