CameraSelector.Builder
class CameraSelector.Builder
Builder for a CameraSelector
.
Summary
Public constructors |
---|
Builder() |
Public functions |
|
---|---|
CameraSelector.Builder |
addCameraFilter(cameraFilter: CameraFilter) Adds a |
CameraSelector |
build() Builds the |
CameraSelector.Builder |
requireLensFacing(lensFacing: Int) Requires a camera with the specified lens facing. |
CameraSelector.Builder |
setPhysicalCameraId(physicalCameraId: String) Sets the physical camera id. |
Public functions
addCameraFilter
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 |
Returns | |
---|---|
CameraSelector.Builder |
this builder. |
requireLensFacing
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
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 CameraSelector
s and set physical camera id on each, then bind to lifecycle with the CameraSelector
s. 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. |