Есть ли какой-либо способ получать уведомления, когда известные сети SSIS wifi входят / выходят из зоны действия?

#android #notifications #android-wifi #wifimanager

#Android #уведомления #android-wifi #wifimanager

Вопрос:

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

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

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

Ответ №1:

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

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

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

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

1. Но если я не хочу сканировать вручную, как часто мне следует ожидать получения этой трансляции? (скажем, в секундах)

2. Когда Wi-Fi активен, вы будете получать эту трансляцию каждые несколько секунд. Но нет способа настроить этот интервал, и я предполагаю, что каждое производство может изменить этот интервал. Я бы рекомендовал ввести параметр X — «максимальная задержка между повторными сканированиями». Если вы не получаете никаких результатов сканирования в течение X секунд, вы принудительно выполняете повторное сканирование вручную.

3. ОК. Вот и все. последний вопрос: существует ли более конкретное событие для «Текущая сеть отключена»?

4. Вы должны прослушивать NETWORK_STATE_CHANGED_ACTION.