Nano Hash - криптовалюты, майнинг, программирование

Обнаружение Eddystone-TLM с библиотекой маяков Android

Я настроил библиотеку маяков Android для обнаружения пакетов Eddystone.

beaconManager = BeaconManager.getInstanceForApplication(context);
    // Detect the main identifier (UID) frame:
beaconManager.getBeaconParsers().add(new BeaconParser().
    setBeaconLayout("s:0-1=feaa,m:2-2=00,p:3-3:-41,i:4-13,i:14-19"));
// Detect the telemetry (TLM) frame:
beaconManager.getBeaconParsers().add(new BeaconParser().
    setBeaconLayout("x,s:0-1=feaa,m:2-2=20,d:3-3,d:4-5,d:6-7,d:8-11,d:12-15"));
// Detect the URL frame:
beaconManager.getBeaconParsers().add(new BeaconParser().
    setBeaconLayout("s:0-1=feaa,m:2-2=10,p:3-3:-41,i:4-21v"));
beaconManager.bind(this);

Маяк никогда не обнаруживался в библиотеке маяков Android.

@Override
public void onBeaconServiceConnect() {      


beaconManager.addMonitorNotifier(this);       

beaconManager.addRangeNotifier(new RangeNotifier() {
    @Override
    public void didRangeBeaconsInRegion(Collection<Beacon> beacons,
            Region region) {


        if (beacons.size() > 0) {
            Extra.log("Beacons detected", "info");
            //Process beacons data...

        }
    }
});

  try {

      beaconManager.startRangingBeaconsInRegion(new Region(
              "myRangingUniqueId", null, null, null));

    } catch (RemoteException e) {
  }
}

Контрольная работа:

  • Если маяк настроен в Eddystone-TML, я могу обнаружить данные телеметрии маяка с помощью приложения производителя.
  • Если маяк настроен в Eddystone-TML, я не могу обнаружить маяк с библиотекой.
  • Если маяк настроен в Eddystone-UID, я могу правильно определить маяк с библиотекой и приложением производителя.

Ответы:


1

Две вещи, которые нужно проверить, чтобы убедиться, что вы вообще не обнаруживаете:

  • Убедитесь, что onBeaconServiceConnect() вызывается. Добавьте оператор Log.d, чтобы быть уверенным.
  • Убедитесь, что ваше приложение получило разрешение на определение местоположения, если вы тестируете его на Android 6+. Подробнее см. здесь.

EDIT: Для Eddystone-TLM библиотека не предоставляет отдельный экземпляр маяка в обратном вызове определения дальности. Вместо этого библиотека рассматривает этот тип фрейма как дополнительный к основному фрейму маяка, такому как AltBeacon или Eddystone-UID. Таким образом, он будет предоставлять информацию от Eddystone-TLM только в том случае, если будет обнаружен другой первичный кадр маяка, поступающий с того же устройства.

Это работает следующим образом: при обнаружении кадра маяка, такого как AltBeacon или Eddystone-UID, создается объект Beacon, который передается обратному вызову определения дальности. Когда обнаруживается, что кадр Eddystone-TLM поступает с того же MAC-адреса, что и кадр основного маяка, информация телеметрии прикрепляется к объекту кадра основного маяка. Чтобы получить доступ к этой информации, вы звоните:

// Do we have telemetry data?
if (beacon.getExtraDataFields().size() > 0) {
    long telemetryVersion = beacon.getExtraDataFields().get(0);
    long batteryMilliVolts = beacon.getExtraDataFields().get(1);
    long pduCount = beacon.getExtraDataFields().get(3);
    long uptime = beacon.getExtraDataFields().get(4);

    Log.d(TAG, "The above beacon is sending telemetry version "+telemetryVersion+
                ", has been up for : "+uptime+" seconds"+
                ", has a battery level of "+batteryMilliVolts+" mV"+
                ", and has transmitted "+pduCount+" advertisements.");

}
05.09.2016
  • onBeaconServiceConnect() вызывается один раз при запуске. didRangeBeaconsInRegion с beacons.size()==0 вызывается много раз, даже если маяк выключен. Устройство Android 5.1. 05.09.2016
  • Я тестирую библиотеку на том же устройстве с маяками Eddystone - UID и Albeacon и работает нормально. Проблема только в Eddystone - маяке TLM. 05.09.2016
  • Проблема решена включением в конфигурации маяка = UID + TLM. Это был только TLM, и в этом была проблема. 13.09.2016
  • @davidgyoung есть ли какое-либо ограничение, которое позволяет прикреплять телеметрию только к кадрам AltBeacon или Eddystone-UID? В приложении, над которым я работаю, мы используем iBeacon, а сам маяк рекламируется как iBeacon, sBeacon и все три Eddystone, поэтому было бы здорово иметь TLM в качестве дополнения к iBeacon (или любому другому основному типу фрейма). 14.11.2017
  • Библиотека прикрепит телеметрию к другим кадрам маяка на основе MAC-адреса маяка. Так что, если маяк рекламирует iBeacon и Eddystone-TLM, я полагаю, что вложение будет работать (хотя я не тестировал эту конфигурацию). 14.11.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..