19/01/2023 Version 1.3.4
Version 1.3.4 fixes a possible null object crash if the phone is offline when the SDK is started for the first time.
13/01/2023 Version 1.3.3
Version 1.3.3 is identical to 1.3.2 apart from updating all dependencies to recent stable versions
androidx room to version 2.4.3
androidx core to version 1.9.0
androidx lifecycle-common-java8 to version 2.5.1
com.squareup okhttp to version 4.10.0
com.amazonaws (cognito and kinesis) to version 2.61.0
android play-services-location to version 21.0.1
13/01/2023 Version 1.3.2
Version 1.3.2 targets Android API level 33, and also includes some minor enhancements.
- Targets API 33.
- Fixes an error parsing HTTP timestamps when locale is not US to improve time synchronisation.
- Prevents another foreground service restart for one minute after the service was last stopped. This will avoid repeated service start notifications when moving the app quickly between foreground and background.
- Makes Foreground Service Notification dismissible. Android 13 users will be able to dismiss the service notification, but the foreground service stays running.
Further information on Foreground Service Notifications:
- Android 12 User sees the sticky non-dismissible notification for the foreground service whether or not the app has declared notifications in the manifest, or the user has granted runtime notifications permission.
- Android 13 without user notification permission There is no notification at all. The user can see the service (and stop it) in the new FGS task manager
- Android 13 with user notification permission The user sees the notification for the foreground service, but it is dismissible. If it is dismissed, the service keeps running. The user can see and stop the service in the new FGS task manager.
01/08/2022 Version 1.3.1
Version 1.3.1 is a maintenance release. But it includes fixes for 3 reported crashes as well as efficiency (network / battery) improvements. So we recommend all apps upgrade to 1.3.1
Bug fixes and improvements
Fixed two null pointer exception crashes affecting the minority of users when the SDK first starts.
Fixed a concurrent modification exception crash affecting the minority of users while the SDK is running.
Updated the sqllite database to ensure compatibility when upgrading from one version to another.
Changed the way data is sent to the cloud, resulting in network / battery improvements.
09/06/2022 Version 1.3.0
Version 1.3.0 does not introduce any major features, but fixes important crashes, and we recommend all apps upgrade to 1.3.0
SDK status methods
New methods introduced that provide the app with current SDK status
CrowdConnected.getInstance().isRunningSuccessfully()
CrowdConnected.getInstance().isNavigationRunning()
Bug fixes and improvements
Fixed crashes (particularly but not exclusively on Android 12) relating to starting a foreground service in the background.
Fixed a rare crash relating to concurrent modification.
Fixed an issue that caused the SDK version to be incorrectly reported to our platform.
Fixed an issue that could cause the app to crash if beacons were misconfigured in our database.
Improved API polling so that is dynamic, improving battery and network efficiency.
Throttle rate at which aliases are sent to the platform to prevent spamming.
09/02/2022 Version 1.2.0
Version 1.2.0 is a major release, and we recommend all apps upgrade to 1.2.0
Android 12
The library now has a targetSdkVersion of 31 (Android 12).
The manifests include legacy permissions needed to scan for beacons (BLUETOOTH and BLUETOOTH_ADMIN) and also the new permissions of BLUETOOTH_SCAN and BLUETOOTH_CONNECT for Android 12.
ACCESS_COARSE_LOCATION has also been added to the manifests, as this is now necessary whenever ACCESS_FINE_LOCATION is required.
For the library to function, apps need to request runtime ACCESS_FINE_LOCATION permission from all users, and additionally for targetSdkVersion >=31 only, runtime BLUETOOTH_SCAN AND BLUETOOTH_CONNECT permissions.
Dependencies have all been updated to the latest stable versions.
Changes to location permission
The library can now be safely started if location or Bluetooth runtime permissions have not yet been granted by the user.
An additional restart() method has been provided, which can be called when permission has been granted.
This relaxes the previous requirement that the library should be started whenever the app starts, but only if location permission has been granted, and also after permission has been granted.
The new library version can be started whenever the app starts without checking for runtime permissions. The restart() method should then be called when either location or Bluetooth permissions have been granted.
Geo and IPS in a single app
From version 1.2.0 the geo module and IPS module can be included in a single app. The library intelligently switches between the positioning technologies.
The location object returned via the callback now has any additional type property which has the values 'IPS' or 'GEO'.
Multiple geo data collection zones.
Previously only one location for background data collection could be specified. From version 1.2.0, multiple locations can be specified, and background data collection will start when the app is opened inside any one of the zones and will stop once the user has exited all zones.
Bug fixes and improvements
- Fixed two issues that could cause the foreground service to fail to stop.
- Improved handling of changes to config after the library has been started.
26/01/2022 Version 1.1.6
Fixes issue that causes crash on Android 12 whenever foreground service is started.
17/12/2021 Version 1.1.5
Locations provide X and Y in display units (pixels)
For floors using built-in floorplans, or ExpoFP imported floorplans, the Location object provided to the LocationCallback now has x and y coordinates in display units as well as meters. These values can be passed straight to the map with no transform necessary. Use the getXPixels() and getYPixels() methods.
Success Callback
The StatusCallback provided to the library on startup now has an onStartUpSuccess method as well as the onStartUpFailure method. The app should wait until the success callback has been received before interacting with the library. In particular, setting the location callback, and setting any aliases must be done after receiving the success callback.
This prevents potential issues that were possible if the location callback was set, or aliases were set before the library had completely initialised.
Eddystone beacon support
For indoor positioning, Eddystone beacons are now supported as well as iBeacons.
Enhancements
Better floor selection algorithm in the indoor positioning engine.
Bug Fixes
Various bug fixes improving stability.