Справочное приложение altbeacon и несколько вызовов на вход / выход
Я нахожусь на Android 6.0.1 (Nexus 5) и тестирую мониторинг маяков через библиотеку Altbeacon 2.9.1, и во время тестирования устройства дома возле маяка (в нескольких комнатах) я получаю несколько обратных вызовов входа / выхода. Маяк основан на Raspberry Pi 3 с настройками по умолчанию (передача как iBeacon).
Я использую справочное приложение Altbeacon, однако в выходных данных журнала я вижу сообщения о событиях входа (didEnterRegion) каждые 5-6 минут, что приводит к уведомлениям. В это время Nexus 5 стоит на столе.
Единственная модификация исходного кода состояла в том, чтобы добавить определенный регион для мониторинга, но это все.
Любые идеи о том, почему поведение так?
1 ответ
Наиболее вероятным объяснением является то, что передачи от маяка только периодически принимаются вашим устройством Android.
При настройках по умолчанию библиотека маяков Android считает, что регион завершен, если в течение 10 секунд не было обнаружено ни одного маяка, соответствующего этому региону. По умолчанию передатчик маяка Linux будет рассылать рекламу раз в секунду. Если 10 из этих передач пропущены подряд, вы получите выход из региона, а затем вход в регион при следующем получении. Поймите, что даже в идеальных условиях не все передачи маяка принимаются из-за радиошума и других проблем. Как только вы приблизитесь к границе диапазона передатчика маяка, такие прерывистые события входа / выхода будут происходить все чаще и чаще.
Чтобы решить эту проблему, вы можете сделать несколько вещей:
Увеличьте частоту передатчика вашего маяка с 1 до 10 Гц. Это значительно уменьшит вероятность того, что пакеты маяка не будут получены в течение 10 секунд.
Увеличьте мощность передатчика, если это возможно (хотя это, скорее всего, невозможно с Raspberry Pi)
Переместите маяк ближе к приемнику Android
Увеличьте время выхода из региона до 10 секунд с 10 секунд, позвонив
BeaconManager.setRegionExitPeriod(20000l);