【问题标题】:How to detect slow internet connection in android app如何检测安卓应用程序中的慢速互联网连接
【发布时间】:2021-04-12 01:07:31
【问题描述】:

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

现在他们已弃用 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();

【问题讨论】:

    标签: android signal-strength android-connectivitymanager


    【解决方案1】:

    假设您认为2G很慢,您可以如下识别2G网络

    NetworkInfo network = connectivity.getActiveNetworkInfo();
    int netSubType = network.getSubtypeName();
    if(netSubType == TelephonyManager.NETWORK_TYPE_GPRS ||
        netSubType == TelephonyManager.NETWORK_TYPE_EDGE ||
        netSubType == TelephonyManager.NETWORK_TYPE_1xRTT) {
      //user is in slow network
    }
    

    有关更多此类常量值,请参阅TelephonyManager 类。

    【讨论】:

    • 现在他们已经弃用 NetworkInfo 并建议我们应该使用 ConnectivityManager#getNetworkCapabilities。这就是问题所在。
    【解决方案2】:

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

    int signalStrength = networkCapabilities.getSignalStrength();
    

    文档:

    这是一个有符号整数,数值越大表示信号越强。确切的单位取决于承载。例如,Wi-Fi 使用 wifi 代码报告的相同 RSSI 单位。

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

    RSSI 或“接收信号强度指示器”衡量您的设备从接入点或路由器接收信号的能力。该值有助于确定您是否有足够的信号来获得良好的无线连接。

    因此,您需要将这些单位映射到某个质量指标,以了解信号是弱还是强。这取决于通信/信号,而不是编程观点...This threadthis one 可能会在 WiFi 承载的情况下为您提供帮助。

    但您需要为其他类型的信号载体定制此质量级别,同样根据它们的 RSSI 单位。

    GSM 信号 例如你可以使用CellSignalStrengthGsm,它有getRssi()

    CellSignalStrengthLte 用于 LTE 等。

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

    【讨论】:

    • 抱歉回复晚了。感谢您的回答,让我关注此内容并为您更新
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 1970-01-01
    • 2020-09-19
    相关资源
    最近更新 更多