我有一个套接字,使用Wifi或4G信号连接到TCP服务器,该信号每5分钟从服务器接收一次PING。但是,如果我在设备上关闭Wifi,我希望套接字检测到这一点并使用4g信号重新连接。 我想知道是否有办法将插座自动重新连接到4G,如果我超出了wifi的范围或者我关闭了wifi?
还有另外一种方法可以走另一条路(如果有无线网络,可以从4g到wifi吗?
答案 0 :(得分:1)
注册一个类BroadCastReceiver以开启或关闭WIFI:
IntentFilter filter = new IntentFilter();
filter.addAction("android.net.wifi.supplicant.CONNECTION_CHANGE");
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
boolean isConnected = intent.getBooleanExtra(WifiManager.EXTRA_SUPPLICANT_CONNECTED, false);
if (isConnected ) {
//Reconnect using Wifi.
} else {
//Reconnect using 4G.
}
}
}
registerReceiver(receiver, filter);
别忘了取消注册接收者:
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
关于额外的EXTRA_SUPPLICANT_CONNECTED,文档说明:
布尔值的查找键,指示是否连接到 请求者守护程序已获得或丢失。 true表示连接 现在存在。使用getBooleanExtra(String,boolean)检索它。
常数值:"已连接"