# ImplementationMode

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

*** ** * ** ***


```
public enum ImplementationMode extends Enum<@NonNull ImplementationMode>
```

<br />

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) |||
| ↳ | [kotlin.Enum](https://developer.android.com/reference/java/lang/Enum.html)\<@[NonNull](https://developer.android.com/reference/androidx/annotation/NonNull) [ImplementationMode](https://developer.android.com/reference/androidx/camera/viewfinder/core/ImplementationMode)\> ||
|   | ↳ | [androidx.camera.viewfinder.core.ImplementationMode](https://developer.android.com/reference/androidx/camera/viewfinder/core/ImplementationMode) |

*** ** * ** ***

The implementation mode of a Viewfinder.

User preference on how the viewfinder should render the viewfinder. The viewfinder is displayed with either a SurfaceView/AndroidExternalSurface or a TextureView/AndroidEmbeddedExternalSurface.

- `https://developer.android.com/reference/androidx/camera/viewfinder/core/ImplementationMode#EXTERNAL` uses a SurfaceView/AndroidExternalSurface, it is generally better when it comes to certain key metrics, including power and latency.

- `https://developer.android.com/reference/androidx/camera/viewfinder/core/ImplementationMode#EMBEDDED` uses a TextureView/AndroidEmbeddedExternalSurface it is better supported by a wider range of devices.

The option is used to decide what is the best internal implementation given the device capabilities and user configurations.

## Summary

| ### Enum Values |
|---|---|
| `https://developer.android.com/reference/androidx/camera/viewfinder/core/ImplementationMode#EMBEDDED` | Use a TextureView/AndroidEmbeddedExternalSurface for the Viewfinder. |
| `https://developer.android.com/reference/androidx/camera/viewfinder/core/ImplementationMode#EXTERNAL` | Use a SurfaceView/AndroidExternalSurface for the Viewfinder when possible. |

| ### Public methods |
|---|---|
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.enums/-enum-entries/index.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/camera/viewfinder/core/ImplementationMode>` | `https://developer.android.com/reference/androidx/camera/viewfinder/core/ImplementationMode#getEntries()()` Returns an immutable `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.enums/-enum-entries/index.html` list containing the constants of this enum type, in the order they're declared. |
| `static final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/camera/viewfinder/core/ImplementationMode` | `https://developer.android.com/reference/androidx/camera/viewfinder/core/ImplementationMode#valueOf(kotlin.String)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html value)` Returns the enum constant of this type with the specified name. |
| `static final @https://developer.android.com/reference/androidx/annotation/NonNull ImplementationMode[]` | `https://developer.android.com/reference/androidx/camera/viewfinder/core/ImplementationMode#values()()` Returns an array containing the constants of this enum type, in the order they're declared. |

## Enum Values

### EMBEDDED

```
ImplementationMode ImplementationMode.EMBEDDED
```

Use a TextureView/AndroidEmbeddedExternalSurface for the Viewfinder.

### EXTERNAL

```
ImplementationMode ImplementationMode.EXTERNAL
```

Use a SurfaceView/AndroidExternalSurface for the Viewfinder when possible. It has somewhat lower latency and less performance and power overhead. It offers more control on a single drawing board, but does not support certain animations.

## Public methods

### getEntries

```
public final @NonNull EnumEntries<@NonNull ImplementationMode> getEntries()
```

Returns an immutable `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.enums/-enum-entries/index.html` list containing the constants of this enum type, in the order they're declared.

### valueOf

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

```
public static final @NonNull ImplementationMode valueOf(@NonNull String value)
```

Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if this enum type has no constant with the specified name |

### values

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

```
public static final @NonNull ImplementationMode[] values()
```

Returns an array containing the constants of this enum type, in the order they're declared.

This method may be used to iterate over the constants.

The function returns a new instance of the array on every call. The array could be mutated, so working with it may also require defensive copying. Consider using `entries` property as a more efficient alternative returning an immutable list of enum entries.