CameraSelector.Builder


public final class CameraSelector.Builder


Builder for a CameraSelector.

Summary

Public constructors

Public methods

@NonNull CameraSelector.Builder

Adds a CameraFilter to the current set of filters.

@NonNull CameraSelector

Builds the CameraSelector.

@NonNull CameraSelector.Builder
requireLensFacing(int lensFacing)

Requires a camera with the specified lens facing.

@NonNull CameraSelector.Builder
setPhysicalCameraId(@NonNull String physicalCameraId)

Sets the physical camera id.

Public constructors

Builder

Added in 1.0.0
public Builder()

Public methods

addCameraFilter

Added in 1.0.0
public @NonNull CameraSelector.Builder addCameraFilter(@NonNull CameraFilter cameraFilter)

Adds a CameraFilter to the current set of filters. It can be used to select a specific camera based on customized criteria like Camera2 characteristics.

Multiple filters can be added. All filters will be applied by the order they were added when the CameraSelector is used, and the first camera output from the filters will be selected.

Parameters
@NonNull CameraFilter cameraFilter

the CameraFilter for selecting cameras with.

Returns
@NonNull CameraSelector.Builder

this builder.

build

Added in 1.0.0
public @NonNull CameraSelector build()

Builds the CameraSelector.

requireLensFacing

Added in 1.0.0
public @NonNull CameraSelector.Builder requireLensFacing(int lensFacing)

Requires a camera with the specified lens facing.

Valid values for lens facing are LENS_FACING_FRONT, LENS_FACING_BACK and LENS_FACING_EXTERNAL. However, requiring LENS_FACING_EXTERNAL is currently experimental and may produce unexpected behaviors.

If lens facing is already set, this will add extra requirement for lens facing instead of replacing the previous setting.

Parameters
int lensFacing

the lens facing for selecting cameras with.

Returns
@NonNull CameraSelector.Builder

this builder.

setPhysicalCameraId

Added in 1.4.0
public @NonNull CameraSelector.Builder setPhysicalCameraId(@NonNull String physicalCameraId)

Sets the physical camera id.

A logical camera is a grouping of two or more of those physical cameras. See Multi-camera API

If we want to open one physical camera, for example ultra wide, we just need to set physical camera id in CameraSelector and bind to lifecycle. All CameraX features will work normally when only a single physical camera is used.

If we want to open multiple physical cameras, we need to have multiple CameraSelectors and set physical camera id on each, then bind to lifecycle with the CameraSelectors. Internally each physical camera id will be set on UseCase, for example, Preview and call setPhysicalCameraId.

Currently only two physical cameras for the same logical camera id are allowed and the device needs to support physical cameras by checking isLogicalMultiCameraSupported. In addition, there is no guarantee or API to query whether the device supports multiple physical camera opening or not. Internally the library checks isSessionConfigurationSupported, if the device does not support the multiple physical camera configuration, IllegalArgumentException will be thrown when binding to lifecycle.

Parameters
@NonNull String physicalCameraId

physical camera id.

Returns
@NonNull CameraSelector.Builder

this builder.