Мы пытаемся использовать библиотеку Altbeacon для удовлетворения следующего учебного случая: Мы хотим поместить несколько IBeacons в комнату или коридор с расстоянием не более 3 метров между каждым из них, и мы хотим получить текущий ближайший Ibeacon на основе пользовательского телефона, который сканирует маяки. Сначала мы попытались создать регионы с одним маяком, задаваясь вопросом, что регион был закрытым, что означает, что когда вы входите в регион, вы не можете находиться в другом регионе одновременно и когда вы покидаете регион , вы вводите следующий ближайший и так далее. Но это не тот подход, который реализует библиотека. Мы хотим знать, есть ли какой-либо способ в библиотеке Altbeacon, чтобы применить наш подход или если какой-то патч должен быть выполнен, чтобы удовлетворить рассмотренный случай, который я вам представляю.Области Ibeacon закрыты?
0
A
ответ
0
Самый простой путь для достижения этой цели является диапазон для всех маяков с использованием одного региона, а также начать в диапазоне:
@Override
public void onBeaconServiceConnect() {
try {
// Set up a region that matches all of your beacons. You may want to replace the first
// null with a UUID that all your beacons share.
Region allBeaconsRegion = new Region("all beacons", null, null, null);
beaconManager.startRangingBeaconsInRegion(mAllBeaconsRegion);
beaconManager.setRangeNotifier(this);
} catch (RemoteException e) {
Log.e(TAG, "Cannot connect to beacon service");
}
}
Обратите внимание, если вы используете класс пользовательских приложений с RegionBootstrap
, вы можете положить вышеуказанный код выше внутри метода didEnterRegion
вместо метода onBeaconServiceConnect
.
Как только вы начнете задавать вопросы, вы получите обратный вызов один раз в секунду со списком всех видимых маяков. Вы можете добавить код, чтобы определить, какой из них ближе всего:
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region arg1) {
Beacon closestBeacon = null;
for (Beacon beacon : beacons) {
if (closestBeacon == null) {
closestBeacon = beacon;
}
else {
if (closestBeacon.getDistance() > beacon.getDistance()) {
closestBeacon = beacon;
}
}
}
// Do Something with closestBeacon here
}
Имейте в виду, что ближайший маяк может измениться назад и вперед из-за радиопомех, так что вам, вероятно, нужно добавить дополнительную логику для защиты от ближайшего листать радиомаяка назад и вперед слишком часто.
Смежные вопросы
- 1. Предостережение для фона IBeacon области Ранжирования
- 2. Сохранение значения в UserDefaults при пробуждении приложения из области iBeacon
- 3. Мониторинг области IBeacon не работает последовательно на устройствах
- 4. iBeacon Monitoring Reliability
- 5. Может ли ibeacon общаться с ibeacon?
- 6. Мониторинг iBeacon Region слишком агрессивный
- 7. iBeacon - Отключение
- 8. Мониторинг зоны iBeacon с Mac?
- 9. Защитный тег с использованием iBeacon
- 10. iBeacon: настройки идентификатора CLBeaconRegion?
- 11. Соединения не закрыты SQLAlchemy
- 12. Почему статические классы закрыты?
- 13. Правильно закрыты соединения SqlCommand
- 14. Конструкторы Java Enum закрыты?
- 15. Для чего именно закрыты?
- 16. Netty: Правильно закрыты WebSockets
- 17. несколько mysql_connect закрыты вместе
- 18. restheart - соединения не закрыты
- 19. Методы перегрузки (закрыты)
- 20. Почему объекты DataSourceSelectArguments закрыты?
- 21. Почему мои подменю закрыты?
- 22. Oracle: соединения закрыты брандмауэром
- 23. iBeacon Monitoring не работает с Cordova-plugin-ibeacon
- 24. iOS CoreBluetooth/iBeacon: Рекламировать iBeacon и периферийную службу одновременно
- 25. iBeacon - Максимальный предел для мониторинга регионов
- 26. Сколько стоит pausesLocationUpdatesAutomatically влияет на обнаружение iBeacon?
- 27. Как узнать ближайший iBeacon
- 28. iBeacon Arrow Rotation
- 29. IBeacon и Предлагаемые приложения
- 30. База данных уведомлений iBeacon
Я не знаю библиотеку Altbeacon, но если это похоже на другие библиотеки маяков, вы должны располагать маяки, а не контролировать области, чтобы найти ближайший маяк. –
С помощью этой библиотеки вы можете выбирать диапазоны маяков внутри определенной области, где вы можете найти ближайший внутри области (предположим, что есть два или более). Мы хотим сделать приложение для входа в только ближайший регион, и при входе в один мы не оставим его до тех пор, пока другой регион не приблизится к нам. –
«Регионы» существуют только на Android на уровне кода, предоставляемого вашим приложением, включая эту библиотеку. Что касается Android, то содержимое пакета BLE - это произвольные данные, и ваши варианты открыты. Однако, если вы хотите быть совместимым с iOS, вам нужно использовать как можно меньше регионов, так как существуют ограниченные ограничения на то, как много вы можете искать сразу. –