# ExposureState

Artifact: [androidx.camera:camera-core](https://developer.android.com/jetpack/androidx/releases/camera) [View Source](https://cs.android.com/search?q=file:androidx/camera/core/ExposureState.java+class:androidx.camera.core.ExposureState) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/camera#1.0.0)

*** ** * ** ***


```
public interface ExposureState
```

<br />

*** ** * ** ***

An interface which contains the camera exposure related information.

Applications can retrieve an instance via `https://developer.android.com/reference/androidx/camera/core/CameraInfo#getExposureState()`.

## Summary

| ### Public methods |
|---|---|
| `abstract int` | `https://developer.android.com/reference/androidx/camera/core/ExposureState#getExposureCompensationIndex()()` Get the current exposure compensation index. |
| `abstract @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/util/Range.html<https://developer.android.com/reference/java/lang/Integer.html>` | `https://developer.android.com/reference/androidx/camera/core/ExposureState#getExposureCompensationRange()()` Get the maximum and minimum exposure compensation values for `https://developer.android.com/reference/androidx/camera/core/CameraControl#setExposureCompensationIndex(int)` |
| `abstract @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/util/Rational.html` | `https://developer.android.com/reference/androidx/camera/core/ExposureState#getExposureCompensationStep()()` Get the smallest step by which the exposure compensation can be changed. |
| `abstract boolean` | `https://developer.android.com/reference/androidx/camera/core/ExposureState#isExposureCompensationSupported()()` Whether exposure compensation is supported for this camera. |

## Public methods

### getExposureCompensationIndex

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/camera#1.0.0)

```
abstract int getExposureCompensationIndex()
```

Get the current exposure compensation index.

The exposure value (EV) is the compensation index multiplied by the step value which is given by `https://developer.android.com/reference/androidx/camera/core/ExposureState#getExposureCompensationStep()`. Increasing the compensation index by using the `https://developer.android.com/reference/androidx/camera/core/CameraControl#setExposureCompensationIndex(int)` will increase exposure making the capture result brighter, decreasing the value making it darker.

For example, if the exposure value (EV) step size is 0.333, set the exposure compensation index value '6' will mean an exposure compensation of +2 EV; -3 will mean an exposure compensation of -1 EV.

The exposure value resets to default when there is no `https://developer.android.com/reference/androidx/camera/core/UseCase` associated with the camera. For example, unbind all use cases from the camera or when the lifecycle changed that all the use case stopping data from the camera.

| Returns |
|---|---|
| `int` | The current exposure compensation index. If `https://developer.android.com/reference/androidx/camera/core/ExposureState#isExposureCompensationSupported()` is false, always return 0. |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/camera/core/CameraControl#setExposureCompensationIndex(int)` |   |

### getExposureCompensationRange

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/camera#1.0.0)

```
abstract @NonNull Range<Integer> getExposureCompensationRange()
```

Get the maximum and minimum exposure compensation values for `https://developer.android.com/reference/androidx/camera/core/CameraControl#setExposureCompensationIndex(int)`

The actual exposure value (EV) range that supported by the camera can be calculated by multiplying the `https://developer.android.com/reference/androidx/camera/core/ExposureState#getExposureCompensationStep()` with the maximum and minimum values:

``Min.exposure compensation * `https://developer.android.com/reference/androidx/camera/core/ExposureState#getExposureCompensationStep()` <= minimum
supported EV``

``Max.exposure compensation * `https://developer.android.com/reference/androidx/camera/core/ExposureState#getExposureCompensationStep()` >= maximum
supported EV``

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/util/Range.html<https://developer.android.com/reference/java/lang/Integer.html>` | the maximum and minimum exposure compensation values range. If `https://developer.android.com/reference/androidx/camera/core/ExposureState#isExposureCompensationSupported()` is false, return Range \[0,0\]. |

| See also |
|---|---|
| `https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#CONTROL_AE_COMPENSATION_RANGE` |   |

### getExposureCompensationStep

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/camera#1.0.0)

```
abstract @NonNull Rational getExposureCompensationStep()
```

Get the smallest step by which the exposure compensation can be changed.

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/util/Rational.html` | The exposure compensation step. If `https://developer.android.com/reference/androidx/camera/core/ExposureState#isExposureCompensationSupported()` is false, return `https://developer.android.com/reference/android/util/Rational.html#ZERO`. |

| See also |
|---|---|
| `https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#CONTROL_AE_COMPENSATION_STEP` |   |

### isExposureCompensationSupported

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/camera#1.0.0)

```
abstract boolean isExposureCompensationSupported()
```

Whether exposure compensation is supported for this camera.

| Returns |
|---|---|
| `boolean` | true if exposure compensation is supported for this camera. |