Czy to jest prawidłowy układ do wykrywania iBeacons za pomocą biblioteki AltBeacon Android Beacon?


95

I z powodzeniem zmodyfikował aplikację implementacji referencyjnej z Androidem Beacon Biblioteki stosując następujący układ nawigacyjny tak, że wykrywa urządzenie iBeacon że mam pod ręką:

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);
    }
}

Będąc nowicjuszem w wewnętrznych pakietach BLE, nie jestem pewien, czy jest to właściwy układ do użycia. Biblioteka wspiera standard AltBeacon, a jej dokumentacja nie wspomina o tym, jak wykrywać urządzenia iBeacon.

  • Czy ten kod wykryje wszystkie urządzenia iBeacon? tj. czy m:prefiks jest zbyt restrykcyjny, czy jest to właściwa sekwencja bajtów, która pasuje do specyfikacji iBeacon?
  • Podobnie, czy reszta układu dokładnie odpowiada specyfikacji iBeacon?

Odniesienie:


Aplikacja referencyjna jest teraz
niedostępna

1
@BlueTrin Dzięki, zaktualizowałem link do nowego repozytorium.
ento

Odpowiedzi:


67

To zadziałało dla mnie: „m: 2-3 = 0215, i: 4-19, i: 20-21, i: 22-23, p: 24-24”

Myślę, że nie musisz dopasowywać części 4c00, ponieważ jest to identyfikator producenta, więc prawdopodobnie możesz to zostawić i zacząć od m: 2-3 = 0215 Wszystko inne wygląda dobrze i wydaje się, że działa.


8
Dzięki! Na podstawie testów z beaconami Estimote mogę potwierdzić, że m:2-3=0215zmiana jest rzeczywiście konieczna.
matiash

8
U mnie też to zadziałało ... Użyłem ... beaconManager.getBeaconParsers (). Add (new BeaconParser (). SetBeaconLayout ("m: 2-3 = 0215, i: 4-19, i: 20-21, i: 22 -23, p: 24-24 "));
Jan

2
Jak czytasz ten układ? Co to jest m, ja i p? Mam gotowy beacon kupiony w Chinach. Korzystając z aplikacji Bluetooth LE Scanner, udało mi się znaleźć UUID latarni morskiej, główny i pomocniczy. Ale jak znaleźć wzorzec UUID, aby go umieścić setBeaconLayout?
emen

3
@AimanB Prosimy o skierowanie tego: stackoverflow.com/questions/25319682/… . W tym m: Dane producenta, i: Identyfikator zbliżeniowy UUID, i: Numer główny, i: Numer podrzędny, p: Moc sygnału, d: poziom naładowania baterii. Reprezentują przesunięcie bajtów. (Podczas liczenia musisz dodać 6). Przykład: Identyfikator producenta znajduje się między 8 a 9 w ciągu „m: 2-3 = 0215, i: 4-19, i: 20-21, i: 22-23, p: 24–24 ".
trueblue

3
czy istnieje sposób na wyszukanie dowolnego latarni nawigacyjnej, niezależnie od tego, czy jest to oszacowanie, czy nie?
N Jay

4

Możesz pobrać specyfikację iBeacon (kliknij „Pobierz grafikę i specyfikacje”).

W obecnej wersji ID firmy musi być 0x4C00, a typ beacona musi być 0x0215. Wszystkie inne pola są wymagane i zgodnie z ustaleniami.

Więc tak, masz dokładnie rację i wykryje wszystkie zgodne iBeacony.

OT: Określa również, że interwał reklamowy musi wynosić 100 ms, ale poważnie wątpię, aby wszystkie iBeacony się tego trzymały.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.