CameraSelector.Builder


class CameraSelector.Builder


Builder for a CameraSelector.

Summary

Public constructors

Public functions

CameraSelector.Builder

Adds a CameraFilter to the current set of filters.

CameraSelector

Builds the CameraSelector.

CameraSelector.Builder
requireLensFacing(lensFacing: Int)

Requires a camera with the specified lens facing.

CameraSelector.Builder
setPhysicalCameraId(physicalCameraId: String)

Sets the physical camera id.

Public constructors

Builder

Added in 1.0.0
Builder()

Public functions

addCameraFilter

Added in 1.0.0
fun addCameraFilter(cameraFilter: CameraFilter): CameraSelector.Builder

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
cameraFilter: CameraFilter

the CameraFilter for selecting cameras with.

Returns
CameraSelector.Builder

this builder.

build

Added in 1.0.0
fun build(): CameraSelector

Builds the CameraSelector.

requireLensFacing

Added in 1.0.0
fun requireLensFacing(lensFacing: Int): CameraSelector.Builder

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
lensFacing: Int

the lens facing for selecting cameras with.

Returns
CameraSelector.Builder

this builder.

setPhysicalCameraId

Added in 1.4.0
fun setPhysicalCameraId(physicalCameraId: String): CameraSelector.Builder

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
physicalCameraId: String

physical camera id.

Returns
CameraSelector.Builder

this builder.