Android - получать уведомления при обнаружении новой точки доступа? - PullRequest
3 голосов
/ 23 ноября 2010

Предоставляет ли Android уведомление о нахождении вблизи новой сети Wifi? Будет ли устройство настроено для подключения к этой сети Wi-Fi, зависит от того, настроено ли для него устройство для этой конкретной сети Wi-Fi, но возможно ли получать уведомление при входе в любую новую сеть Wi-Fi?
Я видел класс WifiManager, но состояния внутри класса, кажется, не достигают того, что я пытаюсь сделать. Есть идеи?

1 Ответ

7 голосов
/ 23 ноября 2010

Используйте зарегистрированный BroadcastReceiver для получения намерений с действием: WifiManager.NETWORK_STATE_CHANGED_ACTION.

В этом BroadcastReceiver вы можете извлечь объект NetworkInfo из намерения:

NetworkInfo ni = (NetworkInfo) intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);

Затем обработайте ni.getState() для проверки подключений / отключений от сетей Wi-Fi.

Это то, что вы искали?


Редактировать после ответа

Так что, если вы хотите узнать, какие сети Wi-Fi доступны, используйте WifiManager.getScanResults () Это дает вам список ближайших точек доступа в Scanresult объектах.Они содержат SSID и BSSID точек доступа, которые являются соответственно их сетевым именем и MAC-адресом.

Вы можете получить эту информацию асинхронно, используя BroadcastReceiver, зарегистрированный для получения намерений с действием WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.Затем вы будете получать уведомления каждый раз, когда система выполняет сканирование Wi-Fi, и вы можете проверить, появился ли новый SSID (т.е. имя сети) с момента последнего сканирования.

И, наконец, если вы хотите сканировать чаще, чемсистема делает по умолчанию, вы можете запустить Wi-Fi сканирования, используя WifiManager.startScan().

...