Я пишу приложение, которое подключается к устройству с поддержкой Wi-Fi для отправки полезной нагрузки конфигурации.
Из соображений экономии энергии это устройство открывает свою точку доступа только в течение нескольких секунд каждые две минуты.
Я выполнил рекомендации по подключению к этой сети через Android SDK, выполнив следующие действия:
1 - Сканирование сетей и поиск имени устройства в приемнике вещания
2 - Подключиться к сети и прослушивать трансляции изменений сети
3 - Откройте сокет и отправьте полезную нагрузку
Поскольку точка доступа устройства не всегда включена и, таким образом, видна, я сканирую непрерывно, то есть, когда я получаю результаты сканирования и не могу найти свое устройство, я немедленно запускаю новое сканирование.
Как только я обнаруживаю точку доступа, я вызываю «enableNetwork» в WifiManager со вторым параметром, установленным в «true», чтобы инициировать соединение.
Кажется, это работает, когда через несколько миллисекунд я получаю широковещательную рассылку, сообщающую, что я подключен к сети.
Дело в том, что я немедленно открываю сокет, и эта часть не работает. Я полагаю, что это не удается, потому что процесс сканирования сообщает AP слишком поздно. Есть светодиод, сообщающий, когда он включен, и сканирование сообщает имя точки доступа через несколько секунд.
Мой вопрос: могу ли я что-нибудь сделать, чтобы ускориться?
Если процесс сканирования слишком медленный, поможет ли вместо этого спам функция «enableNetwork», чтобы попытаться подключиться к сети, даже если это не было обнаружено при предыдущем сканировании?
Я не знаю, как работает протокол Wi-Fi и может ли Android это принять.