Releases: RadiusNetworks/proximitykit-android
Version 0.15.0 - August 9, 2018
Enhancements:
- Support Android 8.1 (API 27)
- Support Google Play 15.x
Version 0.14.0 - January 11, 2018
Enhancements
-
Support Android 8.0 (API 26)
Android 8.0 imposes new restrictions on BLE scanning while in the background.
This release changes the behavior on Android 8 to use theJobScheduler
to
perform background scans. Due to limitations of the OS these background scan
jobs may not be scheduled faster than once every 15 minutes. However, when a
scan job completes, if no beacons are detected a low power scan will begin.
This scan will continue to run until any beacon is detected at which point
theJobScheduler
will start again.Foreground behavior remains the same as prior releases even on Android 8.
Additionally, these background changes only affects devices running Android
8.0 or newer. Devices running older Android versions will continue to use the
existing legacy behavior.For more details see Background Execution Limits
and Background Location Limits. -
Support Google Play 11.x
-
Sends a
ProximityKitGeofenceNotifier.didDetermineStateForGeofence
with a
state ofUNKNOWN
when location services is disabled after geofences have
been registered -
Hooks into location setting broadcasts for improved geofence support on
devices running KitKat (API 19) or higher -
When location services is disabled, or otherwise stops providing location,
ProximityKitGeofenceNotifier#didDetermineStateForGeofence
will now be
called with stateRegionEvent.UNKNOWN
Bug Fixes
- Fixes an issue where after geofences have been registered and location
services disabled, then re-enabled, not all geofences may be re-registered
after the next sync - Fix race condition where toggling geofences on/off may have resulted in
inconsistent geofence registrations
Version 0.14.0-beta.1 - November 30, 2017
Enhancements:
-
Support Android 8.0 (API 26)
Android 8.0 imposes new restrictions on BLE scanning while in the background.
This release changes the behavior on Android 8 to use theJobScheduler
to
perform background scans. Due to limitations of the OS these background scan
jobs may not be scheduled faster than once every 15 minutes. However, when a
scan job completes, if no beacons are detected a low power scan will begin.
This scan will continue to run until any beacon is detected at which point
theJobScheduler
will start again.Foreground behavior remains the same as prior releases even on Android 8.
Additionally, these background changes only affects devices running Android
8.0 or newer. Devices running older Android versions will continue to use the
existing legacy behavior.For more details see Background Execution Limits
and Background Location Limits. -
Support Google Play 11.x
Version 0.13.1 - November 30, 2017
Bug Fixes:
- Fix bug causing the configuration setting
ALLOW_UNSUPPORTED_GOOGLE_PLAY
to
always befalse
after a sync. - Fix manifest element nesting which may cause a lint error on manifest merge
Version 0.13.0 - May 19, 2017
Enhancements:
- Add new public method
ProximityKitGeofenceRegion#regionEquals
to check
whether another region equals this one - Add new public method
ProximityKitBeacon#getBatteryLevel
allowing access
to beacon battery level as reported by AltBeacon advertisements - Support Android 7.x (API 24 and 25)
- Support Google Play 10.x
- Persist region state across restarts (see
ProximityKitMonitorNotifier#didDetermineStateForRegion
for more details) - Provide
ProximityKitMonitorNotifier#didDetermineStateForRegion
callback for
each kit region on initialProximityKitManager#start
and on a successful
kit sync - Improve sync efficiency by using E-Tags for conditional sync
- Add new public method
Kit#getGeofences
allowing access to the
ProximityKitGeofenceRegion
objects defined in the kit - Support toggling between running separate
ProximityKitManager
instances;
only a single instance is allowed to run at any one time - New interface
ProximityRegion
and classRegionEvent
for general region
monitoring broadcasts throughLocalBroadcastManager
(requires app compat) - Both
ProximityKitBeaconRegion
andProximityKitGeofenceRegion
implement
newProximityRegion
- Add new public method
KitOverlay#getIdentifier
allowing access to the
entity identifier which uniquely identifies the object within the kit - Add several new code type annotations to help improve IDE intellisense
Bug Fixes:
-
Inherit metadata specified by parent regions in child regions / beacons
-
Fix analytic upload timestamp formatting
-
Fix edge case crash caused by parsing a malformed BLE packet
-
Fix UI slowness, and possible hang, in Android 6+ when Location Services
permissions are revoked while scanningIt is still recommended that apps always check permissions and BLE/Location
Services state when returning from the background. If the appropriate
permissions or services are not in the desired state either engage the user
or explicitly stop theProximityKitManager
. -
Fix edge case
Context
leak with manager creation -
Include service UUID PDU in Eddystone transmissions
-
Protect against
SecurityException
crashes caused by Samsung Knox -
Fix crash caused by
IllegalStateException
when bluetooth adapter is off for
HTC devices on Android 6.0+ -
Prevent UI lag, and possible ANR (Application Not Responding) message, by not
blocking the main thread when starting or stopping a bluetooth scan -
Prevent duplicate region enter events on kit sync
-
Don't start scanning when BLE feature is unavailable
-
Use elapsed real time for sync intervals avoid potential issues with forced
clock times
Deprecations:
ProximityKitGeofenceRegion#asGeofence
has been deprecated in an effort to
makeProximityKitGeofenceRegion
Google Play agnostic in a future releaseBeaconManager
is now fully deprecated. This class is a legacy internal
implementation detail which was accidentally exposed in the published public
API. It is slowly being phased out and will be removed in the next major
release.ProximityKitManager#getBeaconManager
has been deprecated inline with the
BeaconManager
deprecationProximityKitManager#getBeaconAdapter
has been deprecated as it was always
an internal implementation detail that was accidentally exposed in the
published APIKitMap#getOverlays
has been deprecated and replaced with
KitMap#getGeofences
; theKitOverlay
entity is an internal representation
and was not meant to be exposed publiclyProximityKitManager#context
has been deprecated as it's an internal
implementation detail and not intended to be modified outside of the libraryProximityKitManager#syncIfNeeded
is an internal implementation detail and
has been deprecated as part of the public APIProximityKitManager#setKit
is an internal library implementation detail and
not meant to be part of the public APIBeaconManager#getInstanceForApplication
is no longer used and will be
removed in the next major release- The entire
com.radiusnetworks.proximity.licensing
package is now
deprecated; this includesConfiguration
,LicenseManager
,
LicensingException
, andPropertiesFile
. This package and all classes will
be removed in the next major release with no replacements.
Breaking Changes:
- Removal of deprecated constructor
ProximityKitManager()
; this constructor
was fundamentally broken and created instance which always crash - use
ProximityKitManager#getInstance(Context, KitConfig)
instead
Version 0.12.3 - November 7, 2016
Bug Fixes:
- Fix bug causing rapid kit syncs when setting a custom sync interval
Version 0.12.2 - October 27, 2016
No public facing changes
Version 0.12.1 - September 16, 2016
Bug Fixes:
- Fix crash on wifi or power state change which occurs before a Proximity Kit
manager has been created - Fix race condition queuing multiple syncs on wifi or power state change
- Respect configured sync interval when syncing on wifi or power state changes
- Use sync interval provided in kit config
- Prevent duplicate geofence enter events on sync
Version 0.12.0 - September 7, 2016
Enhancements:
- Regenerate app id if value becomes corrupted
- Add support for version 9.x of the Google Play services library
- Adds config setting
KitConfig.ALLOW_UNSUPPORTED_GOOGLE_PLAY
to by-pass the
Google Play version check. This may result in a runtime crash as it will
allow running against untested versions of Google Play. - Begins including nullability annotations to provide better insight into the
public API and help developers guard againstNullPointerException
only when
necessary. See https://developer.android.com/studio/write/annotations.html
for further details. - Support caching multiple kits
- Retry analytic data upload when no network is available
- Attempt analytic upload with out delay; previously there was a 30 second
delay from the closing of a session and the upload - Attempt analytic upload on successful kit sync
- Add ability to transmit beacon advertisements on supported hardware
Bug Fixes:
- Improve thread safety around starting and stopping Proximity Kit Manager
- Improve thread safety around background time sync; ensuring only a single
sync task is ever queued at a time - Fix geofence region monitoring race condition which may exclude a region
- Monitor existing geofences on
start
from local cache - Fix loading kit cache on unavailable network
- Fix race condition which may drop some analytic data
- Fix queuing duplicate analytic upload job on upload error
- Move analytic upload off
AsyncTask
queue on Android Honeycomb and newer - Prune analytic data after upload
Breaking Changes:
- Not exactly a breaking change but a slight behavior modification. The
MissingKeyException
andMissingValueException
classes now do not
automatically append the key name to the provided detail message. This change
is to fall more inline with how existing exceptions work as well as provide
better support for internationalized messages in the future.
Deprecations:
-
The
LicenseManager
is a legacy internal implementation detail. It is in the
process of being phased out. In this initial round the following publicly
exposed methods are now deprecated and have been turned into no-ops:LicenseManager.getServerCheckCount()
LicenseManager.resetLicenseCheck()
LicenseManager.validateLicense()
LicenseManager(Context, Configuration, String, Date)
-
KitOverlay()
is an internal implementation detail which was not meant to be
exposed in the public API. It may be retained only as a private method in a
future release. -
Deprecate support for 4.x - 7.x of the Google Play service library.
This only adds a warning message to the logs when an app is built against a
version of Google Play services in this range. Apps will continue to function
as expected but developers are encourage to move to a newer version of Google
Play.For historical reference version 4.4.x of Google Play services was released
in May 2014. The most recent deprecated version, 7.8.x, was released in
August 2015.
0.12.0-pre
This is a pre-release. Please use the official 0.12.0 release instead.
Enhancements:
- Regenerate app id if value becomes corrupted
- Add support for version 9.x of the Google Play services library
Bug Fixes:
- Improve thread safety around starting and stopping Proximity Kit Manager
- Improve thread safety around background time sync; ensuring only a single sync task is ever
queued at a time
Breaking Changes:
- Not exactly a breaking change but a slight behavior modification. The
MissingKeyException
andMissingValueException
classes now do not
automatically append the key name to the provided detail message. This change
is to fall more inline with how existing exceptions work as well as provide
better support for internationalized messages in the future.