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

0

Вы также можете использовать WifiManager для сканирования на на- личие точек доступа. Для этого предусмотрен  метод startScan.

Намерение с действием SCAN_RESULTS_AVAILABLE_ACTION будет транслироваться в асинхронном режиме, объявляя о завершении сканиро- вания и доступности  результатов.

Вызовите метод getScanResults, чтобы получить эти результаты в виде списка объектов  типа ScanResult. Все они будут содержать  информацию об обнаруженных точках доступа (скорость  соединения,  уровень сигнала, идентификатор SSID и поддерживаемые методы аутентификации).

В листинге  13.18 показано,  как инициировать обнаружение  точек до- ступа, в ходе которого с помощью уведомлений типа Toast  отображаются количество  найденных  точек и имя одной из них — той, у которой самый высокий уровень сигнала.

Листинг 13.18.

// Зарегистрируйте объект BroadcastReceiver, отслеживающий результаты сканирования.

registerReceiver(new BroadcastReceiver() {

@Override

public void onReceive(Context context, Intent intent) { List<ScanResult> results = wifi.getScanResults(); ScanResult bestSignal = null;

for (ScanResult result : results) {

if (bestSignal == null || WifiManager.compareSignalLevel(bestSignal.level,result.

level)<0)

bestSignal = result;

}

String toastText = String.format("%s networks found. %s is the strongest.",

results.size(), bestSignal.SSID);

Toast.makeText(getApplicationContext(), toastText, Toast.LENGTH_ LONG);

}

}, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));

// Запустите процесс сканирования.

wifi.startScan();

Управление настройками Wi-Fi

Вы можете использовать WifiManager для управления настройками установленного подключения и выбирать,  с какой  сетью устанавливать соединение.  Подключившись к сети, можно узнать дополнительную ин- формацию  и ее настройки.

Получите  список  текущих  сетевых  конфигураций с помощью  ме- тода getConfiguredNetworks. Результат будет состоять  из объектов  типа WifiConfiguration, включающих  идентификатор сети, SSID  и другие под- робности о каждой конфигурации.

Чтобы использовать конкретную  конфигурацию сети, вызовите  метод enableNetwork, передав ему сетевой идентификатор и значение  true  для параметра disableAllOthers, как показано в листинге 13.19.

Листинг 13.19. Активизация сетевого подключения

// Получите список доступных конфигураций

List<WifiConfiguration> configurations = wifi.getConfiguredNetworks();

// Получите идентификатор для первой сети из списка. if (configurations.size() > 0) {

int netID = configurations.get(0).networkId;

// Подключитесь к этой сети. boolean disableAllOthers = true; wifi.enableNetwork(netID, disableAllOtherstrue);

}

Создание конфигураций для сети Wi-Fi

Чтобы подключиться к сети по Wi-Fi, необходимо создать и заре- гистрировать для нее конфигурацию. Как правило,  ваши пользователи делают это сами с помощью  системных  настроек  для Wi-Fi.  Но ничего не мешает добавить эту возможность в собственное приложение или даже полностью заменить стандартную Активность для управления конфигура- цией Wi-Fi.

Сетевые конфигурации хранятся в виде объектов типа WifiConfiguration. Приведем список некоторых публичных полей, которые предоставляет этот класс:

BSSID — идентификатор BSSID для точки доступа;

SSID — идентификатор SSID конкретной  сети;

networkId — уникальный идентификатор, определяющий конфигу- рацию данной сети на текущем устройстве;

priority  — приоритет  сетевых конфигураций для сортировки  списка точек доступа, к которым можно подключиться;

status  — текущее  состояние  данного сетевого подключения; может иметь значение WifiConfiguration.Status.ENABLED, WifiConfiguration. Status.DISABLED или WifiConfiguration.Status.CURRENT.

Объект WifiConfiguration также содержит список поддерживаемых ме- тодов аутентификации и ключи, использованные ранее для проверки под- линности  при подключении к этой точке доступа.

Метод addNetwork позволяет  добавлять  новую конфигурацию в теку- щий список. Аналогичным  образом с помощью метода updateNetwork вы можете обновить  сетевую конфигурацию, передав в качестве  параметра объект WifiConfiguration, содержащий  идентификатор сети и значения, которые хотите изменить.

Можно воспользоваться методом removeNetwork для удаления конфи- гурации, передав в качестве параметра идентификатор сети.

Чтобы  сохранить  любые изменения,  внесенные  в сетевые настройки, нужно вызвать метод saveConfiguration.

Резюме

В этой главе вы узнали, как отслеживать и контролировать некоторые низкоуровневые функции для обеспечения связи, доступные в устройствах под управлением Android.

В данной главе рассмотрены принципы работы с Bluetooth, механизмы обеспечения  связи, отслеживания и изменения соединения  с Интернетом

и другими сетями. С помощью класса WifiManager вы научились  контро- лировать  подключение  устройства  к сети по Wi-Fi, считывая  ее состояние и конфигурацию.

В следующей главе вы узнаете, каким образом с помощью взаимодей- ствия с объектом SensorManager можно предоставить своим приложениям доступ к реальному  миру. Научитесь работать с аппаратными сенсорами, в частности  с компасом  и акселерометром, а также отслеживать и интер- претировать данные, полученные с их помощью.

Глава 14

ДАТЧИКИ

Содержание  главы

Использование объекта SensorManager.

Доступные типы датчиков.

Отслеживание состояния датчиков и интерпретация их показаний.

Использование компаса, акселерометра и датчиков ориентации.

Преобразование стандартной системы  координат  при вычислении положения в пространстве.

Управление вибрацией  устройства.

Современные мобильные  телефоны  — не просто устройства  для связи, подключенные к Интернету. Смартфоны с микрофонами, камерами, акселе- рометрами, компасами, датчиками температуры  и яркости способны «вос- принимать» окружающий мир, расширяя ваше собственное восприятие.

В следующих главах вы изучите работу с камерой и микрофоном, а в этой главе познакомитесь с датчиками внешней среды на устройствах под управ- лением Android.

Датчики,  следящие  за физическими свойствами  и состоянием  окру- жающей  среды, предоставляют инновационные способы для улучшения мобильных  приложений. Наличие в современных телефонах электронных компасов, датчиков равновесия, яркости  и близости  открывает  целый ряд новых возможностей для взаимодействия с устройством,  таких как допол- ненная  реальность  и ввод данных, основанный на перемещениях в про- странстве.

В этой главе вы также познакомитесь с датчиками в Android и объектом SensorManager, отслеживающим их состояние. Подробно рассмотрите воз- можности  акселерометра и датчиков ориентации, научитесь использовать их для определения изменений положения и ускорения устройства.  Это может быть особенно полезно при создании  интерфейсов, основанных  на движении,  это позволит  добавлять  новые измерения к вашим геолокаци- онным приложениям.

Вы также узнаете, как управлять вибрацией устройства, чтобы исполь- зовать обратный отклик в своих приложениях.

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

По теме:

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