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.

  • MAP - Getting started

  • TRAFFIC - Getting started

  • SEARCH - Getting started

  • ROUTING - Getting started

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" />
  • Modify build.gradle (app/build.gradle)

    //library required to display map
    implementation("com.tomtom.online:sdk-maps:2.+")
    
    //library required for search
    implementation("com.tomtom.online:sdk-search:2.+")
    
    //library required for routing
    implementation("com.tomtom.online:sdk-routing:2.+")
    
    //library required for traffic
    implementation("com.tomtom.online:sdk-traffic:2.+")
  • 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 our products quality. That is why it is very important to have as detailed logs
as possible for our support team to provide accurate help or bugfixes. Maps SDK for Android has advanced mechanism
to gather and send logs to our support team. To enable logging and specify 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.

Logs from SDK libraries are disabled by default.

Collecting logs

TomTom log

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

LogUtils.LogFileCollector.collectLogsToFile(logsFilePath);

Special permission should be added into your AndroidManifest.xml to save logs on sdcard:

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

and runtime permission should be handled on your side for android version 26 or above.

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

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

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

Register crash observer

With usage of crash observer it is possible to automate process of preparing email massage with attached
logs which were already collected and stored on SD card. To do so, please register crash handler with below code:
Crash observer doesn’t brake your already used handlers ( like Crashlitics).

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

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

adb bugreport issue01

This produce a issue01.zip.

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"
        }
    }