Чтение фактического txPower Android мобильного - PullRequest
1 голос
/ 28 мая 2020

Можно найти актуальное ble

txPower

устройства android. Так что я могу использовать его под объектом Beacon builder вместо -59 как txPower.

Beacon beacon = new Beacon.Builder()
    .setId1("2f234454-cf6d-4a0f-adf2-f4911ba9ffa6")
    .setId2("1")
    .setId3("2")
    .setManufacturer(0x0118)
    .setTxPower(-59)
    .setDataFields(Arrays.asList(new Long[] {0l}))
    .build();

Вариант использования, который у меня есть, - считывать расстояние между двумя android устройствами.

1 Ответ

1 голос
/ 28 мая 2020

Поле txPower должно быть ожидаемой силой сигнала в дБм на расстоянии 1 метра. Каждая модель телефона Android имеет немного разную выходную мощность передатчика BLE, обычно измеряемую от -50 дБм до -70 дБм на расстоянии 1 м.

К сожалению, нет хорошего способа получить правильное значение для используйте для конкретной модели устройства c Android, если вы не измеряете это самостоятельно. Android не имеет встроенных API, чтобы получить это, и я никогда не видел опубликованных спецификаций от производителей телефонов.

Интерес к этой теме возобновился, поскольку команды разрабатывают приложения для отслеживания контактов. На прошлых выходных я действительно поехал в поле, чтобы измерить выходную мощность передатчика ряда устройств, которые у меня были под рукой. Например, для Google Pixel 3a я измерил -60 дБм.

Если вы хотите провести собственные измерения, чтобы помочь в этом усилии, я предлагаю следующую процедуру:

  1. Go на открытую площадку в нескольких метрах от любых препятствий, особенно металлических.
  2. Поднимите передатчик телефона на неметаллическом предмете на высоте не менее одного метра от земли. Телефон следует поставить вертикально так, чтобы экран был перпендикулярен земле. (Я использовал штатив для камеры.)
  3. Запустите приложение, которое передает маяк на полную мощность на телефон на штативе.
  4. Держите эталонный телефон (желательно iPhone SE 1-го поколения или старый iPhone 4-5сек) на расстоянии метра, так что оба экрана смотрят в одном направлении.
  5. Выполните «калибровку» в приложении маяка, например Locate Beacon , чтобы получить средний RSSI за ~ 30 секунд.
  6. Если телефон, используемый для измерения, не одной из указанных выше эталонных моделей, вам нужно будет отрегулировать чувствительность приемника этого телефона. В таблице, которой я поделился, есть пример того, как это сделать для Pixel 3a, измеряющего iPhone SE. Эта часть может быть сложной, поскольку вам нужен еще один телефон с известной чувствительностью или выходной мощностью передатчика.

Вот моя таблица с расчетами: https://docs.google.com/spreadsheets/d/1-voNJAeHz78AarZmfds8WiplNhUDzeYrsW0YzKfrExU/edit?usp=sharing

Я также написал сообщение в блоге , в котором затрагивается проблема отсутствия хорошего набора данных и рассказывается о дальности радиомаяка больше, чем вы когда-либо хотели знать.

...