ExtensionSessionConfig
public final class ExtensionSessionConfig extends SessionConfig
| java.lang.Object | ||
| ↳ | androidx.camera.core.SessionConfig | |
| ↳ | androidx.camera.extensions.ExtensionSessionConfig |
A SessionConfig for extension sessions.
This class encapsulates the necessary configurations for a extension session. Once configured, this config can be bound to a camera and lifecycle using androidx.camera.lifecycle.ProcessCameraProvider.bindToLifecycle or androidx.camera.lifecycle.LifecycleCameraProvider.bindToLifecycle.
It consists of a collection of UseCase, session parameters to be applied on the camera session, and common properties like the field-of-view defined by ViewPort. Note that ImageAnalysis is not supported in extension sessions.
Constraints:
-
When used for binding to a camera via
androidx.camera.lifecycle.ProcessCameraProvider.bindToLifecycleorandroidx.camera.lifecycle.LifecycleCameraProvider.bindToLifecycle, the list ofUseCaseprovided to the constructor or added viaBuilder.addUseCasecannot be empty.
Apps can use CameraProvider.getCameraInfo with an ExtensionSessionConfig to obtain the CameraInfo of the camera which can support the given ExtensionSessionConfig.
Usage Example:
// In a coroutine scope
try {
val extensionsManager = ExtensionsManager.getInstanceAsync(context, cameraProvider).await()
val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA
if (extensionsManager.isExtensionAvailable(cameraSelector, ExtensionMode.NIGHT)) {
// This is the correct time to create an ExtensionSessionConfig
val imageCapture = ImageCapture.Builder().build()
val preview = Preview.Builder().build()
val config = ExtensionSessionConfig.Builder(
ExtensionMode.NIGHT,
extensionsManager
)
.addUseCase(preview)
.addUseCase(imageCapture)
.build()
// Now it's safe to bind the configuration
cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, config)
} else {
// Handle the case where the extension is not available.
}
} catch (e: Exception) {
// Handle failure
}| Throws | |
|---|---|
kotlin.IllegalArgumentException |
if the given mode is not a valid extension mode. |
| See also | |
|---|---|
bindToLifecycle |
|
getInstanceAsync |
Summary
Nested types |
|---|
public final class ExtensionSessionConfig.BuilderBuilder for |
Public constructors |
|---|
ExtensionSessionConfig(Creates an |
ExtensionSessionConfig( |
Public methods |
|
|---|---|
final @NonNull ExtensionsManager |
The |
final int |
getMode()The extension mode. |
Inherited methods |
||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Public constructors
ExtensionSessionConfig
public ExtensionSessionConfig(
int mode,
@NonNull ExtensionsManager extensionsManager,
@NonNull UseCase... useCases
)
Creates an ExtensionSessionConfig with a variable number of UseCase instances.
| Parameters | |
|---|---|
int mode |
The extension mode. See |
@NonNull ExtensionsManager extensionsManager |
The |
@NonNull UseCase... useCases |
The |
| Throws | |
|---|---|
kotlin.IllegalArgumentException |
if the given mode is not a valid extension mode. |
ExtensionSessionConfig
public ExtensionSessionConfig(
int mode,
@NonNull ExtensionsManager extensionsManager,
@NonNull List<@NonNull UseCase> useCases,
ViewPort viewPort,
@NonNull List<@NonNull CameraEffect> effects
)
| Parameters | |
|---|---|
int mode |
The extension mode. See |
@NonNull ExtensionsManager extensionsManager |
The |
@NonNull List<@NonNull UseCase> useCases |
The list of |
ViewPort viewPort |
The |
@NonNull List<@NonNull CameraEffect> effects |
The list of |
Public methods
getExtensionsManager
public final @NonNull ExtensionsManager getExtensionsManager()
The ExtensionsManager instance.
getMode
public final int getMode()
The extension mode. See ExtensionMode for the list of available modes.