Dmitry
Dmitry

Reputation: 43

Sensitivity of monitoring AltBeacon

I'm developing mobile application for iBeacon. Our product is for iOS and Android platforms. On iOS, monitoring of iBeacon is default feature, so they use their default methods. For implementing iBeacon on Android I use AltBeacon. But we detected 1 big difference between our platforms. Beacons that have to work for 1 meter radius (on iOS), my app can see on 3 meters from. It's a big problem for our product, because beacons have to work on the same distances on both platforms. So, on iOS they can't change anything in monitoring logic. Can I change sensitivity of monitoring?

Upvotes: 3

Views: 884

Answers (1)

davidgyoung
davidgyoung

Reputation: 64916

It is very difficult to get different devices to detect beacons at the exact same distance. The main problem is that different mobile devices can have quite different Bluetooth radios and antennas that have very different gains. While detected signal levels these are fairly consistent across iOS devices (with the exception of iPod touch devices which have higher gain receivers and detect beacons further), Android devices are all over the map.

One way to try to make this more consistent is to combine monitoring with ranging. Instead of triggering an action on a monitoring callback, start ranging as soon as you detect a beacon, then get a distance estimate, and only trigger the action if the distance estimate is close enough. I wrote a blog post that describes this process.

The aforementioned technique is still problematic, especially on Android, because accurate distance estimates require a formula matched for the bluetooth receiver on the particular Android device model. The Android Beacon Library uses a Nexus 5 calculation by default, but that can significantly over or under-estimate the distance on other models. For this reason, we have made the library support an expandable database of distance formulas on a per-device basis, and we have provided instructions for calculating the proper formula for other devices and getting them added to the database. If you know you are targeting specific devices, this might be an option for you.

If, however, you want to have all Android devices detect the beacon at a very specific distance, you are unlikely to have success. The large number of Android devices out there makes it unlikely that you will be able to get accurate distance estimates on all of them, so you must be willing to accept inaccurate estimates on some devices, or adjust your use case so this is not necessary.

Upvotes: 3

Related Questions