2014-12-03 85 views
2

我有一个套接字连接到TCP服务器使用Wifi或4G信号,每5分钟从服务器接收一个PING。但是如果我在设备上关闭Wifi,我希望套接字检测到这一点并使用4g信号重新连接。 我想知道是否有一种方法可以自动将插座重新连接到4G,如果我离开wifi的范围或者如果我关闭了WiFi?自动重新连接插座从WiFi到4G

也就是有没有办法走另外一条路,以及(从4G技术连接WIFI如果WiFi可用

回答

1

注册一个inclass广播接收器收听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)检索它。

常数值:“连接”

+0

所以将这项工作如果无线网络连接上,但该设备没有连接到它?如果我走出wifi的范围... – 2014-12-03 21:34:05

+0

根据[文档](http://developer.android.com/reference/android/net/wifi/WifiManager.html#EXTRA_SUPPLICANT_CONNECTED),它应该。 – Storo 2014-12-03 21:39:09

+0

@ user3322270你试过了吗? – Storo 2014-12-03 23:13:26