Это правильный макет для обнаружения iBeacon с помощью библиотеки Android Beacon от AltBeacon?


95

Я успешно модифицировал приложение эталонную реализацию в Android Beacon библиотеки , используя следующую схему радиомаяка , так что он обнаруживает устройство IBeacon , что у меня есть под рукой:

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
        beaconManager.getBeaconParsers().add(new BeaconParser().
               setBeaconLayout("m:0-3=4c000215,i:4-19,i:20-21,i:22-23,p:24-24"));
        beaconManager.bind(this);
    }
}

Поскольку я новичок во внутреннем устройстве BLE-пакетов, я не уверен, что это правильный макет для использования. Библиотека поддерживает стандарт AltBeacon, и в ее документации не упоминается, как обнаруживать устройства iBeacon.

  • Будет ли этот код обнаруживать все устройства iBeacon? т.е. m:префикс слишком ограничительный или это правильная последовательность байтов, которая соответствует спецификации iBeacon?
  • Точно так же остальная часть макета точно соответствует спецификации iBeacon?

Справка:



1
@BlueTrin Спасибо, обновил ссылку на новое репо.
енто

Ответы:


67

У меня это сработало: "m: 2-3 = 0215, i: 4-19, i: 20-21, i: 22-23, p: 24-24"

Я не думаю, что вам нужно сопоставлять часть 4c00, потому что это идентификатор производителя, поэтому вы, вероятно, можете оставить это и начать с m: 2-3 = 0215 Все остальное выглядит правильно и, похоже, работает.


8
Благодарность! После тестирования с маячками Estimote я могу подтвердить, что m:2-3=0215изменение действительно необходимо.
matiash 06

8
Это сработало и у меня ... я использовал .. beaconManager.getBeaconParsers (). Add (new BeaconParser (). SetBeaconLayout ("m: 2-3 = 0215, i: 4-19, i: 20-21, i: 22 -23, стр: 24-24 "));
Джон

2
Как вы читаете этот макет? Что такое м, я и п? У меня купленный из Китая готовый маячок. С помощью приложения Bluetooth LE Scanner я смог найти UUID маяка, большой и дополнительный. Но как мне найти шаблон UUID, в который его можно вставить setBeaconLayout?
Emen

3
@AimanB Пожалуйста, обратитесь к этому: stackoverflow.com/questions/25319682/… . Здесь m: данные производителя, i: близкий UUID, i: основной номер, i: второстепенный номер, p: мощность сигнала, d: уровень заряда батареи. Они представляют собой байтовое смещение. (Вам нужно добавить 6 при подсчете). Например: ID производителя находится между 8-м и 9-м в строке "m: 2-3 = 0215, i: 4-19, i: 20-21, i: 22-23, п: 24-24 ".
trueblue

3
есть ли способ сканировать любой маяк, независимо от его оценки или нет?
N Jay

4

Вы можете загрузить спецификацию iBeacon (нажмите «Загрузить обложку и спецификации»).

В текущей версии должен быть идентификатор компании 0x4C00и тип маяка 0x0215. Все остальные поля являются обязательными, как вы указали.

Так что да, вы совершенно правы, и он обнаружит все совместимые iBeacon.

ОТ: Также указано, что рекламный интервал должен составлять 100 мс, но я серьезно сомневаюсь, что все iBeacon придерживаются этого правила.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.