CameraProvider


interface CameraProvider

Known direct subclasses
ProcessCameraProvider

A singleton which can be used to bind the lifecycle of cameras to any LifecycleOwner within an application's process.


A CameraProvider provides basic access to a set of cameras such as querying for camera existence or information.

A device might have multiple cameras. According to the applications' design, they might need to search for a suitable camera which supports their functions. A CameraProvider allows the applications to check whether any camera exists to fulfill the requirements or to get CameraInfo instances of all cameras to retrieve the camera information.

Summary

Public functions

(Mutable)List<CameraInfo!>

Returns CameraInfo instances of the available cameras.

CameraInfo

Returns the CameraInfo instance of the camera resulted from the specified CameraSelector.

Boolean
hasCamera(cameraSelector: CameraSelector)

Checks whether this provider supports at least one camera that meets the requirements from a CameraSelector.

Public functions

getAvailableCameraInfos

Added in 1.1.0
fun getAvailableCameraInfos(): (Mutable)List<CameraInfo!>

Returns CameraInfo instances of the available cameras.

While iterating through all the available CameraInfo, if one of them meets some predefined requirements, a CameraSelector that uniquely identifies its camera can be retrieved using getCameraSelector, which can then be used to bind use cases to that camera.

Returns
(Mutable)List<CameraInfo!>

A list of CameraInfo instances for the available cameras.

getCameraInfo

Added in 1.4.0-rc01
@ExperimentalCameraInfo
fun getCameraInfo(cameraSelector: CameraSelector): CameraInfo

Returns the CameraInfo instance of the camera resulted from the specified CameraSelector.

The returned CameraInfo corresponds to the camera that will be bound when calling bindToLifecycle with the specified CameraSelector.

Parameters
cameraSelector: CameraSelector

the CameraSelector to use for selecting the camera to receive information about.

Returns
CameraInfo

the corresponding CameraInfo.

Throws
java.lang.IllegalArgumentException

if the given CameraSelector can't result in a valid camera to provide the CameraInfo.

hasCamera

Added in 1.1.0
fun hasCamera(cameraSelector: CameraSelector): Boolean

Checks whether this provider supports at least one camera that meets the requirements from a CameraSelector.

If this method returns true, then the camera selector can be used to bind use cases and retrieve a Camera instance.

Parameters
cameraSelector: CameraSelector

the CameraSelector that filters available cameras.

Returns
Boolean

true if the device has at least one available camera, otherwise false.

Throws
androidx.camera.core.CameraInfoUnavailableException

if unable to access cameras, perhaps due to insufficient permissions.