What is the correct BeaconLayout for Estimote and Gimbal beacons

davidgyoung picture davidgyoung · Jul 30, 2014 · Viewed 8.8k times · Source

I would like the 2.0 release of the Android Beacon Library to be able to properly detect both old style Estimote beacons (pre-2013 models that did not support iBeacon technology) and Gimbal beacons. I know that Gimbal beacons have encrypted identifiers, so these cannot be read directly. But I would at least like to share code that can detect that one is around.

Here is what I have:

Code to detect a Gimbal beacon (without reading encrypted identifiers):

BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
BeaconManager.getBeaconParsers().add(new BeaconParser().
       setBeaconLayout("m:0-3=ad7700c6"));
beaconManager.bind(this);

Code to detect a mid-2013 Estimote beacon (without reading identifiers because I do not know how):

BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
BeaconManager.getBeaconParsers().add(new BeaconParser().
       setBeaconLayout(""m:0-3=2d24bf16""));
beaconManager.bind(this);

Does anybody (especially folks from Estimote or Gimbal) have any additional information on the byte offsets above that will allow decoding as much information from the transmissions as possible? In each case, I believe we need to key off of the bluetooth service UUID, which is probably properly represented with more bytes than I have in the examples above. I would love to know the full service UUIDs as well as any other readable fields sent in the advertisements.

Answer

John picture John · Sep 5, 2014

For estimote

beaconManager.getBeaconParsers().
      add(new BeaconParser().
      setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"));