Methods for Android app

Log in/ Log out

Log in

val trackingApi = TrackingApi.getInstance()
if (trackingApi.isAllRequiredPermissionsAndSensorsGranted()) {
   trackingApi.setDeviceID("YOUR DEVICE ID") // DEV_ID = DeviceToken/UserId
   trackingApi.setEnableSdk(true)
}

Log out

trackingApi.logout()

Enable/Disable SDK


Enable SDK

val trackingApi = TrackingApi.getInstance()
if (trackingApi.isAllRequiredPermissionsAndSensorsGranted()) {
   trackingApi.setDeviceID("DeviceToken") // User DeviceToken
   trackingApi.setEnableSdk(true)
}

Disable SDK

Starting from 3.0.0, disabling the SDK triggers the following actions:

  • stops tracking
  • stops heartbeats
  • forces unsent data upload
  • disables the SDK
trackingApi.setEnableSdk(false)

The setEnableSdk(enable: Boolean, withCheckingPermissions: Boolean) overload is not available in 4.0.0.

Enable/ Disable Tracking


These methods are not applicable to Android. Use Enable/Disable SDK.

Manual start/ stop tracking


Tracking mode overview

TrackingMode.Persistent

In this mode, all tracks started in both manual and automatic modes will be recorded as persistent. Track recording continues until trackingApi.stopTracking() is called or the maximum persistent tracking interval is reached.

In this mode, you can manually start a persistent track using either:

trackingApi.startTracking()
trackingApi.startTrackAsPersistent()

TrackingMode.Standard

In this mode, all tracks started in both manual and automatic modes will be recorded as standard. Track recording continues until trackingApi.stopTracking() is called or the motion stop detector is triggered.

Set tracking mode

trackingApi.setTrackingMode(TrackingMode.Persistent)
trackingApi.setTrackingMode(TrackingMode.Standard)

Get tracking mode

val mode = trackingApi.getTrackingMode()

Configure persistent tracking interval

The allowed interval is from 5 to 600 minutes. The default interval is 240 minutes (4 hours).

trackingApi.setMaxPersistentTrackingInterval(240)
val maxInterval = trackingApi.getMaxPersistentTrackingInterval()

Manual start

trackingApi.startTracking()

trackingApi.startTracking() starts tracking using the currently configured TrackingMode.

Manual stop

trackingApi.stopTracking()

Start a persistent track once

trackingApi.startTrackAsPersistent()

trackingApi.startTrackAsPersistent() starts recording a persistent track once in manual mode, regardless of the configured TrackingMode.

trackingApi.startPersistentTracking() is deprecated in 4.0.0. Use trackingApi.startTrackAsPersistent() instead.

Check current track state

val isTracking = trackingApi.isTracking()

Get tracking state

val trackingState = trackingApi.getTrackingState()

Response:

data class TrackingState(
    val automaticTrackingStatus: TrackingStatus,
    val manualTrackingStatus: TrackingStatus
)
enum class TrackingStatus {
    ENABLED,
    DEVICE_ID_NOT_SET,
    SDK_DISABLED,
    DISABLED_BY_SETTINGS,
    DISABLED_BY_SERVER,
    DISABLED_BY_SCHEDULE
}

Device ID registration state

val deviceIdRegistrationState = trackingApi.getDeviceIdRegistrationState()

Response:

data class DeviceIdRegistrationState(
    val status: DeviceIdRegistrationStatus,
    val checkedAtMillis: Long?
)
enum class DeviceIdRegistrationStatus {
    UNKNOWN,
    NOT_SET,
    VALID,
    INVALID
}

SDK version

val sdkVersion = trackingApi.getSdkVersion()

Accident Detection Sensitivity

Set sensitivity

trackingApi.setAccidentDetectionMode(AccidentDetectionSensitivity.Normal)

Sets the sensitivity level for accident detection.

Available values:

  • AccidentDetectionSensitivity.Sensitive
  • AccidentDetectionSensitivity.Normal
  • AccidentDetectionSensitivity.Tough

Reset accident detection settings

trackingApi.resetAccidentDetectionSettings()

Passive detection

Check passive detection state

val enabled = trackingApi.isPassiveDetectionEnabled()

Enable or disable passive detection

trackingApi.setPassiveDetectionEnabled(true)
trackingApi.setPassiveDetectionEnabled(false)

Create a new tag

The detailed information about using tags is available here.

trackingApi.addFutureTrackTag(tag = "work", source = "app")

Get tags

trackingApi.getFutureTrackTags()

Remove a tag

trackingApi.removeFutureTrackTag("work")

Remove all tags

trackingApi.removeAllFutureTrackTags()

Get tracks


/**
 * Returns tracks information. Tracks are cached in local DB.
 *
 * @param locale Language in which tracks are to arrive.
 * @param startDate Start date format "yyyy-MM-dd'T'HH:mm:ss ZZ" or null.
 * @param endDate End date format "yyyy-MM-dd'T'HH:mm:ss ZZ" or null.
 * @param offset Offset number for pagination.
 * @param count Count items for pagination.
 */
// IMPORTANT! Do not call this method on the Main thread.
fun getTracks(
    locale: Locale,
    startDate: String,
    endDate: String,
    offset: Int,
    count: Int
): Array<Track>

Response

class Track(
    var addressStart: String?,
    var addressEnd: String?,
    var endDate: String?,
    var startDate: String?,
    var trackId: String?,
    var accelerationCount: Int,
    var decelerationCount: Int,
    var distance: Double,
    var duration: Double,
    var rating: Double,
    var phoneUsage: Double,
    var originalCode: String?,
    var hasOriginChanged: Boolean,
    var midOverSpeedMileage: Double,
    var highOverSpeedMileage: Double,
    var drivingTips: String?,
    var shareType: String?,
    var cityStart: String?,
    var cityFinish: String?,
    var ratingCornering: Double,
    var ratingAcceleration: Double,
    var ratingBraking: Double,
    var ratingSpeeding: Double,
    var ratingPhoneUsage: Double,
    var ratingTimeOfDay: Double,
    var addressStartParts: AddressParts?,
    var addressFinishParts: AddressParts?,
    val tags: Array<TrackTag>?
)
data class AddressParts(
    var countryCode: String?,
    var country: String?,
    var county: String?,
    var postalCode: String?,
    var state: String?,
    var city: String?,
    var distinct: String?,
    var street: String?,
    var house: String?
)
data class TrackTag(
    var name: String? = null,
    var sourceType: String? = null,
    var source: String? = null
)

Get trip details

/**
 * Returns detailed track information. Track details are cached in local DB.
 *
 * @param locale Language in which track data should be returned.
 * @param trackId Track ID.
 */
// IMPORTANT! Do not call this method on the Main thread.
fun getTrackDetails(trackId: String, locale: Locale): TrackDetails

Response

class TrackDetails(
    var addressStart: String?,
    var addressEnd: String?,
    var endDate: String?,
    var startDate: String?,
    var trackId: String?,
    var accelerationCount: Int,
    var decelerationCount: Int,
    var distance: Double,
    var duration: Double,
    var rating: Double,
    var phoneUsage: Double,
    var originalCode: String?,
    var hasOriginChanged: Boolean,
    var midOverSpeedMileage: Double,
    var highOverSpeedMileage: Double,
    var points: Array<TrackPoint>?,
    var drivingTips: String?,
    var shareType: String?,
    var cityStart: String?,
    var cityFinish: String?,
    var ratingCornering: Double,
    var ratingAcceleration: Double,
    var ratingBraking: Double,
    var ratingSpeeding: Double,
    var ratingPhoneUsage: Double,
    var ratingTimeOfDay: Double,
    var addressStartParts: AddressParts?,
    var addressFinishParts: AddressParts?,
    val tags: Array<TrackTag>?
)

Change transportation type

/**
 * Allows you to change the track type to a type from the dictionary.
 *
 * @param trackToken Track ID
 * @param newCode New track type code from the track origin dictionary.
 */
fun changeTrackOrigin(trackToken: String, newCode: String): Boolean

Dictionary

  • OriginalDriver
  • Passenger
  • Bus
  • Motorcycle
  • Train
  • Taxi
  • Bicycle
  • Other