Android Bluetooth Altbeacon Калибровка

Ребята, я использую библиотеку Altbeacon для Android, чтобы сделать какое-нибудь приложение Bluetooth для демонстрации. Он предоставляет метод getDistance(), который я могу использовать для определения расстояния между моим телефоном и внешним устройством Bluetooth с загруженным протоколом Altbeacon. Однако, поскольку устройства разные, я думаю, что расстояние может меняться с большой ошибкой (я получаю 0,05 м, когда я на расстоянии 1 м, и так далее, и так далее). Это заставляет меня думать, что если мы сделаем некоторую калибровку для метода getDistance(), это будет полезно. Есть ли способ сделать это? (В настоящее время я не знаю, как изменить метод getDistance, может быть, @override его? Не очень уверен) Большое спасибо.

1 ответ

Решение

Мне не известны какие-либо функции калибровки в библиотеке. Тем не менее, вы можете изменить расчет расстояния, внедрив свой собственный DistanceCalculator,

Калькулятор расстояния по умолчанию ModelSpecificDistanceCalculator и это установлено в BeaconServices onCreate метод (проверьте это). Итак, просто создав свою собственную версию DistanceCalculator и установить его после BeaconService создан может делать то, что вы хотите;

// after beacon service is created
DistanceCalculator customCalculator = ...;
Beacon.setDistanceCalculator(customCalculator);

Тем не менее, вы должны теперь, что устройство также вызывает изменения;

Каждая модель может иметь разный набор микросхем Bluetooth и антенну и, следовательно, может принимать разный уровень сигнала, когда находится в одном и том же положении относительно маяка. Для решения этой проблемы библиотека использует другую формулу для расчета расстояния для разных моделей устройств Android. Поскольку не все устройства имеют собственные формулы, встроенные в библиотеку, библиотека обратится к расчету устройства по умолчанию для Nexus 5, если не найдено подходящей формулы.

Для получения дополнительной информации о расчете расстояния, пожалуйста, посетите страницу AltBeacon - Расчет расстояния. На этой странице также объясняется, как работает расчет расстояния, а также как вы можете внести свой вклад в расширение библиотеки для изменения устройства.

Кстати, вы также можете проверить CurveFittedDistanceCalculator но этот требует, чтобы вы дали конкретные коэффициенты устройства (объяснено на этой странице). Для получения дополнительной информации об этом, проверьте его исходный код.

Другие вопросы по тегам