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
trackingApi.setEnableSdk(true)
}
Log out
trackingApi.setEnableSdk(false) //disable SDK
trackingApi.clearDeviceID() //Clear DeviceToken
Enable/Disable SDK
Enable SDK
val trackingApi = TrackingApi.getInstance()
if (trackingApi.isAllRequiredPermissionsAndSensorsGranted()) {
trackingApi.setDeviceID("DeviceToken") // User DeviceToken
trackingApi.setEnableSdk(true) //false to disable SDK
}
Disable SDK
trackingApi.setEnableSdk(false)
Disable SDK with enforced trip uploading
There is a case when the user wants to disable the SDK once the trip was finished. In a common case we have the following steps:
- Subscribe to tracking events and listen to
onStopTracking
method - Disable SDK by
TrackingApi.getInstance().setEnableSdk(false)
But there is an important moment: when you use the approach described above, SDK may be disabled before all trips were uploaded. As a result, you won't have access to this data until you enable SDK and the user makes a new trip.
However, there is an option to handle that. Please use
TrackingApi.getInstance().setDisableWithUpload()
method to enforce trip uploading. With this method, SDK will be disabled after it delivers all data to the platform.
When SDK is waiting for tracks uploading, the push-notification text will be changed to Waiting for the tracks uploading
Asset Customisation
You can customize the notification resources
<string name="tracking_notification_looking_for_tracks_upload" >Waiting for the tracks uploading</string>
Enable/ Disable Tracking
These methods are not applicable to Android. Instead, please use methods Enable/Disable SDK
Manual start/ stop tracking
Manual start
TrackingApi.getInstance().startTracking()
Manual stop
TrackingApi.getInstance().stopTracking()
Persistent Tracking
Persistent tracking ignores all stop tracking reasons and continues before 'stopTracking' method will be called. Max persistent tracking duration is 10 hours. then, it will be automatically terminated.
TrackingApi.getInstance().startPersistentTracking()
Enable Aggressive Heartbeats
This method is not applicable to Android SDK
Enable Ads ID
Set Ads ID
TrackingApi.getInstance().setAdvertisingId("<id>")
Remove Ads ID
TrackingApi.getInstance().clearAdvertisingId()
Connect Bluetooth OBD
Please refer to a special page that we created for the Bluetooth OBD integration
Setting up for Android app
Create a new tag
The detailed information about using Tags is available here
fun addFutureTrackTag(tag: String?, source: String? = null)
*Get tags
fun getFutureTrackTags()
*Remove a tag
fun removeFutureTrackTag(tag: String?)
*Remove all tags
fun removeAllFutureTrackTags()
Check current track state
/**
* Check current running track state. True - track is recording.
*/
fun isTracking(): Boolean
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 numb for pagination.
* @param count Count items for pagination.
*/
// IMPORTANT! Do not call this method in the Main thread.
fun *getTracks(locale: Locale,
startDate: String,
endDate: String,
offset: Int,
count: Int): Array<Track>
Response
Array of
class Track(
/**
* The start address.
*/
var addressStart: String?,
/**
* The end address.
*/
var addressEnd: String?,
/**
* The start date in "yyyy-MM-dd'T'HH:mm:ss ZZ" format.
*/
var endDate: String?,
/**
* The end date in "yyyy-MM-dd'T'HH:mm:ss ZZ" format.
*/
var startDate: String?,
/**
* The unique trip id.
*/
var trackId: String?,
/**
* The count of sharp acceleration.
*/
var accelerationCount: Int,
/**
* The count of sharp braking.
*/
var decelerationCount: Int,
/**
* The distance trip in km.
*/
var distance: Double,
/**
* The trip duration.
*/
var duration: Double,
/**
* The trip rating. Range 1..5
*/
var rating: Double,
/**
* The trip phone usage in minutes.
*/
var phoneUsage: Double,
/**
* The trip type.
* See also [TripOriginDictionary.code]
*/
var originalCode: String?,
/**
* The trip type has changed. If false - origin trip type can be changed. If false - can't be changed.
* [TripOriginDictionary.code]
*/
var hasOriginChanged: Boolean,
/**
* Total distance travelled(in km) while exceeding speed limit over for 10 to 20 km/h
*/
var midOverSpeedMileage: Double,
/**
* Total distance travelled(in km) while exceeding the speed limit over for 20 km/h or more.
*/
var highOverSpeedMileage: Double,
/**
* Driving tips.
*/
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?,
/**
* List of tags.
*/
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(
/**
* Tag name.
*/
var name: String? = null,
/**
* Source type. Maybe: "Sdk", "UserApp".
*/
var sourceType: String? = null,
/**
* Source. For ex. App module (optional)
*/
var source: String? = null
) {
override fun toString(): String {
return "TrackTag(name=$name, sourceType=$sourceType,
source=$source)"
}
}
Get trip details
/**
* Returns detailed track information. (track details are cached in local DB)
*
* @param locale Language in which track are to arrive. Maybe English, Russian, Spanish, Portugal
* @param trackId Track id.
*/s
// IMPORTANT! Do not call this method in the Main thread.
fun *getTrackDetails(trackId: String, locale: Locale): TrackDetail
Response
class TrackDetails(
/**
* The start address.
*/
var addressStart: String?,
/**
* The end address.
*/
var addressEnd: String?,
/**
* The end date in "yyyy-MM-dd'T'HH:mm:ss ZZ" format.
*/
var endDate: String?,
/**
* The start date in "yyyy-MM-dd'T'HH:mm:ss ZZ" format.
*/
var startDate: String?,
/**
* The unique trip id.
*/
var trackId: String?,
/**
* The count of sharp acceleration.
*/
var accelerationCount: Int,
/**
* The count of sharp braking.
*/
var decelerationCount: Int,
/**
* The distance trip in km.
*/
var distance: Double,
/**
* The duration trip in horse.
*/
var duration: Double,
/**
* The trip rating. Range 1..5
*/
var rating: Double,
/**
* The trip phone usage minutes.
*/
var phoneUsage: Double,
/**
* The trip type.
* See also [TripOriginDictionary.code]
*/
var originalCode: String?,
/**
* The trip type has changed. If false - origin trip type can be changed. If false - can't be changed.
* [TripOriginDictionary.code]
*/
var hasOriginChanged: Boolean,
/**
* Total distance travelled(in km) while exceeding speed limit over for 10 to 20 km/h
*/
var midOverSpeedMileage: Double,
/**
* Total distance travelled(in km) while exceeding the speed limit over for 20 km/h or more.
*/
var highOverSpeedMileage: Double,
/**
* List trip points. Usually used to build a route on the map.
*/
var points: Array<TrackPoint>?,
/**
* Driving tips.
*/
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?,
/**
* List of tags.
*/
val tags: Array<TrackTag>?
)
data class TrackTag(
/**
* Tag name.
*/
var name: String? = null,
/**
* Source type. Maybe: "Sdk", "UserApp".
*/
var sourceType: String? = null,
/**
* Source. For ex. App module (optional)
*/
var source: String? = null
) {
override fun toString(): String {
return "TrackTag(name=$name, sourceType=$sourceType,
source=$source)"
}
}
Change transportation type
/**
* Method allows you to change thet type of track to a type from the dictionary.
* See also [getTrackOriginDict]
*
* @param trackToken Track Id
* @param newCode New track type code from track origin dictionary.
*/
fun *changeTrackOrigin(trackToken: String, newCode: String)
Dictionary:
- OriginalDriver
- Passenger
- Bus
- Motorcycle
- Train
- Taxi
- Bicycle
- Other
Updated 2 days ago