Главная » Разработка для Android » Отслеживание соединения по Wi-Fi

0

WifiManager транслирует Намерения каждый раз, когда состояние  под- ключения  к сети Wi-Fi  изменяется. При этом используется действие, за- данное с помощью одной из констант класса WifiManager.

WIFI_STATE_CHANGED_ACTION.  Сигнализирует, что аппарат- ный статус Wi-Fi изменен, оперируя такими состояниями, как ???????, ???????????, ???????? и ??????????.  Намерение содержит  два дополни- тельных  параметра  с ключами  EXTRA_WIFI_STATE и EXTRA_ PREVIOUS_STATE, которые предоставляют текущее и предыдущее состояние соответственно.

SUPPLICANT_CONNECTION_CHANGE_ACTION. Это Намерение передается  каждый  раз, когда меняется  состояние  соединения  с ак- тивной точкой доступа. Оно срабатывает, если установлено новое соединение  или уже существующее  разорвано.  В первом случае до- полнительный параметр EXTRA_NEW_STATE будет иметь значение true.

NETWORK_STATE_CHANGED_ACTION. Срабатывает при изме- нении состояния подключения к сети Wi-Fi. Это Намерение содержит два дополнительных параметра: первый, EXTRA_NETWORK_INFO, включает объект NetworkInfo, описывающий текущее состояние соединения, второй, EXTRA_BSSID, передает идентификатор BSSID, принадлежащий точке доступа, к которой вы подключены.

RSSI_CHANGED_ACTION. Вы можете отслеживать текущий  уро- вень сигнала в сети Wi-Fi, к которой подключены, используя Намере- ние с действием RSSI_CHANGED_ACTION. Оно содержит дополни- тельный целочисленный параметр EXTRA_NEW_RSSI с показателем уровня сигнала. Чтобы воспользоваться этим значением, необходимо конвертировать его с учетом указанной шкалы, вызвав статический метод calculateSignalLevel из объекта WifiManager.

Получение информации об активном соединении

Чтобы получить информацию о статусе только что установленного ак- тивного сетевого соединения, используйте метод getConnectionInfo из объ- екта WifiManager. Возвращаемый этим методом объект WifiInfo содержит идентификаторы SSID, BSSID,  MAC- и IP-адрес  текущей точки доступа, а также скорость соединения  и уровень сигнала.

В листинге 13.17 демонстрируется процесс получения информации об активном соединении, работающем через Wi-Fi.

Листинг 13.17. Запросы к активному  сетевому соединению

WifiInfo info = wifi.getConnectionInfo();

if (info.getBSSID() != null) {

int strength = WifiManager.calculateSignalLevel(info.getRssi(), 5);

int speed = info.getLinkSpeed();

String units = WifiInfo.LINK_SPEED_UNITS; String ssid = info.getSSID();

String cSummary = String.format("Connected to %s at %s%s. Strength %s/5", ssid, speed, units, strength);

}

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии