Upgrade from Android SDK to Proximity SDK

Hi Estimote team,

I’m planning to upgrade Android-SDK to Proximity-SDK in our service. Our service use beacon’s major, minor and distance to decide what information or action to do. But it seems proximity-sdk can’t do these.
The hardware revision of our beacon is G1.12 but maybe have G1.8 or D3.4.

Could you give me any advice? Thanks.

Yes, the Proximity SDK doesn’t use iBeacon anymore, instead it uses our own Estimote Monitoring tech. G1.x beacons support Estimote Monitoring just fine, you can enable it via Estimote apps or in Estimote Cloud, and disable iBeacon at the same time to save the battery. D3.4 don’t support Estimote Monitoring, and can’t be used with the Proximity SDK.

Proximity SDK uses tags instead of UUID/major/minor in order to define the “regions” (in Proximity SDK we call them “zones”), so you’ll want to take a look at your current regions setup, and try to mimic it with tags. For example:

BeaconRegion allBeacons = new BeaconRegion("allBeacons",
        UUID.fromString("B9407F30-F5F8-466E-AFF9-25556B57FE6D"));
BeaconRegion lobbyBeacons = new BeaconRegion("lobbyBeacons",
        UUID.fromString("B9407F30-F5F8-466E-AFF9-25556B57FE6D",
        /* major */ 1));
BeaconRegion oneSpecificBeacon = new BeaconRegion("oneSpecificBeacon",
        UUID.fromString("B9407F30-F5F8-466E-AFF9-25556B57FE6D",
        /* major */ 1,
        /* minor */ 1));

… then you’ll want to:

  • tag all your beacons with “allBeacons”
  • tag your lobby beacons (those with major = 1) with “lobbyBeacons”
  • tag your “one specific beacon” (the one with major = 1 and minor = 1) with “oneSpecificBeacon”

… and set up your Proximity Zones like this:

ProximityZone allBeacons = new ProximityZoneBuilder()
    .forTag("allBeacons")
    // ...

ProximityZone lobbyBeacons = new ProximityZoneBuilder()
    .forTag("lobbyBeacons")
    // ...

ProximityZone oneSpecificBeacon = new ProximityZoneBuilder()
    .forTag("oneSpecificBeacon")
    // ...

Note that this means your “one specific beacon” will actually have three tags (“allBeacons”, “lobbyBeacons” and “oneSpecificBeacon”), which is perfectly fine.

Other than that, https://developer.estimote.com/proximity/android-tutorial/ describes the basics of the Proximity SDK, so it’s a good read too (:

Our service show information accroding to each beacon’s major and minor, so I can’t just collect all my beacons to the same tag. And we use at least three hundrad beacons for our service, it seems not a good idea to define every beacon with different tag

So you probably have some kind of “allBeacons” region, and then use the ranging API to read the individual majors and minors?

In which case, do a single “allBeacons” tag and “allBeacons” Proximity Zone, and use the onContextChanged callback, which is a bit like the ranging API, as in, it gives you the identifiers of the beacons in range. It’ll be the 32-characters-long identifiers, not major/minor, so you’d need to migrate your content-management system to that, or introduce some mapping between the old (major/minor) and the new (Estimote identifiers).

Okay, I will consider how to solve it. And I’ll ask here if we get any problem. Thank you.