Older Android Release Notes

Learn more about your drivers with Zendrive's powerful driver insight platform. Contact [email protected].

Please send product and platform questions to [email protected].

Would you like to participate in our customer stories blogging series to promote your company's success? Please email [email protected].

Android SDK 7.2.1

New Features and Improvements

Vehicle Tagging using Beacons

The Android SDK now supports physical bluetooth beacons that can be attached to cars and used to associate particular vehicles with the SDK.

The support for beacons comes with a set of APIs to interact with beacons via the SDK. See the updated Vehicle Tagging product guide to understand more about beacons, and contact [email protected] to explore a beacon solution for your business.

Continuing Improvements to Detectors

Our Overspeeding detector now leverages map matching technology to detect speed limits and breaches more accurately.

Our Phone Use detector has been updated to further reduce false positives caused in the case of phone mounts coming loose.

Bug Fixes and Maintenance

Location Dependency Issue with Firebase

We discovered a dependency issue with Firebase when integrating the Android SDK. When using Firebase for tools such as Crashlytics, you may have several components that depend on the 17.0.0 version of com.google.android.gms:play-services-* .

The error code may look like this:

Duplicate class com.google.android.gms.common.api.internal.zza
found in modules jetified-play-services-base-11.2.2-runtime
    (com.google.android.gms:play-services-base:11.2.2)
and jetified-play-services-basement-17.0.0-runtime
    (com.google.android.gms:play-services-basement:17.0.0)

To solve this issue, either force all Play Services dependencies to the same version:

configurations.configureEach {
    resolutionStrategy.eachDependency {
        if (requested.group == "com.google.android.gms") {
            useVersion("17.0.0")
            }
        }
    }

or add just the location dependency in addition to the Zendrive SDK.

dependencies {
    implementation "com.zendrive.sdk.android:ZendriveSDK:7.2.1"
    implementation "com.google.android.gms:play-services-location:17.0.0"
}

Huawei Variant Documentation

Starting from SDK 7.1, a Huawei variant of the Android SDK has been available for better Huawei support. Documentation for this variant has been consolidated in its own page. See Huawei Variant of Android SDK.

User Feedback API

There is new documentation available for our User Feedback API that allows users to report whether they were drivers or passengers for particular trips. See User Feedback API.

Android SDK 7.1

New Features and Improvements

Android Bluetooth Trip Start - The Vehicle Tagging feature has now been upgraded to allow for near-instant trip start. This feature will reduce lost mileage at the start of a trip. See Bluetooth Trip Start.

Manual Trips with "While in use" Location Permission‌ - The Zendrive SDK now supports manual trip detection with a lesser location permission. See Using Manual Trip Tagging with Limited Permissions.

Bluetooth Device Discovery API - We've added an API that returns a list of Bluetooth connected devices on Android. This API can be used to create UI elements such as device lists for vehicle tagging. See Device Discovery API.

Continuing Improvements to Detectors - This update comes with V2 of our phone use detector and V8 of our collision detection algorithm. The phone use detector now uses our Sensor-Fusion technology and has improved recall of phone handling events. The collision detection algorithm has improved filters around collision detection, leading to even further reduction in missed collisions, especially when phone fall is detected.

(Beta) Huawei Support - The Zendrive Android SDK now has a Huawei variant that supports HMS devices. This feature is in beta and will be improved as more information becomes available about the Huawei ecosystem. See Huawei Support.

Bug Fixes and Maintenance

There is a rare scenario in which vehicle tagging may not work. When there are multiple connected bluetooth devices, in which at least one is non-associated, the trip won't be tagged if the list of connected devices returned by the OS has a non-associated device in the last position. This has been fixed in SDK 7.1.

Documentation References

Android SDK 7.0

The latest version available is sdk-7.0.1.

New Features and Improvements

Motorcycle Trip Support - The Zendrive SDK can now detect if the user is riding a motorcycle or driving a car. A new field called ZendriveVehicleType has been added to the DriveInfo class. To enable this feature, contact us.

Motorcycle Specific Driving Events - If the vehicle type is known before the drive starts, the Zendrive SDK can tailor the driving events to a motorcycle ride. The thresholds for these events are updated to reflect the difference in driving styles and risk on motorcycles when compared to cars. The ZendriveScore has also been updated according to these updated events. To use this, ZendriveVehicleType must be set to MOTORCYCLE in ZendriveConfiguration.

This feature is incompatible with the motorcycle classification feature. To enable this, please contact us.

Collision Detection Improvements - Collision detection on Android now has improved precision and recall.

Known Issues

There is a rare scenario in which vehicle tagging may not work. When there are multiple connected bluetooth devices, in which at least one is non-associated, the trip won't be tagged if the list of connected devices returned by the OS has a non-associated device in the last position.

Documentation References

Android SDK 6.3.x

New Features and Improvements

Collision 2-Tier Notification System: We've added a new feature to our collision detection service that generates an early callback of a probable collision. This is in addition to the normal callback generated after a collision, which now serves to confirm or invalidate the quicker notification.

This is an advanced feature for which you'd need to opt-in.

Vehicle Tagging: We've added the ability to pair the Zendrive SDK with a car's bluetooth stereo to identify a vehicle and tie it to a user account. This is useful for vehicle-restricted insurance, and tracking usage of particular cars in a fleet, along with family safety features.

As part of this feature, the SDK now uses BLUETOOTH permission.

We've also added a Settings warning for Bluetooth called BLUETOOTH_DISABLED. This warning is only sent when there is at least 1 vehicle associated with the SDK.

Heartbeat: The Zendrive SDK contains a new diagnostic tool called Heartbeat. Heartbeat is a periodic service within the SDK to check if it is running properly. Heartbeat logs minimal information about the SDK or device periodically. See Understand Heartbeat (Beta).

Airplane Mode Error: We've added a Settings error for Airplane Mode called AIRPLANE_MODE_ENABLED.

Bug Fixes and Maintenance

(Fixed in 6.3.1) Incompatibility with Android Gradle Plugin 3.6.0+: A bug was discovered in Android Gradle Plugin (AGP) 3.6.0+ that affects all versions of Zendrive Android SDK before 6.3.1. If you were using AGP 3.6.0 or above with R8, some parts of the SDK are incorrectly obfuscated. This could lead to trips not being recorded correctly. See this IssueTracker.

A fix has been deployed in SDK 6.3.1. If you're an older version of the SDK, you should use AGP version 3.5.3 or lower to avoid this issue.

Deprecation of 2 Settings Errors: The LOCATION_SETTINGS_ERROR and WIFI_SCANNING_DISABLED error tags have been deprecated. See our updated code sample in Check for Settings Errors and Warnings.

Documentation of Testing Framework Supported APIs: Our testing framework documentation now contains a section that explicitly mentions which APIs are supported during testing. It now also contains its own release notes section.

Known issues

Integration Instructions

Gradle version: The distribution service we use, Bintray, requires Gradle version 4.10.3 or above. Please upgrade Gradle accordingly.

WorkManager Update: We've upgraded Work Manager (work-runtime-ktx) to version 2.3.2. Upgrading to this version fixes some previously reported customer issues.

Work Manager version 2.3.2 also upgrades the Kotlin Coroutine library to version 1.3.0 which is incompatible with Proguard. To resolve this, ensure that your project’s gradle.properties has the R8 flag android.enableR8 enabled.

Documentation References

Are you ready to learn more about your drivers and how Zendrive's powerful driver insight platform can help? Please contact [email protected].

Please send product and platform questions to [email protected].

Android SDK 6.2.x

New Features and Improvements

