- fix exception when device is rebooted and sdk is not initialized
- fixed CANCEL notifications that appeared directly when SyncWorker was cancelled. These notifications will now only show, if the SyncWorker keeps failing for more than syncErrorGracePeriod
- Added DP3T.showShareTEKsPopup(...) and DP3T.uploadTEKs(...). This splits the functionality of DP3T.sendIAmInfected(...) into two functions. The functionality of DP3T.sendIAmInfected(...) remains unchanged
- Log all generated Notifications if devHistory is enabled
- Expose oldest shared key DayDate when calling DP3T.sendIAmInfected(...)
- Use Maven Central publishing instead of jcenter (Version 2.2.0 and up are available on Maven Central. Earlier versions are available on jcenter)
- Sync error states are now persisted
- Removed logic for next-day-upload for the TEK of the reporting day. With this change, you must make sure that Google configured EN for your country/app to always release the last TEK directly with a shortened rolling period.
- Refactored Workers to Kotlin CoroutineWorkers for better handling of blocking EN API calls
- Added DP3TKotlin class with suspend function to send fake infected request
- Added flag to enable federation gateway sync: by default flag is not set, can be configured to be explicitly true or false
- SignatureException is now a subclass of IOException
- make sure GoogleExposureClient does not block thread forever, but times out after 5min. This to prevent Workers to be stuck, if an EN method does not call the success or error callback, due to an error or misconfiguration in the EN framework.
- updated all dependencies
- updated to play-services-nearby-exposurenotification-1.7.2-eap.aar, make sure to update this in your project as well!
- BuildConfig contains now LIBRARY_VERSION_NAME and LIBRARY_VERSION_CODE as VERSION_NAME and VERSION_CODE are no longer generated by default.
- added configuration option to define the number of syncs that should be performed by day (min=1, max=6, default=6).
IMPORTANT: Make sure to update dp3t-sdk-backend to 2.0.0 or higher as this version of the dp3t-sdk-android requires new API endpoints.
- updated to play-services-nearby-exposurenotification-1.7.1-eap.aar, make sure to update this in your project as well!
- use exposureWindows to compute attenuationDurations
- exposureDays now returns all exposure days, not only the last one as in previous versions
- updated defaults for attenuationBucketThresholds, new values are 55 and 63
- add Experiment-Mode to calibration app to simplify experiments with multiple devices and the new ExposureWindows-API (see CALIBRATION_APP_USAGE.md for details)
- expose EN-Module version, this can be used to extend the userAgent to be able to handle potential bugs in future EN versions from the backend
- Version 2.0.0 of the SDK will require EN module version >= 1.6, if run on older versions a notification will be generated asking the user to update Google Play Services
- add config option DP3T.setNumberOfDaysToConsiderForExposure() to define how many days after the exposure an exposure should be considered
- add config option DP3T.setNumberOfDaysToKeepExposedDays() to define how many days after an exposure is reported, this should be kept
- support location less scanning on Android 11
- fix state update bug when EN are activated/deactivated outside of the app
- update targetSdk to 30, use gradle 6.6.1 and Android-Plugin 4.0.1
- fix #206
- exposed days are now deleted 14 days after reporting the exposureDay (before they were deleted 10 days after the exposure which could be only 1 day after reporting)
- handle same day release of TEK: if we receive the current days TEK directly, we do a fake request the next day. Otherwise, the current days TEK is uploaded the next day as before.
- the number of uploaded keys has been increased to 30, because with same day release of keys it is possible to have more than 14 TEKs for the past 14 days
- upgraded to play-services-nearby-18.0.3-eap (adds a service for Google to restart our application after force stop starting v1.5)
- add success and error callback to senFakeInfectedRequest
- add response body to StatusCodeException
- fix logic for when a sync is considered successfull in HistoryDatabase (only if no errors)
- less frequent error notifications (only once per error while errors persist, wait 5min for GPS/Bluetooth state changes, wait 24h before showing EN API Errors)
- prevent rate limit errors when EN Api returns an error
- do not show http response code 504 error directly (like we already did for 502 and 503)
- fixed serialization issue in combination with core library desugaring
- prevent sync from running when ExposureNotifications disabled
- updated readme
- additional error state for not enough disc space
- improve sync logic to prevent rate limit issues with google api (sync always at 6am/6pm Swiss time!)
- schedule sync tasks only every two hours to match iOS logic
- only return latest exposure date to the app
- do not show statuscode error 502 and 503 directly
- make fake data in exposed requests more realistic
- increased time delta check to 10min
- improve history logging
- bugfix for user-visible logs
- new sync error state for ssl/tls errors
- allow export of log database in calibration flavor
- add database for user-visible logs (event history)
- more logs
- code cleanup
- reduce number of sync requests and prevent rate limit issue
- improved error logging
- cleanup keyfiles after insertion
- do not show sync error if syncing/tracing is disabled
- set sync times to 6am and 6pm local time
- more flexibility for errorState
- add new formula for exposure detection
- improved error notification handling
- make sure exposure days are only flagged as deleted to prevent renotification
- switched to GAEN framework
- Change signing of test calibration app
- Make location hardware optional
- updated contact logic window size to 5min
- simplified contact logic and increased threshold
- Change 16bit UUID to DP3T registered FD68
- improved sync signature exception handling
- Add logs to sync worker
- Option to pin TLS certificates of backend endpoints
- provide a public key to authenticate bucket response
- stop tracing after reporting positive
- make contact logic parameters configurable
- fix attenuation calculation
- revert premature dependency update
- Switch default advertise mode to BALANCED
- Change exposure logic to count all exposure windows per day (breaking database change, needs reinstall)
- use attenuation for thresholds instead of rssi
- improved error handling for sync requests
- add device info to calibration database
- add log entry for every handshake (ephId) received
- use timestamp instead of DayDate to report key to backend
- make sure location services are enabled and report error otherwise, needed for BLE scanning to work
- Add more options to Calibration app to test Bluetooth settings
- Set all default scan and advertise settings explicitly
- Show Version in Calibration app Parameters tab
- Add Changelog file