Есть ли способ получить уведомление, когда известные сети Wi-Fi SSIS попадают в/из диапазона?

Я хочу написать приложение, которое состоит в выполнении действий, когда известные Wi-Fi-сети попадают в диапазон или вне диапазона.

Например, скажем, моя домашняя сеть Wi-Fi SSIS - это "WifiHome", и я хочу сделать уведомление "Ты просто ушел из дома!". когда устройство больше не сможет обнаружить эту конкретную сеть.  (Или альтернативно - "Вы только что вошли домой", когда устройство повторно обнаруживает сигналы из этой сети).

Мой вопрос: Возможно ли прослушивание этих изменений без частого опроса списка доступных сетей?

Ответ 1

Вы должны прослушать широковещательное событие SCAN_RESULTS_AVAILABLE_ACTION. Это будет передаваться при каждом завершении сканирования Wi-Fi. Когда такое событие происходит, просто повторите итерацию результатов сканирования, которые могут быть получены с помощью WifiManager getScanResults.

Когда wi-fi активен, вы будете получать эту трансляцию каждые несколько секунд. Но нет способа настроить этот интервал, и я предполагаю, что каждый производитель может изменить этот интервал.

Вы можете вручную запускать wi-fi-сканирование с помощью WifiManager startScan.