Troubleshoot Phone Background Restrictions: We’ve discovered settings in certain OEMs such as Samsung, Xiaomi, Huawei, and OnePlus that prevented the Zendrive SDK from running in the background. We’ve created workarounds in our code for these, and now support these manufacturers.

We strongly recommend guiding users to the Settings app on these OEMs to grant necessary background permissions. See Troubleshoot Phone Restrictions.

Phone Compatibility Ratings: Zendrive Documentation now contains a handy guide to OEM compatibility, which describes how major OEMs respond to our SDK in various metrics such as battery, GPS, and background restrictions. This guide helps you understand user data more accurately and can improve business practices. See Phone Compatibility Ratings.

Bug Fixes and Maintenance

Testing Library Fix: A potential issue was detected during maintenance where compiling the testing library returned an error, even after a successful SDK setup. This has been fixed.

Trip Trail Fix: A bug was reported where phone tap events had a misreported timestamp. This would add phantom sections to the trip trail, resulting in incorrect mileage and trip information. This has been fixed.

Documentation References

Android SDK 6.1.2

Bug Fixes and Improvements

Some users experienced crashes when a single very large entry was written to the database. This throws a SQLiteBlobTooBigException, and may cause repeated crashes, preventing the user from using this app. We’ve added a threshold to upload size to prevent this issue. Update to 6.1.2 to avoid this problem from arising.

A fix has been applied to an issue where a ConcurrentModificationException crash was caused by the ZendriveBroadcastReceiver, early on during the lifecycle of the app.

A minor issue was reported where a NullPointerException was thrown in a rare case where data upload is marked as empty, causing the app to crash. This has been fixed.

We discovered a case in short trips or trips without GPS points where detecting speeding would throw an out of bounds exception. This has been caught and fixed.

Documentation References

Android SDK 6.1.0

New Features and Improvements

Airplane Trips: The Zendrive SDK now identifies airplane journeys as “non driving” trips. This classification is available only after a trip ends.

Data Residency: Developers can now select the region of operation for the Zendrive SDK. A region stores and processes your application data. By default, your application’s region is set to the US. If your policy mandates data residency, please contact us at [email protected].

Known Issues

On very rare occasions, SDK trip end and analysis callbacks might not be delivered to the application when the application’s process is killed just before the callback is broadcasted. The window in which the process would need to be killed by the OS before the broadcast is extremely small, hence this issue is extremely rare.

Integration instructions

Certain low-end devices aggressively kill apps in the background. A persistent notification can mitigate this behavior and keep the Zendrive SDK running. As a forward looking change, we’ve added a new notification method. This method currently improves trip detection on Huawei devices, and does not affect other OEMs.

In your ZendriveNotificationProvider class, implement the getWaitingForDriveNotificationContainer method. Return null if you don’t want to use this feature. Learn more.

While you must implement this method, if you want to see the improved results, please contact us at [email protected] to ensure this feature is working correctly.

The code sample below indicates the change.

import com.zendrive.sdk.*;

public class MyZendriveNotificationProvider extends ZendriveNotificationProvider {

  // Must have a default constructor

  //New method
  @Nullable
  public ZendriveNotificationContainer getWaitingForDriveNotificationContainer(@NonNull Context context) { ... }

  @Override
  @RequiresApi(Build.VERSION_CODES.O)
  @NonNull
  public ZendriveNotificationContainer getMaybeInDriveNotificationContainer(@NonNull Context context) { ... }

  @Override
  @NonNull
  public ZendriveNotificationContainer getInDriveNotificationContainer(@NonNull Context context) { ... }
}

Documentation References

Android SDK 6.0.0

This is a major release of the Zendrive Android SDK to prepare for the new version of Android. This release works with AndroidX. A companion release SDK 6.0.0-sl works with Android Support Library.

New Features and Improvements

Android 10 Compatibility: The Zendrive Android SDK is now compatible with the upcoming Android 10 (formerly Android Q) and its new permissions model. You’ll now additionally need the physical activity permission to detect trips automatically. See Changes in Android 10.

