Це правильний макет для виявлення iBeacons за допомогою бібліотеки Android маяків AltBeacon?


93

Я успішно змінив додаток по впровадженню бібліотеки 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?

Довідка:


Довідковий додаток вже не працює ..
BlueTrin

1
@BlueTrin Спасибі, оновив посилання на нове репо.
ento

Відповіді:


66

Це працювало для мене: "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

8
Це також працювало для мене .. я використовував .. beaconManager.getBeaconParsers (). Add (новий BeaconParser (). SetBeaconLayout ("m: 2-3 = 0215, i: 4-19, i: 20-21, i: 22 -23, с: 24-24 "));
Іван,

2
Як ви читаєте цей макет? Що таке m, i і p? У мене є нестандартний маяк, куплений у Китаї. Використовуючи програму Bluetooth LE Scanner, я зміг знайти UUID маяка, мажори та мінори. Але як я знайти шаблон UUID, щоб вкласти його setBeaconLayout?
емен

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

3
чи є спосіб сканування будь-якого маяка навколо, незалежно від того, чи є його оцінка чи ні?
N Jay

3

Ви можете завантажити специфікацію iBeacon (натисніть "Завантажити твір та характеристики").

У поточній версії повинен бути ідентифікатор компанії 0x4C00та тип маяка 0x0215. Усі інші поля обов’язкові для заповнення та, як ви вказали.

Так що так, ви абсолютно правильні, і він виявить усі сумісні iBeacons.

ОТ: Також він визначає, що інтервал реклами повинен бути 100 мс, але я серйозно сумніваюся, що всі iBeacons дотримуються цього.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.