I have been playing around with an Estimote iBeacons with their Android SDK. However, I am still confused about why there are so many SDKs available.
iBeacons are just standard bluetooth devices that have the Bluetooth Low Energy (BLE) part of the Bluetooth 4.0 specification. As long as you have a device that is "Bluetooth Smart Ready" (iPhone 4S+, and Android 4.3+) you will be able to detect all iBeacons, regardless of beacon manufacturer. Android (Bluetooth Low Energy Connectivity) and iPhone (iOS Developer Library) both provide system level library to develop app to use iBeacons.
So why are there so many SDKs for connecting to iBeacons (Gimbal, Estimote, Radius Networks, open source Android API).
So I have a few questions:
Understand that Beacons are a specific application of Bluetooth LE. Bluetooth LE is a general purpose short-range communication technology that can do many things like transmit audio to a speaker.
Low-level APIs like Android's built-in Bluetooth APIs and Apple's
CoreBluetooth APIs are intended for general purpose bluetooth applications. They don't do beacon-specific things like:
In order to accomplish these things, you either need to write your own software (which is error prone and time consuming), or use a pre-built higher level library. For iOS devices, Apple has beacon capabilities built-in to the operating system with the
CoreLocation APIs. Android has no such built-in library.
Because Android has no built-in beacon library, different third parties have built them. My company made the first one in September 2013, which has evolved into today's open-source Android Beacon Library.
Other companies that sell beacons often make their own libraries (some are based on this open source library, and some are not) in order to support proprietary features from their beacons or proprietary cloud services that build on them.
So the answers to your last two questions are:
Yes, the Android 4.3 Bluetooth Connectivity library can poll and find any iBeacon, but you will have to write lots of code on top of that library to make it happen.
The advantage of using an additional library is that you don't have to write and debug all that code. You can focus on the logic that needs to go into your app and not spend all your time on low-level beacon processing.
Full disclosure: I am Chief Engineer at Radius Networks and the author of the Android Beacon Library.