Страница 1 из 1

Шаг 2. Wi-Fi

СообщениеДобавлено: 26 ноя 2012, 20:14
EgorovAD MEPhI
Основное API для управления Wi-Fi находится в классе an-droid.net.wifi.WifiManager. Получить экземпляр класса можно вызовом Context.getSystemService (Context.WIFI_SERVICE).
Возможности работы с Wi-Fi:
    • проверка состояния адаптера Wi-Fi (включено, отключено и т.д.);
    • изменение состояния Wi-Fi;
    • проверка состояния подключения (подключено, отключено и т.д.);
    • поиск точек доступа (сканирование);
    • подключение к точке;
    • чтение и изменение списка известных сетей;
    • выполнение DHCP-запроса;
    • установка WifiLock. WiFiLock позволяет принуди-тельно оставлять Wi-Fi включенным при переходе телефона в режим ожидания.

Приведем код, устанавливающий соединение с сетью, защи-щенной WPA-PSK. До выполнения этого кода необходимо удостовериться, что Wi-Fi включен или включить его.
Код: выделить все
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiConfiguration wc = new WifiConfiguration();
wc.SSID = "\"SSIDName\"";
wc.preSharedKey = "\"password\"";
wc.hiddenSSID = true;   
wc.status = WifiConfiguration.Status.ENABLED;       
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
int id = wifi.addNetwork(wc);
boolean success = wifi.enableNetwork(id, true);


В коде создается экземпляр класса android.net.wifi.WifiConfiguration со всеми необходимыми параметрами выбранной сети.
Затем полученная конфигурация добавляется в список известных сетей, при этом запоминаем, какой id был ей присвоен. Остается только подключиться к выбранной сети по запомненному id!
Обратите внимание, что SSID и ключ шифрования должны быть взяты в двойные кавычки!
При работе с Wi-Fi скорее всего могут понадобиться разрешения на доступ к состоянию Wi-Fi ACCESS_WIFI_STATE и на его изменение CHANGE_WIFI_STATE.