Initialize the Driver SDK

  • Before utilizing the Driver SDK, ensure the Navigation SDK and Driver SDK are initialized by obtaining a Navigator object and creating a DriverContext.

  • The DriverContext requires your Google Cloud Project ID and other identifying information to establish communication with Fleet Engine.

  • Initialize the specific Driver API, such as RidesharingDriverApi, using the created DriverContext for access to relevant functionalities.

  • Obtain the appropriate VehicleReporter from the initialized API to enable vehicle tracking and reporting within your application.

  • The Driver SDK utilizes SSL/TLS for secure communication and may require a SecurityProvider patch for older Android API versions.

Before using the Driver SDK, you must first initialize the Navigation SDK and Driver SDK following these steps:

  1. Obtain a Navigator object from the NavigationApi.

    Java

    NavigationApi.getNavigator(
        this, // Activity
        new NavigationApi.NavigatorListener() {
          @Override
          public void onNavigatorReady(Navigator navigator) {
            // Keep a reference to the Navigator (used to configure and start nav)
            this.navigator = navigator;
          }
        }
    );
    

    Kotlin

    NavigationApi.getNavigator(
      this, // Activity
      object : NavigatorListener() {
        override fun onNavigatorReady(navigator: Navigator) {
          // Keep a reference to the Navigator (used to configure and start nav)
          this@myActivity.navigator = navigator
        }
      },
    )
    
  2. Create a DriverContext object, populating the required fields. To initialize the DriverContext object, you must enter the Project ID of your Google Cloud Project as the providerId. For information on setting up the Google Cloud Project, see Create your Fleet Engine project.

    Java

    DriverContext driverContext = DriverContext.builder(application)
        .setProviderId(providerId)
        .setVehicleId(vehicleId)
        .setAuthTokenFactory(authTokenFactory)
        .setNavigator(navigator)
        .setRoadSnappedLocationProvider(
            NavigationApi.getRoadSnappedLocationProvider(application))
        .build();
    

    Kotlin

    val driverContext =
      DriverContext.builder(application)
        .setProviderId(providerId)
        .setVehicleId(vehicleId)
        .setAuthTokenFactory(authTokenFactory)
        .setNavigator(navigator)
        .setRoadSnappedLocationProvider(NavigationApi.getRoadSnappedLocationProvider(application))
        .build()
    
  3. Use the DriverContext object to initialize the *DriverApi.

    Java

    RidesharingDriverApi ridesharingDriverApi = RidesharingDriverApi.createInstance(driverContext);
    

    Kotlin

    val ridesharingDriverApi = RidesharingDriverApi.createInstance(driverContext)
    
  4. Obtain the RidesharingVehicleReporter from the API object. (*VehicleReporter extends NavigationVehicleReporter.)

    Java

    RidesharingVehicleReporter vehicleReporter = ridesharingDriverApi.getRidesharingVehicleReporter();
    

    Kotlin

    val vehicleReporter = ridesharingDriverApi.getRidesharingVehicleReporter()
    

Notes on SSL/TLS

Internally, the Driver SDK implementation uses SSL/TLS to communicate securely with the Fleet Engine service. Android API versions 23 or earlier may require a SecurityProvider patch to communicate with the server. For more information about working with SSL in Android, see Security GMS Provider. The article also contains code samples for patching the security provider.

What's next

Get the vehicle ready