Improved Collision Detection: The collision detection model has been significantly improved to detect collisions at speeds as low as 10 MPH with much better accuracy.

Scores and Events for Transit and Bike Trips: The driveInfo value now contains trip events and scores for all trips, including transit lines and bike trips. This can be used to provide additional value to users.

Other Updates

Settings API: The Settings API is now more robust and will now notify developers about errors around physical activity and overlay permissions. This can be used to request missing permissions from users.

Known Issues

There are some known issues with Android Work Manager 1.0.0, which can result in crashes.

Documentation References

Android SDK 5.10.0

New Features and Improvements

Improved collision detection: The collision detection model has been rebuilt using sensor fusion to deliver a significant improvement in precision. This version detects far fewer false positives and also detects more real collisions.

Disaster recovery: The Zendrive SDK can switch seamlessly between servers across data centres in case of a disaster. This will ensure that there is minimal data loss and billing parameters like mileage remain unaffected.

Other Updates

minSdkVersion change: 5.10 Android SDK requires app developers to update their app's minSdkVersion to 21. Earlier versions of Android remain incompatible with the TLS protocol mandated by SOC 2 criteria.

Trip warnings API: For trips terminated due to an abnormally long trip duration - greater than 16 hours - a warning would be available in DriveInfo.

Bug fixes

A fix has been applied to an issue when - in some rare cases - the app would crash when the trip ends and transit detector was enabled. (Only for customers when transit is enabled)

Multiple reported ANRs reported by customers have been fixed with Firebase JobDispatcher to Android WorkManager migration. No changes needed by app developers.

Documentation References

Android SDK 5.9.1

New Features and Improvements

Event ratings API: Developers can now access event ratings for each trip in driveInfo. Each trip will receive performance ratings for acceleration, speeding, braking, hard turns and phone use based on frequency and distribution of these events at the end of a trip. Ratings are available on a scale from 1 to 5 and can be displayed as stars or grades in your trip details screen.

Event ratings will be available as ZendriveStarRating after the end of a trip.

Privacy-first: In the interest of protecting the privacy of users, Zendrive no longer collects personally identifiable information from the SDK. This means that userfields like firstName, lastName, email, phoneNumber, driverStartDate are no longer available. Instead, a convenience string field called alias can be mapped to a driver. See upgrade instructions for details.

Other Updates

Asynchronous State API: getZendriveState is now asynchronous. This ensures that the apps can get more reliable result about the current and internal state of the SDK always. To display information about an ongoing trip to the user, getActiveDriveInfo can still be queried when the SDK state indicates that a trip is in progress.

Proguard changes: This release allows more parts of the SDK and its dependencies to be optimized by proguard. This should result in a smaller and more efficient APK.

Upgrade Instructions

The asynchronous state API can help manage updates to UI after it confirms the availability of an active trip.

Zendrive.getZendriveState(context, new ZendriveStateCallback() {
   @Override
   public void onComplete(@Nullable ZendriveState zendriveState) {
       if (zendriveState == null) {
           // SDK is not setup
       } else if (zendriveState.isDriveInProgress) {
           ActiveDriveInfo driveInfo = Zendrive.getActiveDriveInfo(context);
           // Update UI to show driveInfo
       }
   }
});

Personally identifiable information can no longer be accepted as driver attributes upon configuration. Instead a convenience field ‘alias’ is available.

ZendriveDriverAttributes driverAttributes = new ZendriveDriverAttributes();
driverAttributes.setAlias("Homer13v2");

ZendriveConfiguration zendriveConfiguration = new ZendriveConfiguration(
 zendriveApplicationKey, <DRIVER_ID>);   // an unique id of the driver specific to your application
zendriveConfiguration.setDriverAttributes(driverAttributes);

Documentation References

SDK Integration documentation is no longer publicly available. Please send questions to [email protected].

Was this helpful?