7
votes

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.

1
I've tried searching, but I seem unable to find a resource which details a complete list of manufacturer identifiers. Have you found any since you asked this?danielcooperxyz
@davidgyoung hi, did you find out the layout pattern for Gimbal?Rainmaker
Not beyond what I listed above.davidgyoung

1 Answers

17
votes

For estimote

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