2015-12-03 136 views
0

我一直在努力的WiFi連接了一段時間。我可以使用Android設備打開WiFi熱點,並使用其他Android設備連接到它。Android連接到wifi熱點已經連接到其他無線網絡

但這裏有一個問題。我發現wifi狀態將斷開並重新連接到它已經記住的一個wifi,最後(我猜它發現熱點準備好時)再次斷開並重新連接到我的wifi熱點。這個過程花費了將近20〜30秒。

這裏是我的代碼:

private void connectToWiFiHotSpot() { 
    WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE); 
    mWifiConfig = new WifiConfiguration(); 
    mWifiConfig.SSID = "\"test5678\""; 
    mWifiConfig.preSharedKey = "\"12345678\""; 
    mWifiConfig.priority = 100000; 
    int res = wifiManager.addNetwork(mWifiConfig); 
    Log.d("WifiPreference", "add Network returned " + res); 
    wifiManager.disconnect(); 
    boolean isEnable = wifiManager.enableNetwork(res, true); 
    Log.d("WifiPreference", "enable Network returned " + isEnable); 
    wifiManager.reconnect(); 
} 

我的問題是有沒有什麼辦法讓我的設備連接到我的熱點直接,無需連接到它記住。加快並提高性能。

我已經嘗試設置高優先級,並刪除其他記得的WiFi配置不是我想要的。

任何幫助,我將不勝感激。

回答

1

好的,我找到了一個解決方案。

在我們添加指定的WiFi配置之前禁用所有其他配置的網絡。

WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE); 
    //disable others 
    for (WifiConfiguration wifiConfiguration: wifiManager.getConfiguredNetworks()) { 
     wifiManager.disableNetwork(wifiConfiguration.networkId); 
    } 

    mWifiConfig = new WifiConfiguration(); 
    mWifiConfig.SSID = "\"test5678\""; 
    mWifiConfig.preSharedKey = "\"12345678\""; 
    mWifiConfig.priority = 100000; 
    int res = wifiManager.addNetwork(mWifiConfig); 
    Log.d("WifiPreference", "add Network returned " + res); 
    wifiManager.disconnect(); 
    boolean isEnable = wifiManager.enableNetwork(res, true); 
    Log.d("WifiPreference", "enable Network returned " + isEnable); 
    wifiManager.reconnect(); 

它會直接連接到你指定的wifi,而不是連接到它首先記住的其他wifi。

並在最後,斷開連接到無線網絡後。不要忘記啓用其他無線網絡。

它將連接到它已連接到的WiFi。

for (WifiConfiguration config: wifiManager.getConfiguredNetworks()) { 
     wifiManager.enableNetwork(config.networkId, true); 

    } 
+0

工作就像一個魅力對我來說,謝謝 – Virthuss