Ist dies das richtige Layout, um iBeacons mit der Android Beacon Library von AltBeacon zu erkennen?

93

Ich habe die Referenzimplementierungs-App der Android Beacon Library mithilfe des folgenden Beacon-Layouts erfolgreich geändert , sodass ein vorhandenes iBeacon-Gerät erkannt wird:

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

Da ich mit den Interna von BLE-Paketen noch nicht vertraut bin, bin ich mir nicht sicher, ob dies das richtige Layout ist. Die Bibliothek unterstützt den AltBeacon- Standard und in der Dokumentation wird nicht erwähnt, wie iBeacon-Geräte erkannt werden.

  • Erkennt dieser Code alle iBeacon-Geräte? dh ist das m:Präfix zu restriktiv oder stimmt die richtige Bytesequenz mit der iBeacon-Spezifikation überein?
  • Entspricht der Rest des Layouts genau der iBeacon-Spezifikation?

Referenz:

ento
quelle
Die Referenzanwendung ist jetzt nicht
verfügbar
1
@BlueTrin Danke, habe den Link zum neuen Repo aktualisiert.
Ento

Antworten:

66

Dies funktionierte für mich: "m: 2-3 = 0215, i: 4-19, i: 20-21, i: 22-23, p: 24-24"

Ich glaube nicht, dass Sie mit dem 4c00-Teil übereinstimmen müssen, da dies die Hersteller-ID ist. Sie können das also wahrscheinlich weglassen und mit m beginnen: 2-3 = 0215 Alles andere sieht richtig aus und es scheint zu funktionieren.

mobiledevbrick
quelle
8
Vielen Dank! Durch Tests mit Estimote-Beacons kann ich bestätigen, dass die m:2-3=0215Änderung tatsächlich notwendig ist.
Matiash
8
Dies funktionierte auch für mich. Ich habe verwendet. BeaconManager.getBeaconParsers (). Add (neuer BeaconParser (). SetBeaconLayout ("m: 2-3 = 0215, i: 4-19, i: 20-21, i: 22) -23, p: 24-24 "));
John
2
Wie liest du dieses Layout? Was ist m, i und p? Ich habe ein sofort einsatzbereites Leuchtfeuer aus China gekauft. Mithilfe der Bluetooth LE Scanner-App konnte ich die UUID des Beacons (Dur und Moll) ermitteln. Aber wie finde ich das UUID-Muster, in das ich es einfügen kann setBeaconLayout?
Emen
3
@AimanB Bitte beachten Sie dies: stackoverflow.com/questions/25319682/… . Darin m: Herstellerdaten, i: Näherungs-UUID, i: Hauptzahl, i: Nebenzahl, p: Signalleistung, d: Batteriestand. Sie repräsentieren den Byte-Offset. (Sie müssen beim Zählen 6 hinzufügen) .Eg: Die Hersteller-ID liegt zwischen dem 8. und 9. Platz in der Zeichenfolge "m: 2-3 = 0215, i: 4-19, i: 20-21, i: 22-23, p: 24-24 ".
Trueblue
3
Gibt es eine Möglichkeit, nach einem Leuchtfeuer in der Nähe zu suchen, unabhängig davon, ob es geschätzt wird oder nicht?
N Jay
3

Sie können die iBeacon-Spezifikation herunterladen (klicken Sie auf "Grafik und Spezifikationen herunterladen").

In der aktuellen Version der Unternehmens - ID muss sein 0x4C00, und der Bake Typ sein muß 0x0215. Alle anderen Felder sind erforderlich und wie von Ihnen angegeben.

Also ja, Sie sind genau richtig und es werden alle kompatiblen iBeacons erkannt.

OT: Es gibt auch an, dass das Werbeintervall 100 ms betragen muss, aber ich bezweifle ernsthaft, dass alle iBeacons daran festhalten.

Timmmm
quelle