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

Android 获取WIFI和移动数据的信号强度,android,performance,connection,switch-statement,wifi,Android,Performance,Connection,Switch Statement,Wifi,在我的应用程序中,我需要检查WiFi和移动数据的连接速度,然后进行比较,然后切换到速度最高的网络 那么,如何获得wifi和移动设备的速度或最佳信号强度呢 数据 如何按编程方式关闭和打开一个 请帮帮我。 请提供一个示例。Wifi: WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE); int linkSpeed = wifiManager.getConnectionInfo(

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

  • 那么,如何获得wifi和移动设备的速度或最佳信号强度呢 数据
  • 如何按编程方式关闭和打开一个
请帮帮我。 请提供一个示例。Wifi:

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连接

以前从未这样做过,但这可能会对您有所帮助。剩下的工作应该通过检查NetworkManager+连接速度测试来完成。希望它能帮助您访问任务前的WIFI状态,更改WIFI状态,然后您可以在活动类中使用以下内容:wifiManager.setWifiEnabled(false);请记住,信号强度是负值。用于移动信号强度检查的代码仅适用于和API级别17及以上。@pepe pa如何确定连接过低?(当连接信号过低时,我想停止下载)使用4G时,无法将错误cash
android.telephony.CellInfoLte转换为android.telephony.CellInfoGsm