Нарушения в обнаружении сканирования маяка
Я тестировал расход заряда батареи моего приложения-детектора Beacon в Android с помощью Android Beacon Library. Конфигурации, которые я установил, следующие:
1) Частота фонового сканирования - 110 мс 2) Частота фонового сканирования - 10000 мс 3) Скорость сканирования переднего плана - 110 мс 4) Скорость сканирования переднего плана - 10000 мс 5) Скорость рекламы радиомаяка - Низкая задержка (10 Гц) 6) Нет энергосбережения Используемый класс 7) Обнаружение маяков Eddystone UID
Я протестировал эту конфигурацию в течение 16 часов с другими маяками (все излучающие на той же частоте 10 Гц).
Потребление батареи - это то, чего я ожидал, однако частота обнаружения маяков - это то, чего я не понимаю. Есть периоды времени, когда маяки вообще редко обнаруживаются. Я наблюдал 2 фазы - 1) 1 час, когда было около 400 обнаружений 2) 2 часа, когда было около 12-15 обнаружений
Это происходило в циклах. В чем может быть причина? Связано ли это с Android 5.0 новыми API сканирования? Какие-нибудь мысли?
Спасибо
1 ответ
При таком коротком цикле сканирования, равном 110 мс, огромным фактором того, обнаружите ли вы передачу маяка с частотой 10 Гц, будет время и удача.
Считают, что:
- Начало сканирования занимает ограниченное время, поэтому эффективный период сканирования, вероятно, будет < 100 мс
- Передача пакета радиомаяка по радиоканалу занимает определенное время, и если сканирование не начинается (или останавливается) во время его передачи, вы не получите обнаружение.
- Передатчики маяка не отправляют пакеты через равные промежутки времени. Они имеют тенденцию быть сгруппированы вместе или расположены нерегулярно, поскольку Bluetooth-передатчик переключает каналы.
- Даже при лучших обстоятельствах, когда сканирование остается постоянно без остановки, только ~90% пакетов принимаются.
Сложите все факторы вместе, и я не удивлюсь, увидев большие различия в количестве обнаруженных пакетов. Слишком много переменных вне вашего контроля, чтобы сделать их предсказуемыми. Если вы хотите большей предсказуемости, я бы увеличил период сканирования до 1 секунды.