# CarInfo

Artifact: [androidx.car.app:app](https://developer.android.com/jetpack/androidx/releases/car-app) [View Source](https://cs.android.com/search?q=file:androidx/car/app/hardware/info/CarInfo.java+class:androidx.car.app.hardware.info.CarInfo) Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/car-app#1.1.0)

*** ** * ** ***


```
@RequiresCarApi(value = 3)
@MainThread
public interface CarInfo
```

<br />

*** ** * ** ***

Manages access to car hardware specific info such as model, energy, and speed info.

## Summary

| ### Public methods |
|---|---|
| `abstract void` | `https://developer.android.com/reference/androidx/car/app/hardware/info/CarInfo#addEnergyLevelListener(java.util.concurrent.Executor,androidx.car.app.hardware.common.OnCarDataAvailableListener<androidx.car.app.hardware.info.EnergyLevel>)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/concurrent/Executor.html executor, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/EnergyLevel> listener )` Setup an ongoing listener to receive `https://developer.android.com/reference/androidx/car/app/hardware/info/EnergyLevel` information from the car hardware. |
| `abstract void` | `@https://developer.android.com/reference/androidx/car/app/annotations/ExperimentalCarApi https://developer.android.com/reference/androidx/car/app/hardware/info/CarInfo#addEvStatusListener(java.util.concurrent.Executor,androidx.car.app.hardware.common.OnCarDataAvailableListener<androidx.car.app.hardware.info.EvStatus>)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/concurrent/Executor.html executor, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/EvStatus> listener )` Setup an ongoing listener to receive `https://developer.android.com/reference/androidx/car/app/hardware/info/EvStatus` information from the car hardware. |
| `abstract void` | `https://developer.android.com/reference/androidx/car/app/hardware/info/CarInfo#addMileageListener(java.util.concurrent.Executor,androidx.car.app.hardware.common.OnCarDataAvailableListener<androidx.car.app.hardware.info.Mileage>)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/concurrent/Executor.html executor, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/Mileage> listener )` Setup an ongoing listener to receive `https://developer.android.com/reference/androidx/car/app/hardware/info/Mileage` information from the car hardware. |
| `abstract void` | `https://developer.android.com/reference/androidx/car/app/hardware/info/CarInfo#addSpeedListener(java.util.concurrent.Executor,androidx.car.app.hardware.common.OnCarDataAvailableListener<androidx.car.app.hardware.info.Speed>)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/concurrent/Executor.html executor, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/Speed> listener )` Setup an ongoing listener to receive `https://developer.android.com/reference/androidx/car/app/hardware/info/Speed` information from the car hardware. |
| `abstract void` | `https://developer.android.com/reference/androidx/car/app/hardware/info/CarInfo#addTollListener(java.util.concurrent.Executor,androidx.car.app.hardware.common.OnCarDataAvailableListener<androidx.car.app.hardware.info.TollCard>)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/concurrent/Executor.html executor, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/TollCard> listener )` Setup an ongoing listener to receive `https://developer.android.com/reference/androidx/car/app/hardware/info/TollCard` information from the car hardware. |
| `abstract void` | `https://developer.android.com/reference/androidx/car/app/hardware/info/CarInfo#fetchEnergyProfile(java.util.concurrent.Executor,androidx.car.app.hardware.common.OnCarDataAvailableListener<androidx.car.app.hardware.info.EnergyProfile>)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/concurrent/Executor.html executor, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/EnergyProfile> listener )` Reguest the `https://developer.android.com/reference/androidx/car/app/hardware/info/EnergyProfile` information about the car hardware. |
| `default void` | `@https://developer.android.com/reference/androidx/car/app/annotations/RequiresCarApi(value = 7) https://developer.android.com/reference/androidx/car/app/hardware/info/CarInfo#fetchExteriorDimensions(java.util.concurrent.Executor,androidx.car.app.hardware.common.OnCarDataAvailableListener<androidx.car.app.hardware.info.ExteriorDimensions>)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/concurrent/Executor.html executor, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/ExteriorDimensions> listener )` Request the `https://developer.android.com/reference/androidx/car/app/hardware/info/ExteriorDimensions` information about the vehicle. |
| `abstract void` | `https://developer.android.com/reference/androidx/car/app/hardware/info/CarInfo#fetchModel(java.util.concurrent.Executor,androidx.car.app.hardware.common.OnCarDataAvailableListener<androidx.car.app.hardware.info.Model>)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/concurrent/Executor.html executor, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/Model> listener )` Fetch the `https://developer.android.com/reference/androidx/car/app/hardware/info/Model` information about the car hardware. |
| `abstract void` | `https://developer.android.com/reference/androidx/car/app/hardware/info/CarInfo#removeEnergyLevelListener(androidx.car.app.hardware.common.OnCarDataAvailableListener<androidx.car.app.hardware.info.EnergyLevel>)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/EnergyLevel> listener )` Remove an ongoing listener for `https://developer.android.com/reference/androidx/car/app/hardware/info/EnergyLevel` information. |
| `abstract void` | `@https://developer.android.com/reference/androidx/car/app/annotations/ExperimentalCarApi https://developer.android.com/reference/androidx/car/app/hardware/info/CarInfo#removeEvStatusListener(androidx.car.app.hardware.common.OnCarDataAvailableListener<androidx.car.app.hardware.info.EvStatus>)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/EvStatus> listener )` Remove an ongoing listener for `https://developer.android.com/reference/androidx/car/app/hardware/info/EvStatus` information. |
| `abstract void` | `https://developer.android.com/reference/androidx/car/app/hardware/info/CarInfo#removeMileageListener(androidx.car.app.hardware.common.OnCarDataAvailableListener<androidx.car.app.hardware.info.Mileage>)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/Mileage> listener )` Remove an ongoing listener for `https://developer.android.com/reference/androidx/car/app/hardware/info/Mileage` information. |
| `abstract void` | `https://developer.android.com/reference/androidx/car/app/hardware/info/CarInfo#removeSpeedListener(androidx.car.app.hardware.common.OnCarDataAvailableListener<androidx.car.app.hardware.info.Speed>)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/Speed> listener)` Remove an ongoing listener for `https://developer.android.com/reference/androidx/car/app/hardware/info/Speed` information. |
| `abstract void` | `https://developer.android.com/reference/androidx/car/app/hardware/info/CarInfo#removeTollListener(androidx.car.app.hardware.common.OnCarDataAvailableListener<androidx.car.app.hardware.info.TollCard>)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/TollCard> listener )` Remove an ongoing listener for `https://developer.android.com/reference/androidx/car/app/hardware/info/TollCard` information. |

## Public methods

### addEnergyLevelListener

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/car-app#1.1.0)

```
abstract void addEnergyLevelListener(
    @NonNull Executor executor,
    @NonNull OnCarDataAvailableListener<EnergyLevel> listener
)
```

Setup an ongoing listener to receive `https://developer.android.com/reference/androidx/car/app/hardware/info/EnergyLevel` information from the car hardware.

If the listener was added previously then it won't be added.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/concurrent/Executor.html executor` | the executor which will be used for invoking the listener |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/EnergyLevel> listener` | the listener that will be invoked when data is available |

### addEvStatusListener

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/car-app#1.2.0)

```
@ExperimentalCarApi
abstract void addEvStatusListener(
    @NonNull Executor executor,
    @NonNull OnCarDataAvailableListener<EvStatus> listener
)
```

Setup an ongoing listener to receive `https://developer.android.com/reference/androidx/car/app/hardware/info/EvStatus` information from the car hardware.

If the listener was added previously then it won't be added.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/concurrent/Executor.html executor` | the executor which will be used for invoking the listener |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/EvStatus> listener` | the listener that will be invoked when data is available |

### addMileageListener

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/car-app#1.1.0)

```
abstract void addMileageListener(
    @NonNull Executor executor,
    @NonNull OnCarDataAvailableListener<Mileage> listener
)
```

Setup an ongoing listener to receive `https://developer.android.com/reference/androidx/car/app/hardware/info/Mileage` information from the car hardware.

If the listener was added previously then it won't be added.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/concurrent/Executor.html executor` | the executor which will be used for invoking the listener |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/Mileage> listener` | the listener that will be invoked when data is available |

### addSpeedListener

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/car-app#1.1.0)

```
abstract void addSpeedListener(
    @NonNull Executor executor,
    @NonNull OnCarDataAvailableListener<Speed> listener
)
```

Setup an ongoing listener to receive `https://developer.android.com/reference/androidx/car/app/hardware/info/Speed` information from the car hardware.

If the listener was added previously then it won't be added.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/concurrent/Executor.html executor` | the executor which will be used for invoking the listener |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/Speed> listener` | the listener that will be invoked when data is available |

### addTollListener

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/car-app#1.1.0)

```
abstract void addTollListener(
    @NonNull Executor executor,
    @NonNull OnCarDataAvailableListener<TollCard> listener
)
```

Setup an ongoing listener to receive `https://developer.android.com/reference/androidx/car/app/hardware/info/TollCard` information from the car hardware.

If the listener was added previously then it won't be added again.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/concurrent/Executor.html executor` | the executor which will be used for invoking the listener |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/TollCard> listener` | the listener that will be invoked when data is available |

### fetchEnergyProfile

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/car-app#1.1.0)

```
abstract void fetchEnergyProfile(
    @NonNull Executor executor,
    @NonNull OnCarDataAvailableListener<EnergyProfile> listener
)
```

Reguest the `https://developer.android.com/reference/androidx/car/app/hardware/info/EnergyProfile` information about the car hardware.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/concurrent/Executor.html executor` | the executor which will be used for invoking the listener |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/EnergyProfile> listener` | the listener that will be invoked when data is available |

### fetchExteriorDimensions

Added in [1.7.0](https://developer.android.com/jetpack/androidx/releases/car-app#1.7.0)

```
@RequiresCarApi(value = 7)
default void fetchExteriorDimensions(
    @NonNull Executor executor,
    @NonNull OnCarDataAvailableListener<ExteriorDimensions> listener
)
```

Request the `https://developer.android.com/reference/androidx/car/app/hardware/info/ExteriorDimensions` information about the vehicle. This will only return meaningful data on select Automotive vehicles running SDK 30 and above.

This requires the `android.car.permission.CAR_INFO` permission.

See [VehiclePropertyIds#INFO_EXTERIOR_DIMENSIONS](https://developer.android.com/reference/android/car/VehiclePropertyIds#INFO_EXTERIOR_DIMENSIONS)

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/concurrent/Executor.html executor` | the executor which will be used for invoking the listener |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/ExteriorDimensions> listener` | the listener that will be invoked when data is available |

### fetchModel

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/car-app#1.1.0)

```
abstract void fetchModel(
    @NonNull Executor executor,
    @NonNull OnCarDataAvailableListener<Model> listener
)
```

Fetch the `https://developer.android.com/reference/androidx/car/app/hardware/info/Model` information about the car hardware.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/concurrent/Executor.html executor` | the executor which will be used for invoking the listener |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/Model> listener` | the listener that will be invoked when data is available |

### removeEnergyLevelListener

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/car-app#1.1.0)

```
abstract void removeEnergyLevelListener(
    @NonNull OnCarDataAvailableListener<EnergyLevel> listener
)
```

Remove an ongoing listener for `https://developer.android.com/reference/androidx/car/app/hardware/info/EnergyLevel` information.

If the listener is not currently added, then nothing will be removed.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/EnergyLevel> listener` | the listener to remove |

### removeEvStatusListener

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/car-app#1.2.0)

```
@ExperimentalCarApi
abstract void removeEvStatusListener(
    @NonNull OnCarDataAvailableListener<EvStatus> listener
)
```

Remove an ongoing listener for `https://developer.android.com/reference/androidx/car/app/hardware/info/EvStatus` information.

If the listener is not currently added, then nothing will be removed.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/EvStatus> listener` | the listener to remove |

### removeMileageListener

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/car-app#1.1.0)

```
abstract void removeMileageListener(
    @NonNull OnCarDataAvailableListener<Mileage> listener
)
```

Remove an ongoing listener for `https://developer.android.com/reference/androidx/car/app/hardware/info/Mileage` information.

If the listener is not currently added, then nothing will be removed.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/Mileage> listener` | the listener to remove |

### removeSpeedListener

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/car-app#1.1.0)

```
abstract void removeSpeedListener(@NonNull OnCarDataAvailableListener<Speed> listener)
```

Remove an ongoing listener for `https://developer.android.com/reference/androidx/car/app/hardware/info/Speed` information.

If the listener is not currently added, then nothing will be removed.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/Speed> listener` | the listener to remove |

### removeTollListener

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/car-app#1.1.0)

```
abstract void removeTollListener(
    @NonNull OnCarDataAvailableListener<TollCard> listener
)
```

Remove an ongoing listener for `https://developer.android.com/reference/androidx/car/app/hardware/info/TollCard` information.

If the listener is not currently added, then nothing will be removed.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/car/app/hardware/common/OnCarDataAvailableListener<https://developer.android.com/reference/androidx/car/app/hardware/info/TollCard> listener` | the listener to remove |