Sorry, you need to enable JavaScript to visit this website.

Downloads

Downloads

Project set up

To develop your own application with Maps SDK, you need to make sure that the pre-requisites are in place and that you have added Maps SDK  as a dependency into your project. Follow the steps below and then you are ready to code!

Get the pre-requisites in place:

  • Android Studio IDE installed (Android Studio)

  • Set up the application minimum API level to Android 4.4 "Jelly Bean" (API Level 16) or higher

Set up your project like this:

  1. Open Android Studio IDE

  2. Create a new project or open an existing one

Add repositories to all projects to root/build.gradle:

allprojects {

   repositories {
      jcenter()
      google()
      maven {
         url 'https://maven.tomtom.com:8443/nexus/content/repositories/releases/'
      }
   }   
}

Choose Maps SDK modules for your app

Either independently include modules for Maps, Search and/or Routing or all of them at once. You can do so by adding Maps SDK modules to AndroidManifest.xml and build.gradle.

Configuration for all Maps SDK modules

To include all Maps SDK modules in your app, modify AndroidManifest.xml and build.gradle  

  • Modify AndroidManifest.xml

    Add service keys, taken from http://developer.tomtom.com, inside <application> tag.

    <meta-data android:name="OnlineMaps.Key" android:value="undefined" />
    <meta-data android:name="OnlineTraffic.Key" android:value="undefined" />
    <meta-data android:name="OnlineSearch.Key" android:value="undefined" />
    <meta-data android:name="OnlineRouting.Key" android:value="undefined" />
    <meta-data android:name="GeofencingApi.Key" android:value="undefined" />
  • Modify build.gradle (app/build.gradle)

    //library required to display map
    implementation("com.tomtom.online:sdk-maps:2.4011")
    
    //library required for search
    implementation("com.tomtom.online:sdk-search:2.4011")
    
    //library required for routing
    implementation("com.tomtom.online:sdk-routing:2.4011")
    
    //library required for traffic
    implementation("com.tomtom.online:sdk-traffic:2.4011")
    
    //library required for geofencing
    implementation("com.tomtom.online:sdk-geofencing:2.4011")
    
    //extencion library for map custom style and ui support
    implementation("com.tomtom.online:sdk-maps-ui-extensions:2.4011")
    
    //extencion library for rx-java2
    implementation("com.tomtom.online:sdk-maps-rx-extensions:2.4011")
    
    //extencion library for kotlin support
    implementation("com.tomtom.online:sdk-maps-ktx-extensions:2.4011")
    
    //extencion library for displaying static map
    implementation("com.tomtom.online:sdk-maps-static-image:2.4011")
    
    //extencion library for driving features
    implementation("com.tomtom.online:sdk-maps-driving-extensions:2.4011")
  • Enable Java 8 Support in build.gradle (app/build.gradle)

    android {
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
    }
  • Add MultiDex support if required, as described here

Maps SDK Examples app

Download and build the Maps SDK Examples app to see key features of the Maps SDK.

Modify the source code to learn more about the SDK.

Speed up development by using the source code in your own app.

Clone repository by command:
git clone https://github.com/tomtom-international/maps-sdk-for-android-examples.git

This Maps SDK Examples app is provided by TomTom and subject to TomToms privacy policy at  https://tomtom.com/privacy

Developers using TomTom SDKs and APIs in their apps similarly bear responsibility to adhere to applicable privacy laws.

These Maps SDK Examples are provided as-is and shall be used internally, and for evaluation purposes only. Any other use is strictly prohibited.

Logging

TomTom SDK Log level

In TomTom we are constantly working on the quality of our products. That is why it is very important to have logs as detailed as possible for our support team to provide accurate help or bugfixes. The Maps SDK for Android has an advanced mechanism to gather and send logs to our support team. To enable logging and specify a log level please add below code to your app:

Example:

@Override
public void onCreate() {
    super.onCreate();
    LogUtils.enableLogs(Log.VERBOSE);
  • android.util.Log.VERBOSE will print all logs from TomTom SDK.

  • android.util.Log.DEBUG will print debug logs from TomTom SDK.

Note: Logs from the SDK libraries are disabled by default.

Collecting logs

TomTom log

Logs from an application can be collected into a file on the SD card.

LogUtils.LogFileCollector.collectLogsToFile(logsFilePath);

A special permission should be added into your AndroidManifest.xml file to save logs on the SD card. For example:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

When the sdk-maps module is used the problem with supporting runtime permissions is handled by the SDK with the following method:

@Override
public void onMapReady(@NonNull TomtomMap tomtomMap) {
    tomtomMap.collectLogsToFile(SampleApp.LOGCAT_PATH);
}

Important: Since Android API level 23, it is required to ask the user for runtime permission to write into the SD card.

Register crash observer

Using the crash observer makes it possible to automate the process of preparing an email message with attached logs which were already collected and stored on the SD card. To do so, please register a crash handler with below code. Crash observer doesn’t break your already used handlers (like Crashlitics).

LogUtils.registerCrashObserver(getApplicationContext(), Uri.parse("file://" + LOGCAT_PATH));
Bug report

To enable an advanced logging mechanism which collects detailed data from logcat like: threads, services and phone states, please use the following code:

adb bugreport issue01

This produces an issue01.zip file.

Troubleshooting

Depending on your project configuration, some dependency conflicts may occur when adding Maps SDK modules. Here you can find a list of possible issues and tips how to solve them:

  • FindBugs JSF305 conflict:

    Enforce Gradle to compile the fixed FindBugs version for all dependencies. Add the following lines to your app’s build.gradle:

    android {
        configurations.all {
            resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.2'
        }
    }
  • MultiDex issues should be solved using Google instructions. However, find the most popular solutions below.

    Configure your app for MultiDex. Add the following lines to your app’s build.gradle:

    android {
        defaultConfig {
            multiDexEnabled true
        }
    }

    Add MultiDex support in your app’s build.gradle when minSdkVersion is set to 20 or lower:

    dependencies {
        api 'com.android.support:multidex:1.0.1'
    }

    Increase java max heap size for dex support if required. Add the following lines to your app’s build.gradle:

    android {
        dexOptions {
            javaMaxHeapSize "4g"
        }
    }