- This is mainly a bugfix release.
- Fixed (Estimote#109): Documentation Bug.
- Fixed (Estimote#117): Crash after update to 0.8 version.
- SDK demos are now using Material Design (h/t @RingoMckraken).
- Small fixes for Eddystone protocol.
- Say hello to Eddystone - an open protocol BLE protocol from Google.
- Estimote Beacons can broadcast Eddystone protocol.
- In order to start playing with Eddystone you need to update firmware of your existing Estimote beacons to
3.1.1. Easiest way is through Estimote app on Google Play. Than you can change broadcasting scheme on your beacon to Eddystone-URL or Eddystone-UID. - New in SDK:
- find nearby Eddystone beacons (
BeaconManager#startEddystoneScanning) - configure Eddystone related properties:
- URL property of
Eddystone-URL(seeBeaconConnection#eddystoneUrl) - namespace & instance properties of
Eddystone-UID(seeBeaconConnection#eddystoneNamepsace,BeaconConnection#eddystoneInstance)
- URL property of
- configure broadcasting scheme of beacon to
Estimote Default,Eddystone-UIDorEddystone-URL(seeBeaconConnection#broadcastingScheme)
- find nearby Eddystone beacons (
- SDK Examples have been updated to showcase Eddystone support.
- Initial support for nearables. You can discover nearby nearables via
BeaconManager.startNearableDiscovery(). With nearbles you can read temperature, motion, orientation without need to connect to it. Directly from discoveredNearableclass. - You can change basic & smart power mode in your beacon via
BeaconConnection. Read more about power modes. android.hardware.bluetooth_lefeature is no longer required- You can also change conditional broadcating in beacon (Flip To Sleep). It is great for development. Read more about Flip To Sleep.
- Breaking changes (1.0 is approaching, bear with us):
- most of
BeaconConnections write* methods are gone, they are replaced with more appropriatePropertyclass
- most of
// Before
connection.writeMajor(newMajor, callback);
connection.writeMinor(newMinor, callback);
// After: reading
connection.minor().get()
connection.major().get()
// After: writing in batch
connection.edit()
.set(connection.proximityUuid(), newUuid)
.set(connection.major(), newMajor)
.set(connection.minor(), newMinor)
.commit(callback);- Fixed authentication issues (#111).
- You can update update firmware in Estimote beacons from the SDK. There are several ways to do it:
- Use
BeaconOtaclass to perform firmware update on selected beacon. - Use
BeaconConnection#updateBeaconwhich triggers update on the beacon. See updated demos to see how it works. - You can also use Estimote app from Play Store to do that.
- Use
- Estimote SDK now includes also
android.permission.ACCESS_NETWORK_STATEpermission to determine internet connectivity. - Breaking changes (please bear with us, we are approaching stable 1.0 release):
BeaconConnection'sConnectionCallback#onAuthenticatedmethod does not returnBeaconCharacteristicsobject any more. You can read them directly onBeaconConnectionobject.- For example read reading broadcasting power is just
connection.getBroadcastingPower().
- From now Estimote SDK for Android is distributed as AAR archive rather than jar. That means that you do not need to change your
AndroidManifest.xml. SDK'sAndroidManifest.xmlwill be merged with your application'sAndroidManifest.xml. See installation guide how to add library to your project. - Welcome back! We have added support for Estimote Cloud. You can access it via
EstimoteCloudclass. Remember first to provide your App ID & App Token from App section of Estimote Cloud viaEstimoteSDK#initializemethod. - From now all connections to beacons needs to be authorized. If a beacon is not registered to your account, you will not be able to connect to it.
- Estimote SDK's
AndroidManifest.xmlusesBLUETOOTH,BLUETOOTH_ADMINandINTERNETpermissions. - Yes, there is single point of initialisation of the SDK.
// App ID & App Token can be taken from App section of Estimote Cloud.
EstimoteSDK.initialize(applicationContext, appId, appToken);
// Optional, debug logging.
EstimoteSDK.enableDebugLogging(true);-
All exceptions within the SDK has been unified and exposed in
com.estimote.sdk.exceptionpackage. -
That means some breaking changes:
Lclass is no longer available, in order to turn on debug logging useEstimoteSDKclass.BeaconConnection.ConnectionCallback&BeaconConnection.WriteCallbackmethods have been changed to contain apropriate exception when happens.
- Fixes Estimote#59: compatibilty with Android L
- Fixes Estimote#55: it is safe to use library from remote process
- CAN BREAK BUILD: MonitoringListener returns list of beacons the triggered enter region event (Estimote#18)
- Better messaging when BeaconManager cannot start service to scan beacons (Estimote#25)
- Fixed bug in SDK when other beacons are around (Estimote#27)
- Introducing ability to change beacon's UUID, major, minor, broadcasting power, advertising interval (see BeaconConnection class).
- Dropping Guava dependency.
- Fixes bug when simulated beacons were not seen even when using Estimote's proximity UUID.
- Background monitoring is more robust and using AlarmService to invoke scanning.
- Default values for background monitoring were changed. Scanning is performed for 5 seconds and then service sleeps for 25 seconds. Those values can be changed with BeaconManager#setBackgroundScanPeriod.
- Beacons reported in RangingListener#onBeaconsDiscovered are sorted by accuracy (estimated distance between device and beacon).
- Bug fixes.
- IMPORTANT: package changes BeaconService is now in
com.estimote.sdk.service service. You need to update yourAndroidManifest.xmlservice definition tocom.estimote.sdk.service.BeaconService. - Support for monitoring regions in BeaconManager.
- Region class: it is mandatory to provide region id in its constructor. This matches CLRegion/ESTBeaconRegion from iOS.
- Beacon, Region classes now follow Java bean conventions (that is getXXX for accessing properties).
- Debug logging is disabled by default. You can enable it via
com.estimote.sdk.utils.L#enableDebugLogging(boolean).
- Initial version.