#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.