# CarConnection

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

*** ** * ** ***


```
public final class CarConnection
```

<br />

*** ** * ** ***

A class that allows retrieval of information about connection to a car head unit.

## Summary

| ### Constants |
|---|---|
| `static final https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/car/app/connection/CarConnection#ACTION_CAR_CONNECTION_UPDATED() = "androidx.car.app.connection.action.CAR_CONNECTION_UPDATED"` Broadcast action that notifies that the car connection has changed and needs to be updated. |
| `static final https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/car/app/connection/CarConnection#CAR_CONNECTION_STATE() = "CarConnectionState"` Defines current car connection state. |
| `static final int` | `https://developer.android.com/reference/androidx/car/app/connection/CarConnection#CONNECTION_TYPE_NATIVE() = 1` Natively running on a head unit (Android Automotive OS). |
| `static final int` | `https://developer.android.com/reference/androidx/car/app/connection/CarConnection#CONNECTION_TYPE_NOT_CONNECTED() = 0` Not connected to any car head unit. |
| `static final int` | `https://developer.android.com/reference/androidx/car/app/connection/CarConnection#CONNECTION_TYPE_PROJECTION() = 2` Connected to a car head unit by projecting to it. |

| ### Public constructors |
|---|
| `@https://developer.android.com/reference/androidx/annotation/MainThread https://developer.android.com/reference/androidx/car/app/connection/CarConnection#CarConnection(android.content.Context)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/content/Context.html context)` Constructs a `https://developer.android.com/reference/androidx/car/app/connection/CarConnection` that can be used to get connection information. |

| ### Public methods |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/lifecycle/LiveData<https://developer.android.com/reference/java/lang/Integer.html>` | `https://developer.android.com/reference/androidx/car/app/connection/CarConnection#getType()()` Returns a `https://developer.android.com/reference/androidx/lifecycle/LiveData` that can be observed to get current connection type. |

## Constants

### ACTION_CAR_CONNECTION_UPDATED

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

```
public static final String ACTION_CAR_CONNECTION_UPDATED = "androidx.car.app.connection.action.CAR_CONNECTION_UPDATED"
```

Broadcast action that notifies that the car connection has changed and needs to be updated.

### CAR_CONNECTION_STATE

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

```
public static final String CAR_CONNECTION_STATE = "CarConnectionState"
```

Defines current car connection state.

This is used for communication with the car host's content provider on queries for connection type.

### CONNECTION_TYPE_NATIVE

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

```
public static final int CONNECTION_TYPE_NATIVE = 1
```

Natively running on a head unit (Android Automotive OS).

### CONNECTION_TYPE_NOT_CONNECTED

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

```
public static final int CONNECTION_TYPE_NOT_CONNECTED = 0
```

Not connected to any car head unit.

### CONNECTION_TYPE_PROJECTION

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

```
public static final int CONNECTION_TYPE_PROJECTION = 2
```

Connected to a car head unit by projecting to it.

## Public constructors

### CarConnection

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

```
@MainThread
public CarConnection(@NonNull Context context)
```

Constructs a `https://developer.android.com/reference/androidx/car/app/connection/CarConnection` that can be used to get connection information.

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/NullPointerException.html` | if `context` is `null` |

## Public methods

### getType

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

```
public @NonNull LiveData<Integer> getType()
```

Returns a `https://developer.android.com/reference/androidx/lifecycle/LiveData` that can be observed to get current connection type.

The recommended pattern is to observe the `https://developer.android.com/reference/androidx/lifecycle/LiveData` with the activity's lifecycle in order to get updates on the state change throughout the activity's lifetime.

Connection types are:

1. `https://developer.android.com/reference/androidx/car/app/connection/CarConnection#CONNECTION_TYPE_NOT_CONNECTED()`
2. `https://developer.android.com/reference/androidx/car/app/connection/CarConnection#CONNECTION_TYPE_NATIVE()`
3. `https://developer.android.com/reference/androidx/car/app/connection/CarConnection#CONNECTION_TYPE_PROJECTION()`