# CarSensors

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/CarSensors.java+class:androidx.car.app.hardware.info.CarSensors) Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/car-app#1.1.0)

*** ** * ** ***


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

<br />

*** ** * ** ***

Manages access to androidx.car.app.hardware specific sensors such as compass, accelerometer, gyroscope and location.

For Android Automotive OS, the sensor APIs in this class are currently not implemented, and they will return `https://developer.android.com/reference/androidx/car/app/hardware/common/CarValue#STATUS_UNIMPLEMENTED()` by default. To get these values for Android Automotive OS, use [SensorManager](https://developer.android.com/reference/android/hardware/SensorManager) and [LocationManager](https://developer.android.com/reference/android/location/LocationManager) instead.

## Summary

| ### Constants |
|---|---|
| `default static final int` | `https://developer.android.com/reference/androidx/car/app/hardware/info/CarSensors#UPDATE_RATE_FASTEST() = 3` Car hardware property, sensor, or action should be fetched at its fastest possible rate. |
| `default static final int` | `https://developer.android.com/reference/androidx/car/app/hardware/info/CarSensors#UPDATE_RATE_NORMAL() = 1` Car hardware info, sensor, or action should be fetched at its default rate. |
| `default static final int` | `https://developer.android.com/reference/androidx/car/app/hardware/info/CarSensors#UPDATE_RATE_UI() = 2` Car hardware property, sensor, or action should be fetched at a rate consistent with drawing UI to a screen. |

| ### Public methods |
|---|---|
| `abstract void` | `https://developer.android.com/reference/androidx/car/app/hardware/info/CarSensors#addAccelerometerListener(int,java.util.concurrent.Executor,androidx.car.app.hardware.common.OnCarDataAvailableListener<androidx.car.app.hardware.info.Accelerometer>)( int rate, @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/Accelerometer> listener )` Setup an ongoing listener to receive `https://developer.android.com/reference/androidx/car/app/hardware/info/Accelerometer` data from the car hardware. |
| `abstract void` | `https://developer.android.com/reference/androidx/car/app/hardware/info/CarSensors#addCarHardwareLocationListener(int,java.util.concurrent.Executor,androidx.car.app.hardware.common.OnCarDataAvailableListener<androidx.car.app.hardware.info.CarHardwareLocation>)( int rate, @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/CarHardwareLocation> listener )` Setup an ongoing listener to receive `https://developer.android.com/reference/androidx/car/app/hardware/info/CarHardwareLocation` data from the car hardware. |
| `abstract void` | `https://developer.android.com/reference/androidx/car/app/hardware/info/CarSensors#addCompassListener(int,java.util.concurrent.Executor,androidx.car.app.hardware.common.OnCarDataAvailableListener<androidx.car.app.hardware.info.Compass>)( int rate, @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/Compass> listener )` Setup an ongoing listener to receive `https://developer.android.com/reference/androidx/car/app/hardware/info/Compass` data from the car hardware. |
| `abstract void` | `https://developer.android.com/reference/androidx/car/app/hardware/info/CarSensors#addGyroscopeListener(int,java.util.concurrent.Executor,androidx.car.app.hardware.common.OnCarDataAvailableListener<androidx.car.app.hardware.info.Gyroscope>)( int rate, @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/Gyroscope> listener )` Setup an ongoing listener to receive `https://developer.android.com/reference/androidx/car/app/hardware/info/Gyroscope` data from the car hardware. |
| `abstract void` | `https://developer.android.com/reference/androidx/car/app/hardware/info/CarSensors#removeAccelerometerListener(androidx.car.app.hardware.common.OnCarDataAvailableListener<androidx.car.app.hardware.info.Accelerometer>)( @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/Accelerometer> listener )` Remove an ongoing listener for `https://developer.android.com/reference/androidx/car/app/hardware/info/Accelerometer` information. |
| `abstract void` | `https://developer.android.com/reference/androidx/car/app/hardware/info/CarSensors#removeCarHardwareLocationListener(androidx.car.app.hardware.common.OnCarDataAvailableListener<androidx.car.app.hardware.info.CarHardwareLocation>)( @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/CarHardwareLocation> listener )` Remove an ongoing listener for `https://developer.android.com/reference/androidx/car/app/hardware/info/CarHardwareLocation` information. |
| `abstract void` | `https://developer.android.com/reference/androidx/car/app/hardware/info/CarSensors#removeCompassListener(androidx.car.app.hardware.common.OnCarDataAvailableListener<androidx.car.app.hardware.info.Compass>)( @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/Compass> listener )` Remove an ongoing listener for `https://developer.android.com/reference/androidx/car/app/hardware/info/Compass` information. |
| `abstract void` | `https://developer.android.com/reference/androidx/car/app/hardware/info/CarSensors#removeGyroscopeListener(androidx.car.app.hardware.common.OnCarDataAvailableListener<androidx.car.app.hardware.info.Gyroscope>)( @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/Gyroscope> listener )` Remove an ongoing listener for `https://developer.android.com/reference/androidx/car/app/hardware/info/Gyroscope` information. |

## Constants

### UPDATE_RATE_FASTEST

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

```
default static final int UPDATE_RATE_FASTEST = 3
```

Car hardware property, sensor, or action should be fetched at its fastest possible rate.

### UPDATE_RATE_NORMAL

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

```
default static final int UPDATE_RATE_NORMAL = 1
```

Car hardware info, sensor, or action should be fetched at its default rate.

### UPDATE_RATE_UI

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

```
default static final int UPDATE_RATE_UI = 2
```

Car hardware property, sensor, or action should be fetched at a rate consistent with drawing UI to a screen.

## Public methods

### addAccelerometerListener

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

```
abstract void addAccelerometerListener(
    int rate,
    @NonNull Executor executor,
    @NonNull OnCarDataAvailableListener<Accelerometer> listener
)
```

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

If the `listener` was added previously then previous rate is updated with the new rate. Use `https://developer.android.com/reference/androidx/car/app/hardware/info/CarSensors#UPDATE_RATE_NORMAL()` as a good default `rate` in most cases.

| Parameters |
|---|---|
| `int rate` | the maximum rate at which the data will be returned through the provided listener |
| `@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/Accelerometer> listener` | the listener that will be invoked when data is available |

### addCarHardwareLocationListener

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

```
abstract void addCarHardwareLocationListener(
    int rate,
    @NonNull Executor executor,
    @NonNull OnCarDataAvailableListener<CarHardwareLocation> listener
)
```

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

If the `listener` was added previously then previous rate is updated with the new rate. Use `https://developer.android.com/reference/androidx/car/app/hardware/info/CarSensors#UPDATE_RATE_NORMAL()` as a good default `rate` in most cases.

| Parameters |
|---|---|
| `int rate` | the maximum rate at which the data will be returned through the provided listener |
| `@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/CarHardwareLocation> listener` | the listener that will be invoked when data is available |

### addCompassListener

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

```
abstract void addCompassListener(
    int rate,
    @NonNull Executor executor,
    @NonNull OnCarDataAvailableListener<Compass> listener
)
```

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

If the `listener` was added previously then previous rate is updated with the new rate. Use `https://developer.android.com/reference/androidx/car/app/hardware/info/CarSensors#UPDATE_RATE_NORMAL()` as a good default `rate` in most cases.

| Parameters |
|---|---|
| `int rate` | the maximum rate at which the data will be returned through the provided listener |
| `@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/Compass> listener` | the listener that will be invoked when data is available |

### addGyroscopeListener

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

```
abstract void addGyroscopeListener(
    int rate,
    @NonNull Executor executor,
    @NonNull OnCarDataAvailableListener<Gyroscope> listener
)
```

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

If the `listener` was added previously then previous rate is updated with the new rate. Use `https://developer.android.com/reference/androidx/car/app/hardware/info/CarSensors#UPDATE_RATE_NORMAL()` as a good default `rate` in most cases.

| Parameters |
|---|---|
| `int rate` | the maximum rate at which the data will be returned through the provided listener |
| `@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/Gyroscope> listener` | the listener that will be invoked when data is available |

### removeAccelerometerListener

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

```
abstract void removeAccelerometerListener(
    @NonNull OnCarDataAvailableListener<Accelerometer> listener
)
```

Remove an ongoing listener for `https://developer.android.com/reference/androidx/car/app/hardware/info/Accelerometer` 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/Accelerometer> listener` | the listener to remove |

### removeCarHardwareLocationListener

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

```
abstract void removeCarHardwareLocationListener(
    @NonNull OnCarDataAvailableListener<CarHardwareLocation> listener
)
```

Remove an ongoing listener for `https://developer.android.com/reference/androidx/car/app/hardware/info/CarHardwareLocation` 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/CarHardwareLocation> listener` | the listener to remove |

### removeCompassListener

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

```
abstract void removeCompassListener(
    @NonNull OnCarDataAvailableListener<Compass> listener
)
```

Remove an ongoing listener for `https://developer.android.com/reference/androidx/car/app/hardware/info/Compass` 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/Compass> listener` | the listener to remove |

### removeGyroscopeListener

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

```
abstract void removeGyroscopeListener(
    @NonNull OnCarDataAvailableListener<Gyroscope> listener
)
```

Remove an ongoing listener for `https://developer.android.com/reference/androidx/car/app/hardware/info/Gyroscope` 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/Gyroscope> listener` | the listener to remove |