Событие доступности точки доступа Android WiFi

Я пытаюсь разработать приложение, которое соединяет некоторые точки доступа Wi-Fi, если оно доступно. Я написал службу, которая зацикливается с 30-секундным интервалом и проверяет, доступны ли эти специальные точки доступа Wi-Fi. Я обеспокоен тем, что это может потреблять слишком много ресурсов. Я думаю о решении, если есть вероятность, что Android WifiManager (или другая утилита) уведомит мою службу о доступных новых точках доступа Wi-Fi. Это как новый слушатель точки доступа Wi-Fi.

Есть ли какая-либо утилита в Android для достижения этой цели?


person Alper    schedule 02.11.2012    source источник


Ответы (2)


Вы должны помнить, что ваше устройство Android регулярно сканирует сети WiFi, когда радио WiFi включено. Поэтому вам не нужно проверять их вручную. Это удвоит нагрузку на ОС.

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

person Vikram Gupta    schedule 02.11.2012
comment
Я хотел бы задать тот же вопрос, какое обычное время для этого сканирования? У вас есть какие-нибудь идеи по этому поводу? Кстати спасибо за четкий ответ. - person Alper; 02.11.2012
comment
Это зависит от разных факторов: скорость процессора, оперативная память, количество активных задач, зависит от телефона к телефону. Вы можете следить за своим вещательным приемником и распечатывать время. Обычно это около 15 секунд (я проверял это на двухъядерном LG LU3000) и сильно варьируется. - person Vikram Gupta; 02.11.2012

Образцы можно посмотреть в сети. Ваше приложение может делать что-то похожее на http://marakana.com/forums/android/examples/40.html

person SomeWittyUsername    schedule 02.11.2012
comment
Я уже применил эту логику в своем приложении. Мне нужно уведомление, если доступна новая точка доступа Wi-Fi. Если вы внимательно прочитали мой вопрос, мне нужен немного другой подход. - person Alper; 02.11.2012
comment
Вы получите уведомление от WiFi Manager о результатах сканирования. Вы можете сохранить последние результаты сканирования и сравнить их, когда появится новый список. Не нужно зацикливаться или опросить. Накладные расходы связаны только со сравнением списков. Подробнее см. здесь: stackoverflow.com/questions/4253249/ - person SomeWittyUsername; 02.11.2012
comment
ОК, я понимаю вашу точку зрения, кажется, что SCAN_RESULTS_AVAILABLE_ACTION работает для моего решения (просто у меня не меняется количество точек доступа Wi-Fi, когда я закрываю свой адаптер и открываю его, приемник принимает ввод). Но я не понимаю в той части, по какому графику андроид транслирует этот сигнал? Есть ли временной интервал для этого сканирования? Любой комментарий по этому поводу? - person Alper; 02.11.2012
comment
Триггер сканирования @Alper может исходить как от ОС, так и от самого драйвера WiFi. Вы можете заставить интервал сканирования быть таким, какой вам нужен (до тех пор, пока аппаратное обеспечение и драйвер могут его выдержать). См. здесь: stackoverflow.com/questions/7625071/ - person SomeWittyUsername; 02.11.2012