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:
Antworten:
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.
quelle
m:2-3=0215
Änderung tatsächlich notwendig ist.setBeaconLayout
?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.
quelle