获取WIFI和移动数据的信号强度

15

在我的应用程序中,我需要检查WiFi和移动数据的连接速度,然后进行比较,然后切换到速度最快的网络。

  • 那么我该如何获取WiFi和移动数据的速度或最佳信号强度?
  • 我该如何通过程序将其中一个关闭并将另一个打开?

请帮帮我。 提供示例会很有帮助。


以前从未做过这个,但也许这可以帮助你一点:http://mobisocial.stanford.edu/news/2011/03/control-3g-interface-with-your-own-application-on-andriod-phone/。其余的工作应该通过检查NetworkManager和连接速度测试来完成。 希望能有所帮助。 - Pawel Cala
1个回答

33

无线网络:

WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
int linkSpeed = wifiManager.getConnectionInfo().getRssi();

移动设备上也应该可以正常运行:

TelephonyManager telephonyManager =        (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);
CellInfoGsm cellinfogsm = (CellInfoGsm)telephonyManager.getAllCellInfo().get(0);
CellSignalStrengthGsm cellSignalStrengthGsm = cellinfogsm.getCellSignalStrength();
cellSignalStrengthGsm.getDbm();

那么,您应该比较这些信号的水平,如果WIFI信号更好,请保持其开启,但如果移动信号更好,请断开WIFI连接。


4
请添加权限ACCESS_WIFI_STATE和CHANGE_WIFI_STATE,然后您就可以在活动类中使用以下代码:wifiManager.setWifiEnabled(false); - pepe-pa
4
请记住,信号强度是一个负值。 - pepe-pa
7
用于检查手机信号强度的代码仅适用于API级别17及以上。 - Shailendra
2
@pepe-pa 当连接信号太弱时,我们如何确定?(我希望在信号过弱时停止下载) - Karthikeyan Ve
1
使用4G时出现错误:android.telephony.CellInfoLte无法强制转换为android.telephony.CellInfoGsm - vuhung3990
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接