Har*_*hah 4 android signal-strength android-connectivitymanager
我想检测手机的互联网连接速度是慢速还是高速。
现在他们已经弃用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();
Run Code Online (Sandbox Code Playgroud)
首先,这是一种指导性方法,而不是对问题的直接回答。
\nint signalStrength = networkCapabilities.getSignalStrength();\nRun Code Online (Sandbox Code Playgroud)\n文档:
\n\n\n这是一个有符号整数,值越高表示信号越强。确切的单位取决于承载者。例如,Wi-Fi 使用与 wifi 代码报告的相同的 RSSI 单位。
\n
这意味着signalStrength持有与信号承载相关的值;例如,如果承载是 WiFi,则将signalStrength反映相同的 WiFi RSSI 单位。
\n\nRSSI 或 \xe2\x80\x9c 接收信号强度指示器,\xe2\x80\x9d 是衡量您的设备从接入点或路由器接收信号的能力的指标。它\xe2\x80\x99 是一个值,可用于确定是否有足够的信号来获得良好的无线连接。
\n
因此,您需要将这些单位映射到某些质量指标,以了解信号是否弱/强。这是依赖于通信/信号而不是编程的观点...这个线程以及这个线程可能会在 WiFi 承载的情况下帮助你。
\n但您需要根据其他类型的信号承载者的 RSSI 单位以同样的方式自定义此质量级别。
\n例如,GSM 信号您可以使用CellSignalStrengthGsm,它具有getRssi()
CellSignalStrengthLte用于LTE等。
您还可以从 android.telephony API 的类中获取信号强度级别SignalStrength...有一种getLevel()方法可以返回 0 到 4 之间的整数,表示一般信号质量。在这里你可以找到一个倾听者。
| 归档时间: |
|
| 查看次数: |
2334 次 |
| 最近记录: |