В нашем приложении мы обрабатываем подключение Wi-Fi к устройству, которое передает свою собственную точку беспроводного доступа (без подключения к Интернету) для прямой связи.
Он отлично работает на всех наших тестовых устройствах; однако мы получаем отчеты от пользователей о том, что на некоторых устройствах Samsung (Galaxy S4, Galaxy Note 3) есть настройка в настройках Wi-Fi под названием "Auto Network Switch", добавленная Samsung, которая ищет "нестабильные" сети, и автоматически отключится и вернется к мобильным данным. К сожалению, поскольку у нашего устройства нет подключения к Интернету, Samsung сообщает об этом как о нестабильной сети и немедленно отключается.
У меня нет ни одного из этих устройств, доступных для тестирования, поэтому мне любопытно, знает ли кто-нибудь об этой проблеме или знает, как либо программно отключить этот параметр, либо обойти его?
Код, который мы используем для соединения:
/**
* Attempt to connect to an open wifi network with the given SSID
* @param ssid the SSID of the unsecured wireless network to connect to
*/
public static void connectToOpenNetwork (String ssid) {
WifiManager mgr = getManager();
WifiConfiguration configuration = getOpenWifiConfiguration(ssid);
mgr.addNetwork(configuration);
mgr.saveConfiguration();
int res = findOpenNetworkId(ssid);
if (res != INVALID_NETWORK_ID) {
mgr.enableNetwork(res, true);
mgr.reconnect();
} else {
Log.e(TAG, "Received request to connect to network " + ssid + " but the network was not found in the configurations.");
}
}
/**
* Get a WifiConfiguration object configured for an unsecured wireless network with the
* given SSID.
* @param ssid the SSID of the network to configure
* @return a WifiConfiguration object that can be passed to
* {@link WifiManager#addNetwork(android.net.wifi.WifiConfiguration)}
*/
private static WifiConfiguration getOpenWifiConfiguration (String ssid) {
WifiConfiguration config = new WifiConfiguration();
config.SSID = "\"" + ssid + "\"";
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
return config;
}