Android
Last updated
Last updated
Support for detecting and reporting car crashes with varying severity.
Severity information to vehicle crash events. See .
Improved phone handling detection under certain sensor conditions.
When calling , the returned UserContext will now have a that is set to a more recent location during an ongoing trip.
A new property to Event
, which indicates whether the event is provisional. A provisional event is identified based on real-time detections, but may change in the near future as more data is collected and processed, to filter out unwanted artifacts. For example, a provisional car transport may get identified, followed by a provisional bus transport. After the full trip is complete, these provisional events may get merged into a single final car event. Currently, provisional events apply only to 'transport' types.
Provisional-aware EventTimeline API methods: getTimelineUpdatesIncludingProvisionalEvents, getTimelineEventsIncludingProvisionalOnes, and setProvisionalAwareTimelineUpdateListener. You can use these to retrieve/receive all events, including provisional ones.
Provisional-aware UserContext API methods: requestUserContextIncludingProvisionalEvents and addProvisionalAwareUserContextUpdateListener. You can use these to retrieve/receive all events, including provisional ones.
The UNEXPECTED_ERROR
value has been added to the RequestUserContextFailureReason
enum.
The TRANSPORT_IS_PROVISIONAL
value has been added to the OccupantRoleFeedbackResult
enum. Submitting occupant role feedback for provisional transports is not allowed.
Improved the on-device transport mode detection algorithm. Real time transport events now undergo a post-trip reprocessing to refine and enhance the results. Consequently, transport events initially detected in real-time are subject to modification upon trip completion, and are classified as "provisional" until finalized. This change impacts your app if it relies on real time transport events. The following SDK APIs are impacted:
Event timeline: provisional transport events are not available via the existing APIs. Instead, use the new provisional-event aware APIs to receive them. See the "Added" section above.
Driving insights: driving insights are not available for a provisional transport, even upon the completion of the transport. Insights become available after the transport is finalized—typically, immediately after the entire trip is complete.
User's current context: provisional transport events are not available via the existing APIs. Instead, use the new provisional-event aware APIs. See the "Added" section above.
The minimum supported Android API level for SDK detections has been bumped from 23 to 24 (i.e. from Android 6 to 7). When initializing the SDK on an unsupported OS version, the initialization will fail with reason UNSUPPORTED_OS_VERSION
.
Occasional crash caused by a NullPointerException
, when attempting to call hasError
on a null GeofencingEvent
instance.
Minimum Supported Android Version
Starting from v6.11
, planned for the end of February 2025, the minimum supported Android API level for SDK detections will change from 23 to 24 (i.e. from Android 6 to 7). You can still target API level 23 for your app builds, however, detections will not be possible, and the SDK initialization will fail with reason UNSUPPORTED_OS_VERSION
.
Occasional SQLiteFullException
that was causing the enclosing app to crash.
Native crash originating in the TensorFlow Lite library v2.16.1
.
FOREGROUND_SERVICE_HEALTH
permission from the SDK's manifest, to address app rejection issues on Google Play.
<receiver>
manifest declarations have been updated to disable being exported.
Improved the detection of public transport modes, with the help of public transport route information (e.g. train and bus routes), which gets stored on the device and utilized offline.
Updated TensorFlowLiteC dependency to v2.16.1. If you have defined an explicit dependency on TensorFlow Lite in your app, please make sure to either update its version to v2.16.1, or remove it.
Update to the dependency libraries related to the lifestyle insights feature (e.g. user segments, venue-type identification). These are now built against Kotlin v1.8.22.
Stability improvements to the disk storage monitoring component of the SDK.
Stability improvements to the speed limit data cleanup in the SDK.
IllegalArgumentException when uploading payloads to the Sentiance platform, caused by an interrupted network connection. A fix was previously attempted in v6.8.5, but had not addressed the root cause.
Support for remotely tuning the overall safe driving score.
IllegalArgumentException when uploading payloads to the Sentiance platform, caused by an interrupted network connection.
Resolved a minor issue related to SDK database resource usage.
Unified the Driving Insights "overall safety score" formula across all transport types.
Failure to persist and report transport and stationary timeline events, due to an internal database inconsistency, when updating directly from SDK v6.4.0 to v6.7.0 or later.
A rare crash caused by recursive calls during payload submission.
A rare issue where the termination of a phone call during a transport is not properly registered, thereby negatively impacting the transport's call-while-moving score.
The Kotlin standard library is now a dependency of the core Sentiance SDK library.
Improvements to the transport classification of public transport modes.
The Driving Insights feature has been updated to remove its (undocumented) dependency on the user-context artifact, which was necessary for legal score computation. This dependency is no longer needed.
The SDK's Kotlin dependency has been update to v1.8.22.
A rare issue that resulted in an ongoing foreground service notification, after the SDK had been reset and a user recreated.
An occasional runtime exception occurring while upgrading ML models.
An occasional IndexOutOfBoundsException, when processing sensor data during detections.
An occasional SocketTimeoutException, when parsing a response from the server.
An occasional SocketTimeoutException, when parsing a response from the server.
Improved vehicle crash detection for motorcycles. Benefiting from this improvement requires an SDK configuration change for your app. For more information, reach out to the Sentiance support team.
Improved the runtime performance of the following sensor processing features: crash detection, transport classification, harsh driving detection, and phone usage detection.
A rare occurrence of ConcurrentModificationException when resetting the SDK.
Updated the kotlinx-datetime library dependency of the venue-mapper SDK module to v0.3.1.
A crash caused by ArrayIndexOutOfBoundsException in the venue-mapper SDK module, when the desugar_jdk_libs library is used.
Stability improvements to the venue and speed limit tile downloading components.
Proguard rule to prevent stripping of runtime SDK class annotations, in R8 full mode.
Increased the capacity for storing downloaded speed limit data.
Initialization failure on Oreo or lower, due to null app process name.
Initialization failure due to missing @InjectUsing annotation, addressed by the Proguard rule addition.
An issue that caused a small gap in the collected sensor data during the initial phase of a trip.
Transport mode detection for short transports.
Computation of the various safety scores for short transports.
Improved transport classification for certain app configurations.
Improved detection of car and motorcycle transport modes, for certain app configurations.
Improved harsh driving detection for motorcycles.
Removed the use of Amazon AWS credentials.
Support for syncing on-device transports and driving insights with the Sentiance Cloud Platform.
SDK initialization is now restricted to the app's main process. Initialization in a different process will fail.
Driving insights: updated the minimal transport distance and duration requirements for safety score calculation, to 500 meters and 3 minutes respectively.
A rare IllegalStateException thrown in v6.5.0, when refreshing venue/speed-limit information in the background.
FOREGROUND_SERVICE_LOCATION
and FOREGROUND_SERVICE_HEALTH
manifest permisisons to support Android 14.
Kotlin 1.6.21 is now the minimum required version for on-device functionality (applicable if you have a dependency on non-core SDK libraries).
The features "stationary venue-type mapping" and "user segment detection" have been disabled on Android versions 7 and lower, due to missing runtime dependencies.
Runtime exception on Android versions 7 and lower, caused by missing LocalDateTime
java class.
On certain devices, the venue type of stationary events returned by the user context API is always set to unknown.
Improvements to the on-device home and work location detection.
Potentially lingering SDK foreground service, when a user gets deactivated.
Stability fixes to the home/work detection and venue-type mapping features.
Excessive battery usage while detections are disabled, caused by an unterminated Android job.
Runtime exception caused by stack overflow during stationary venue-type mapping.
Stability improvements to home and work venue detection.
A new Driving Insights feature, which provides information about a user's driving behaviour. In this first version, the SDK detects harsh driving events (e.g. acceleration, braking, and turning), which are then used to compute a vehicular transport's smooth driving score. This data is available via the new DrivingInsightsApi, which allows the subscription to, and retrieval of DrivingInsights and HarshDrivingEvents. This feature is accessible via the sdk-driving-insights artifact, and must be enabled by Sentiance before use.
Rare issue that causes the incorrect determination of the end of a stationary.
Runtime exception when retrieving historic app exit reasons, as a result of buggy Android framework code on some Samsung devices.
A stability issue in v6.1.0 impacting http requests.
Proguard rules for Google Play Service Location library classes, which are required since SDK v6.2.1.
Runtime exception when targeting Google Play Services Location library v21.
Support for uploading additional SDK status information to the Sentiance Cloud Platform.
Stationary venue mapping has been update to an improved version, but that is limited to venue-type mapping. i.e. a stationary will no longer reference a specific venue, but a venue type instead.
Improved support for on-device user segment detection.
The Android target and compile API versions have been updated to 33.
Improved detection of delayed SDK initialization.
IllegalArgumentException caused by inconsistency during sorting a collection.
ForegroundServiceStartNotAllowedException when starting a service in the background.
NullPointerException when uploading logs to the Sentiance Cloud Platform.
BREAKING: UserContextUpdateCriteria.ACTIVE_MOMENTS.
BREAKING: The Moment class. UserContext no longer returns moments.
BREAKING: venueSignificance is removed from StationaryEvent, and moved to the Venue class. StationaryEvent now references a Venue.
BREAKING: VenueCandidates and Visit classes are removed. venueCandidates has been removed from StationaryEvent.
BREAKING: Venue now has a nullable location, which previously was not nullable. The location can be null when it's unknown, such as when a stationary has a venue significance of "point of interest". In this case, only the venue type is known, but not its exact location.
BREAKING: Venue no longer has venue name or labels.
Support for car, bus, train, and tram/metro transport mode detection, part of the user's current context information.
Internal support in the SDK to notify the Sentiance Cloud Platform that the SDK has been reset.
Improved the detection of user device interaction during trips.
Improved the error details that is returned to the app during failed user creation.
Detection of vehicle crashes that occur towards the end of a trip.
Improved the vehicle crash detection algorithm.
Improved the vehicle crash detection algorithm.
Failure to reset the SDK, when the SDK hasn't been initialized yet.
Invalid SDK state, when user creation is interrupted by app termination or unfinished user linking, requiring an SDK reset to be able to complete user creation.
A Sentiance user creation method that supports the existing user-linking flow, and a new authentication-code based flow. The new flow is the recommended approach for future integrations.
A dedicated SDK initializer that does not create a Sentiance user. To be used in combination with the user creation method.
Improved versions of asynchronous SDK methods that return PendingOperation
as a result (akin to a Java Future), instead of accepting success/failure callbacks, offering more flexibility and Kotlin friendliness.
Detection enabling and disabling methods that are persistent across app restarts, and that replace the SDK's start and stop methods.
CrashDetectionApi
for accessing and subscribing for vehicle crash detection info. This class is in the newly added com.sentiance.sdk-crash-detection artifact.
Ability to capture mini-dumps of native process crashes.
Ability to capture ANR data for troubleshooting on Android 11+.
Limited support for running detections when the location permission is while-in-use, and when the app is in the foreground.
Support for collecting various sensor data when the app is in the foreground.
Nullability annotations for all public methods and classes.
SdkStatus.userExists
and SdkStatus.detectionStatus
userExists
and isUserLinked
methods in the Sentiance
class, accessible without initializing the SDK.
Bumped the minimum support Android version to 6.0.
Required target Java language level is Java 8.
Switched to the R8 obfuscator/shrinker.
Switched to a modular artifact architecture. Some features are not extracted to their own modules. e.g. Crash detection is now in the com.sentiance:sdk-crash-detection artifact, which must be added separately to your app.
Vehicle crash detection functionality has been moved to the artifact com.sentiance:sdk-crash-detection. Related methods and classes have been moved to a different package.
MetaUserLinker
is renamed to UserLinker
.
MetaUserLinkerAsync
is renamed to UserLinkerAsync
.
MetaUserLinkerCallback
is renamed to UserLinkerCallback
.
SdkConfig.Builder.setMetaUserLinker()
is renamed to SdkConfig.Builder.setUserLinker()
Moved the following methods and classes to new package: invokeDummyVehicleCrash
, setVehicleCrashListener
, isVehicleCrashDetectionSupported
, VehicleCrashEvent
, VehicleCrashListener
init(SdkConfig, OnInitCallback)
reset(ResetCallback)
start(OnStartFinishedHandler),
start(Date, OnStartFinishedHandler)
and stop()
getUserAccessToken(TokenResultCallback)
startTrip(Map<String, String>,TransportMode, StartTripCallback)
and stopTrip(StopTripCallback)
submitDetections(SubmitDetectionsCallback)
SdkStatus.startStatus
and SdkStatus.locationPermission
Occasional ANR events caused by the SDK during start.
Proguard rule -keepattributes SourceFile, LineNumberTable
setCrashCallback(CrashCallback)
and CrashCallback
isInitialized()
SdkConfig.isForegroundEnabled()
TripProfileConfig
, TripProfileListener
, setTripProfileListener(TripProfileListener)
, and updateTripProfileConfig(TripProfileConfig)
SdkStatus.isLocationPermGranted
Improved the vehicle crash detection algorithm.
Updated the TensorFlow Lite dependency to v2.7.0.
Updated the vehicle crash detection ML model for TensorFlow Lite v2.7.0 compatibility.
Improved the vehicle crash detection algorithm.
A minor bug in the cash detector related to processing negative longitude and latitude coordinates.
Step count tracking (disabled by default).
Improved the vehicle crash detection algorithm.
Added support for vehicle crash detection when activity recognition permission is not granted.
Improved trip detection under certain inaccurate location conditions.
Added more leniency towards short interruptions to the SDK detections that are caused by toggled airplane mode, or changing of available location providers (usually a result of OS power saving optimizations).
Limited foregrounding SDK services when the debugger is attached, to prevent potential ANRs.
Legacy on-device trip profiling. This feature will be removed in the next major release.
Incompatible machine learning model usage when the SDK is downgraded.
SecurityException on Android 5 when the READ_PHONE_STATE permission is missing.
Avoid logging credentials in the SDK's private log files.
If you app supports Android 5, you must add the READ_PHONE_STATE permission in your app's manifest in order to allow the Sentiance SDK to detect phone calls. You can limit this permission to API level 22 by specifying android:maxSdkVersion="22".
Note: the absence of READ_PHONE_STATE in your app's manifest will cause the application to crash on Android 5. This is a bug that will be fixed in the next SDK version.
Support for targeting Android 12 in the host app.
HIGH_SAMPLING_RATE_SENSORS manifest permission for Android 12.
SCHEDULE_EXACT_ALARM manifest permission for Android 12.
ACCESS_COARSE_LOCATION manifest permission for Android 12.
Improved crash detection with an update to the internal crash detection model.
Exported all manifest components that define intent filters.
Specified mutability for internal Pending Intents.
Updated mobile call detection to work without requiring the READ_PHONE_STATE permission (on Android 6 and above).
Modified foreground service usage to support the new Android 12 restriction.
Handled the absence of the precise location permission. The SDK will stop detections if this permission (ACCESS_FINE_LOCATION) is not granted. A new status indicator called isPreciseLocationPermGranted has been added to the SdkStatus for this purpose.
Reduced the number of Android notifications that appear during stationary.
NullPointerException caused by JobScheduler.getAllPendingJobs() returning null in some instances.
Memory leak cause by holding a strong reference to an SDK service instance.
The READ_PHONE_STATE permission has been removed from SDK library manifest. This permission was previously capped at API level 22, using the maxSdkVersion attribute.
Occasional SecurityException when accessing the ConnectivityManager on Android 11+ devices.
Failure to detect some phone calls during trips.
A rare occurrence of a NullPointerException during internal SDK message handling.
Failure to initialize the SDK on some emulator images due to a divide by zero error.
Failure to run crash detection immediately after resetting the SDK.
Support for tracking app foreground and background state changes.
Support for collecting accelerometer range and max supported frequency.
Improve detection of tablet devices by taking the device's smallest screen width into account.
Changed
Use existing authentication token when submitting a token refresh request.
Add fail-fast mechanism during third party user linking if linking has not been completed.
Improve handling of out of order sensor data
Fix skipped events in some rare cases.
Stability improvements to the user authentication and sensor data collection.
Library dependency changes:
Removed compile-time dependency on com.google.code.findbugs:jsr305
Minor stability and timeline quality improvements.
Fatal exception when aborting service start-up due to uninitialized SDK.
Stability improvement in the SDK logging subsystem.
Support for on-device trip profiling and hard event detection. This feature is not enabled by default.
Support for remotely enabling "controlled trips only" detection mode.
Detection support for Android 4.4. and lower is now disabled.
The WRITE_EXTERNAL_STORAGE
permission is no longer requested by the SDK. Previously, this permission was requested up to API level 18. If you rely on the presence of this permission in the final manifest, please add it manually to your app's manifest instead.
Issues related to ANR and failed foregrounding of SDK services.
Properly reflect on the users timeline any SDK termination during trips.
Ensure long trips are split to no more than 4 hour durations.
Rare issue causing sensor timestamp misalignment.
Improve the detection of granting the background location access permission on Android 10+.
Update and replace the use of deprecated Google Play Services APIs.
Motion activity detection issue during trips.
A rare token refresh issue that causes an unreleased wakelock.
Other minor bugs.
The WRITE_EXTERNAL_STORAGE
manifest permission is now limited to API level 18 and lower.
Stop the internal heartbeat task when the SDK is stopped.
Fix an occasional NullPointerException that occurs during detections.
Android 10 permission support.
Report the app's notification setting (enabled/disabled) to the Sentiance Platform.
Report the device's Google Play Services version to the Sentiance Platform.
Keep a metadata journal to prevent sending duplicate user metadata requests.
Target API level is now 29.
Use Android's network capability API on Android 10.
Rare crash caused by a null pointer exception during call detection.
Rare crash caused by concurrent modification exception.
Properly capture unhandled exceptions (reported to the Sentiance Platform).
The Sentiance app secret is no longer stored by the SDK.
Improved stationary detection.
Faster detection of location permission grant.
Decrease the number of notifications shown during stationary.
Explicitly set the uses-feature
"android.hardware.location.gps" required
attribute to false
.
Properly detect and end ongoing (internal) SDK trips with poor location accuracy.
Support additional fine-tuning of the SDK's disk usage quota.
Rare crash caused by a NullPointerException in the ContinuousSensorStreamService class.
Remotely configurable sensor collection rate for non -R SDK versions.
Relax the high accuracy location mode requirement. Detections will also work with battery saving mode.
Occasional excessive wake-ups on Samsung devices.
Rare issue where duplicate detection payloads are uploaded to the server.
Rare issue where an invalid waypoint is added to a trip.
Send user-agent info to API calls.
Internal changes to user linking, sdk configuration updates, and SDK heartbeat data.
Issue related to incorrectly timed activity transition events supplied by play services.
Batched payload submission.
Voip call detection.
Improved trip detection.
Screen on/off detection during trips.
Fix crash when targeting a pre-12.0.1 version of Google Play Location Services.
Minor internal bug fixes and improvements.
Fixed a rare issue where the location availability sdk status value is incorrect.
Other minor bugs.
App version code in the device info payload.
Prevent creating very long stationaries when the device has been offline (no location updates or powered off).
Include geofence exit triggering locations in trips.
Drop payloads when the API responds with 413 (payload too large).
Reschedule SDK tasks with changed criteria.
Rare crash caused by shared SimpleDateFormat instance.
Prevent stopping of incoming location fixes during trips caused by high frequency requests (1 per 10 secs or higher).
Minor detection improvement.
Stuck stationary issue.
Alarms not triggering on Samsung.
Upload device location-mode, battery-saving state, and battery optimization config to the Sentiance platform.
Capture hourly heartbeat events to track SDK runtime.
Support uploading select SDK events (e.g. heartbeat) to the Sentiance platform over mobile data.
Support for uploading SDK logs over mobile data.
Detection improvements to some Samsung and Huawei devices.
Prevent premature user access token refreshes.
Minor bug fixes.
isBatteryOptimizationEnabled
isBatterySavingEnabled
isBackgroundProcessingRestricted
Updated min required Google Play Location Services version to 12.0.1.
Improved detections.
Minor bug fixes.
android.permission.FOREGROUND_SERVICE
permission required for Android 9.
Updated target API to 28.
Bug fixes.
Improved detection algorithm.
Bug fixes.
Support for sending mocked locations.
Improved detection algorithm.
Minor bug fixes.
Provide the ability to set the SDK's notification ID.
Improve stationary detection.
Fix google play console warning related to AWS credentials.
Disable SDK notifications for triggered trips flavor when no trip is ongoing.
Prevent LocationService from crashing during startup.
Stationary detection improvement.
More SDK logging.
Removed explicit allowBackup param from manifest.
Wakelock prevention and other minor fixes.
Support for meta users.
Remotely configurable required location providers.
Prevent automatic detections in triggered trips mode.
Location parameter of CrashCallback.onCrash()
is now nullable.
Vehicle crash detection algorithm update.
Various bug fixes.
A new driving insights feature for detecting the of the user during car transports (i.e. driver vs passenger). The occupant role is available at the end of a transport, in the .
A , for providing feedback on the detected occupant role of the user during car transports. The feedback is used on the device to improve the accuracy of future detections. See .
Support for assigning tags to transports. A tag is a key-value which can be assigned to an ongoing or future transport. The tag is included in the retrieved , after the transport has ended. See .
Waypoints in phone usage, call-while-moving, and harsh driving events. These waypoints indicate the segments of the transport where the corresponding event occurred. Some waypoints can be synthetic, indicated by .
A driving insights API for retrieving the average 'overall' safety score of the user, over a period of the last 7, 14, or 30 days. See .
and information to harsh driving events. A type is categorized as acceleration, braking, or cornering.
A new API for initializing the SDK in the background. See . This method must still be called on the main thread, during Application
class creation, however, it will internally offload the bulk of SDK initialization work to the background.
TensorFlow Lite library dependency has been updated to v2.16.1-sentiance.1
, which is a Sentiance-built artifact that patches the issue described .
Failure to invoke the Driving Insights listener that is set using .
Smart Geofences feature. You can use Smart Geofences to monitor points of interest, and get notified of entries and exits. See about the feature and its build dependencies, and for some sample code.
Several Kotlin related dependencies have been updated: kotlinx-datetime to v0.4.1; kotlinx-serialization to v1.5.1; kermit to v1.2.2; stately to v1.2.5. For more details, see .
Reduced the SDK's usage of PendingIntents for geofencing purposes, from 2 to 1. Please check for additional information.
A for controlling whether the SDK is allowed to use mobile data for uploading/downloading configuration and detection data.
Updated to more accurately reflect the SDK's view of accurate location availably.
Fixed an inconsistency between the SDK's state and the rest of the SdkStatus properties.
A new for querying historic events and subscribing for real time updates. See the how-to guide .
safety score, which is computed using phone calls that are detected during vehicular transports. Corresponding can be retrieved via the Driving Insights API.
safety score, which is computed using the traveled speed information during vehicular transports, in addition to the use of speed limit information that is downloaded and stored offline by the SDK. Corresponding can be retrieved via the Driving Insights API.
, which is computed using the other safe driving scores.
Support for targeting Android 14 (API level 34) at the app level. With this update, the manifest file of the core Sentiance SDK now specifies some that are only available when compiling against API level 34. Therefore, to avoid compile time errors, you need to update your app's compileSdk to 34. An alternative (but not recommended) workaround can be found .
The has been recalibrated to be more lenient.
In this release, the following features have been promoted from to :
See our page for more information about these features. Detailed overview of feature production readiness can be found on .
This version includes breaking changes for some features.
now provides separate start and end dates, instead of a single event date.
Phone usage detection during vehicular transports. This feature is part of the on-device feature. It uses a custom machine learning model to accurately detect phone usages. The detected events can be obtained using the .
Focused driving safety score, which is calculated by taking into account the detected phone usage events during vehicular transports. See .
Incorrect user when querying the user's context.
Runtime exception when using the feature.
This version includes breaking changes for some features.
A new TransportSession API, which allows the subscription to, and retrieval of TransportSessions. A transport session corresponds to a transport that was detected by the SDK, and includes information such as the mode of transport, and the raw sensor data that was used to classify it. This API is primarily intended to be used for accessing the raw sensor data. To simply be notified of new transports, it's more efficient to utilize the .
A short history of locations inside , which represent the preceding locations leading up to the crash event.
BREAKING: a number of that are no longer supported.
This version includes breaking changes for some features.
Transport waypoint and distance information to , which is part of the event list returned in . Both waypoints and distance are based on unprocessed (i.e. raw) location data.
User's current semantic time info to (e.g. morning, lunch, evening). See .
New SDK dependencies. See .
This version includes breaking changes for some features.
Diagnostic API for monitoring vehicle crash detection. See .
App-configurable rules to control SDK data transmission to the Sentiance Cloud Platform. The app can specify which of the following data types are allowed to be transmitted to the Sentiance platform: vehicle crash data, SDK and device info, general detection data, all data. See .
BREAKING: vehicle and rail from the user's current context information.
Version 6.0 is a major release and includes multiple deprecations and breaking changes. Please read our to learn how to upgrade to this version.
User Context information, which can be requested or subscribed for, and which includes a user's recent timeline events, the home and work locations (if detected), and a user's segments (if detected). This feature is released as and must be enabled by Sentiance first. For more information about it, see our .
On-device user event timeline generation, with support for real-time transport classification using Sentiance's ML-based transport classifier. This feature is released as and must be enabled by Sentiance first. The timeline is made available via the UserContextApi class.
On-device venue mapping of stationary locations, using Sentiance's ML-based classifier. This feature uses venue data that is downloaded and stored offline. It is released as . The venue information is made available via the UserContextApi class. For more information about this feature, see our .
On-device detection. This feature is released as and must be enabled by Sentiance first. The segment data is made available via the UserContextApi class. For more information about this feature, see our .
An improved and a more accurate vehicle crash detection, backed by a machine learning model. You must switch to using the new Sentiance API method to activate it.
A new method to help test your crash detection integration. See .
A new method to check if crash detection is supported on the device for a specific trip type. See .
Points of interest data is no longer provided in the object (returned by ) by default. If you use this data, please reach out to us before updating to this SDK version.
On Android 9 and above, when for your app (by the user or an OS power saving feature), SDK detections will no longer run. An update will be delivered to your app, with startStatus
set to PENDING
and isBackgroundProcessingRestricted
set to true
so that you can take the appropriate action.
Added runtime dependency on org.tensorflow:tensorflow-lite:2.2.0
. This dependency adds native libraries to your app. To limit their architectures, see .
is now deprecated. Use instead.
Starting from 4.16.0, SDK detections will no longer be supported on Android 4.4 and lower. When initializing the SDK, will return with an accompanying containing the message "Unsupported OS version."
Disabled Proguard (method/marking/synchronized) due to incorrect removal of synchronized
method markings. This change is also carried over to any application code when using Proguard. If you're using R8, it will have no impact on your code.
Support resetting the SDK to a "never initialized" state, clearing all SDK user data and allowing the creation of a new Sentiance user. See .
The ACCESS_BACKGROUND_LOCATION
permission is now removed from the SDK's manifest. If you are targeting API level 29+, please add this permission to your app's manifest instead. The inclusion of this permission affected apps targeting API level 28 or lower. For more information about this change, please see .
The ACCESS_BACKGROUND_LOCATION
permission has been added to the SDK's manifest. Background location access is mandatory to support proper detections. See .
The android.permission.ACTIVITY_RECOGNITION
permission is required on Android 10 and above to prevent degradation in the detection quality. See .
Ability to obtain a user's nearby points of interest during stationary. You can now obtain a list of POIs and their type directly from the SDK instead of querying the Sentiance API. See .
The return type of is no longer nullable. A stationary activity is guaranteed to have a proper location.
Incorrect reported during SDK startup.
Add missing fields to toString()
and equals()
methods of the class.
Support automatic stopping of detections by specifying an expiry date when calling . The expired detection will cause the to become START_EXPIRED
.
Support adding trip metadata during an ongoing trip. See .
Support asynchronous user linking. See .
Deobfuscate and classes used with .
Support updating the SDK notification at runtime with .
Ability to register for user activity updates (trips and stationary moments) with .
Support overwriting the Sentiance API URL with .
Capture unexpected exceptions and errors during SDK init, and fail with reason .
now passes a as an additional parameter in case of the aforementioned .
enum obfuscation issue.
Prevent Sentiance credentials change for an already authenticated user (init will fail with ).
Sentiance.isInitialized()
is now deprecated. Use instead, which returns an enum.
Ability to disable battery optimization for improved detections (see ).
New fields.