This section shows how to get the vehicle ready for scheduled tasks. You must
complete each of the following steps before your backend can match a vehicle to
a task.

## Set up listener

Since the Driver SDK performs actions in the
background, use the `DriverStatusListener` to trigger notifications when certain
events occur, such as errors, warnings, or debug messages. Errors can be
transient in nature (such as `BACKEND_CONNECTIVITY_ERROR`), or they might
cause location updates to stop permanently. For example, if you receive a
`VEHICLE_NOT_FOUND` error, it indicates a configuration error.

The following example shows a `DriverStatusListener` implementation:

```java
class MyStatusListener implements DriverStatusListener {
  /** Called when background status is updated, during actions such as location reporting. */
  @Override
  public void updateStatus(
      StatusLevel statusLevel, StatusCode statusCode, String statusMsg, @Nullable Throwable cause) {
    // Existing implementation

    if (cause != null && cause instanceof StatusRuntimeException) {
      if (Status.NOT_FOUND.getCode().equals(cause.getStatus().getCode())) {
        // NOT_FOUND gRPC exception thrown by Fleet Engine.
      }
    }
  }
}

DriverContextBuilder.setDriverStatusListener(new MyStatusListener());
```

## Enable location updates

Once you have a `*VehicleReporter` instance, enable location updates as follows:

### Java

```java
DeliveryVehicleReporter reporter = ...;

reporter.enableLocationTracking();
```

### Kotlin

```kotlin
val reporter = ...

reporter.enableLocationTracking()
```

### (Optional) Set the update interval

By default, the Driver SDK sends location updates at 10-second intervals. Each
location update also indicates that the vehicle is online. You can change this
interval with
`reporter.setLocationReportingInterval(long, TimeUnit)`. The minimum supported
update interval is 5 seconds. More frequent updates may result in slower
requests and errors.