- Added support for Android SDK 31+ (including fixes for android:exported, PendingIntent flags, new necessary AndroidManifest permissions)
- Added new
onError
callback toProximityTriggerBuilder
to prevent app crashes e.g. while trying to scan without permissions.
- Added support for
Estimote LTE beacon
in theBluetoothScanner
.
- Added support for Android Pie (API 28)
- Improved error handling when scanning for Estimote Secure Packets (Enabled by default unless you build your
ProximityObserver
with.withEstimoteSecureMonitoringDisabled()
.
- Updated compatibility with IndoorSDK
- Updated targetVersion to API 26
- Removed duplicated onError being called when an BLE error ocurrs.
- Changed API of ProximityObserver. Now observatuion starts using method
startObserving(zones...)
- Zones are now created using dedicated builder
ProximityZoneBuilder
. onErrorAction
is nowonError
onEnterAction
is nowonEnter
onExitAction
is nowonExit
onChangeAction
is nowonContextChange
ProximityAttachment
is nowProximityZoneContext
whioch contains all the necesarry info about beacon attachment, id, and tags.- Changed packaging, so it may be needed to update your imports.
- Fixed a bug, where setting custom
onError
threw an exception when used from Java code.
- Fixed a bug where beacons with no attachments assigned were not triggering enter/exit actions.
- OnError action is now properly called on the main thread.
- Now ProximitySDK uses "tags" for monitoring.
.forAttachmentKeyAndValue()
is now deprecated. Use.forTag()
ProximityAttachment
is nowProximityContext
, which contains tags, attachments, and useful info for context of entering/exiting given zone.- Fixed #51 - a crash when user has revoked Location Permissions.
- Added support for large beacon deployments (100+ beacons).
- Added local persistance for cloud attachments. Now the
ProximityObserver
will fetch data from the cloud on everystart()
if the network is available. If not, it will use the locally persisted data. This way you can start scan without the internet access, provided that you have launched it at least once when network was available. - Fixed #45 where
UnhandledErrorException
was being thrown by our internal Analytics module on every proximity observation start.
- Added support for phones not supporting batch scanning.
- Included all the previous changes from 0.4.2 that were not introduced by mistake (I forgot to merge the feature branch, don't do it).
- Fixed uncatched exception being thrown when scan error appeared. Now it is being correctly reported via
onErrorAction
. - Fixed problem with Notification being called many times when using
.withScannerInForegroundService(...)
- Starting
ProximityObserver
when Bluetooth is disabled now results inonErrorAction
being called.
- Fixed unhandled crash when
onScanFailed
was being called from BLE stack on some phones. Now it is propagated properly to youronErrorAction
.
- Breaking changes: Changed
EstimoteCloudCredentials
andProximityAttachment
packageges toproximity_sdk.proximity
package. This should allow you to have all our classes in one package, so only one import will be necessary. You should fix your imports after updating to this version. Disclaimer: We're doing such changes only throughout the beta (0.x.x.) releases. This won't take place in the full release after1.0.0
anymore - I promise :) - Fixed #32 where NPE was throw from
TriggerBroadcastReceiver
without even using it.
- Fixed
IllegalArgumentsException: null notification
in foreground service when disabling location permission. - Added warning when no attachments were found in cloud for defined proximity zones.
- Breaking changes: Changed module name
scanning-sdk
toscanning-plugin
. If you usedBluetoothScanner
class you might need to update your imports. - Added support for phones not supporting offloaded hardware filtering. This doesn't fix error code -99 related issues for now.
- Fixed wrong timeout unit (always SECONDS) in launching scans with timeout in
BluetoothScanner
- Added cache-related improvements to Estmote Secure Monitoring
onExit
events are now being reported if beacon signal is completely lost. The delay will by slightly longer than time for typicalonExit
invocation.
- Added missing plugin dependency
- Added Estimote Secure Monitoring support.
ProximityObserver
now observes for both encrypted and unencrypted Estimote packets. You can disable this using.withEstimoteSecureMonitoringDisabled()
when building yourProximityObserver
. - Telemetry reporting is now enabled by default. Use
.withTelemetryReportingDisabled()
to disable it.
- Hotfix for
NoSuchMethodError
being thrown when starting observation.
- Fixed #6 where
IllegalStateException
was thrown when trying to stop scanning while bluetooth adapter was null/not started. This exception is now being catched and an warning log will be printed - you can handle this case in yourwithOnErrorAction
inProximityObserver
.
- Fixed a bug when attachments with the same key were not resolved.
- Attachments are now resolved from dedicated cloud
Beacon Attachment tab
, and no more from JSON strings coded as tags. - Deprecated
forAttachmentKey("yourKey")
when creatingProximityZone
. Now you need to use key:value pairs. Using deprecated method will work as callingforAttachmentKeyAndValue("yourKey", "")
- Hot-fix for
ProximityTrigger.Handler
where callingstop()
caused crash.
- Added
ProximityTrigger
for displaying notification from your app when user enters the proximity zone. It can be accessed usingProximityTriggerBuilder
.
-
Added a possibility to access entire beacon's attachment payload as Map using
getPayload()
method inProximityAttachment
(e.g. for use in onEnterAction). -
Marks
hasPair()
inProximityAttachment
as deprecated - get entire payload and use Map access methods instead.
ProximityObserverFactory
is nowProximityObserverBuilder
- Choosing whether to use simple scanner, or scanner wrapped in foreground service is now done in
ProximityObserverBuilder
using.withScannerInForegroundService(notification)
proximityObserver = ProximityObserverBuilder(applicationContext, credentials)
.withScannerInForegroundService(notification)
...
.build()
- Starting
ProximityObserver
is now done using.start()
:
observationHandler = proximityObserver
.addProximityZones(venueZone, beetrootDeskZone, lemonDeskZone)
.start()
- Added support for uploading telemetry data to Estimote cloud from beacons nearby. You can turn it on while building
ProximityObserver
object:
proximityObserver = ProximityObserverBuilder(applicationContext, credentials)
.withTelemetryReporting()
...
.build()
Note: You can see the telemetry data in your Estimote Cloud account for each individual beacon. There should be a chart with data such as light level, or temperature. Remember, that enabling telemetry data uploading will make device to use slightly more battery due to an additional scan for Estimote Telemetry
packets.
- Added a possibility to disable Analytics data cloud reporting (It is turned on by default):
proximityObserver = ProximityObserverBuilder(applicationContext, credentials)
.withAnalyticsReportingDisabled()
...
.build()
- Fixed #4 when disabled bluetooth were causing NPE.
- Added helper class to handle checking for requirements needed to scan for beacons. The class is
RequirementsWizard
, and it is located in our helper library. Add this line to yourbuild.gradle
file:
compile 'com.estimote:mustard:0.1.0'
Use it like this:
RequirementsWizardFactory.createEstimoteRequirementsWizard().fulfillRequirements(
applicationContext,
onRequirementsFulfilled = { /* Start proximity observation here */ },
onRequirementsMissing = { /* Handle missing requirements here */ },
onError = { /* Handle errors here */ }
)
Why it is in a separate library? Because it uses Android UI support libraries to display default dialogs for user to enable bluetooth, etc. And we don't want to force you to use them in your app. If you need a custom behavior, feel free to implement your own requirements checker.
- Added support for Android Oreo 8.1 (API 27)
- Added Analytics to the
ProximityObserver
.- Your Enter/Exit events are now reported for each beacon.
- You can check analytics data in Estimote
- Minor improvements to the scanning mechanism
- Introduced improvements to API. Some breaking changes appeared:
ProximityObserver.RuleBuilder
is nowProximityObserver.ZoneBuilder
ProximityObserver
has now methods:addProximityZone
instead ofaddProximityRule
ProximityObserver.ZoneBuilder
has fluent builder now.onExitAction
now returnsProximityAttachment
that was last visible.ProximityObserver.Handler
is now an interface.proximityRuleBuilder.withDesiredMeanTriggerDistance()
is now split into three methods:
inNearRange
inFarRange
inCustomRange(double)
with parameter in meters.
- Errors are now logged to Android logcat by default.
- Fixed the compilation error
unknown element: <uses-permission>
. There was a problem with wrong manifest merging. - Fixed problem when using
forAttachmentKey
was not triggering any actions - now it works properly.
- Added key-value tag support to
ProximityObserver