This table lists all the artifacts in the androidx.camera group.
CameraX is tested on many devices in our lab. To see a list of the devices currently in the lab, see CameraX lab-tested devices.
To add a dependency on CameraX, you must add the Google Maven repository to your project. Read Google's Maven repository for more information.
Add the dependencies for the artifacts you need in the build.gradle file for
your app or module:
dependencies { // CameraX core library using the camera2 implementation def camerax_version = "1.7.0-alpha01" // The following line is optional, as the core library is included indirectly by camera-camera2 implementation "androidx.camera:camera-core:${camerax_version}" implementation "androidx.camera:camera-camera2:${camerax_version}" // If you want to additionally use the CameraX Lifecycle library implementation "androidx.camera:camera-lifecycle:${camerax_version}" // If you want to additionally use the CameraX VideoCapture library implementation "androidx.camera:camera-video:${camerax_version}" // If you want to additionally use the CameraX View class implementation "androidx.camera:camera-view:${camerax_version}" // If you want to additionally add CameraX ML Kit Vision Integration implementation "androidx.camera:camera-mlkit-vision:${camerax_version}" // If you want to additionally use the CameraX Extensions library implementation "androidx.camera:camera-extensions:${camerax_version}" }
dependencies { // CameraX core library using the camera2 implementation val camerax_version = "1.7.0-alpha01" // The following line is optional, as the core library is included indirectly by camera-camera2 implementation("androidx.camera:camera-core:${camerax_version}") implementation("androidx.camera:camera-camera2:${camerax_version}") // If you want to additionally use the CameraX Lifecycle library implementation("androidx.camera:camera-lifecycle:${camerax_version}") // If you want to additionally use the CameraX VideoCapture library implementation("androidx.camera:camera-video:${camerax_version}") // If you want to additionally use the CameraX View class implementation("androidx.camera:camera-view:${camerax_version}") // If you want to additionally add CameraX ML Kit Vision Integration implementation("androidx.camera:camera-mlkit-vision:${camerax_version}") // If you want to additionally use the CameraX Extensions library implementation("androidx.camera:camera-extensions:${camerax_version}") }
Your feedback helps make Jetpack better. Let us know if you discover new issues or have ideas for improving this library. Please take a look at the existing issues in this library before you create a new one. You can add your vote to an existing issue by clicking the star button.
See the Issue Tracker documentation for more information.
June 12, 2024
androidx.camera:camera-viewfinder-compose:1.0.0-alpha02 is released. Version 1.0.0-alpha02 contains these commits.
May 14, 2024
androidx.camera:camera-viewfinder-compose:1.0.0-alpha01 is released. Version 1.0.0-alpha01 contains these commits.
New Features
June 12, 2024
androidx.camera:camera-viewfinder:1.4.0-alpha07 and androidx.camera:camera-viewfinder-core:1.4.0-alpha07 are released. Version 1.4.0-alpha07 contains these commits.
May 14, 2024
androidx.camera:camera-viewfinder:1.4.0-alpha06 and androidx.camera:camera-viewfinder-core:1.4.0-alpha06 are released. Version 1.4.0-alpha06 contains these commits.
API Changes
Viewfinder's ImplementationMode Enums to better reflect underlying implementations, and add fixed constants for TransformationInfo.sourceRotation. (Ic6149)ZoomGestureDetector.ZoomEvent to encapsulates the states of a zoom gesture. (I84cdf)March 11, 2026
androidx.camera:camera-*:1.7.0-alpha01 is released. Version 1.7.0-alpha01 contains these commits.
API Changes
CameraController.setSessionConfig() API. This allows providing a custom SessionConfig for advanced UseCase configurations not directly exposed by CameraController. When a SessionConfig is active, other configuration methods on CameraController are disabled.(I35cf1, b/448525636)Bug Fixes
ImageAnalysis where images were not correctly rotated when output image rotation is enabled and the initial relative rotation is 0 degrees. (Id46c2, b/487160584)May 06, 2026
androidx.camera:camera-*:1.6.1 is released. Version 1.6.1 contains these commits.
Bug Fixes
ListenableFuture" when using CameraX 1.6.0. (Ic8cba, b/497571473)March 25, 2026
androidx.camera:camera-*:1.6.0 is released. Version 1.6.0 contains these commits.
Important changes since 1.5.0:
1. Migrated to a High-Performance, Unified Camera Stack
CameraPipe—the same modern, high-performance stack powering the Pixel camera. This transition streamlines architectural efficiency and provides a scalable foundation for bringing advanced computational photography features to the developer ecosystem.2. Media3 Muxer Integration
3. Feature Group improvement
GroupableFeatures includes VIDEO_STABILIZATION, UHD_RECORDING to allow apps to enable them together with other features. CameraEffect and ImageAnalysis in SessionConfig is supported when the feature group is enabled.4. Stabilized SessionConfig API
SessionConfig has graduated from experimental to a fully stable public API including SessionConfig and HighSpeedVideoSessionConfig.
CameraX Extensions can now be implemented with a new ExtensionSessionConfig AP. A new isSessionConfigSupported API is introduced, allowing developers to query whether a specific combination of use cases and features (such as HDR, stabilization, specific resolutions, CameraX Extensions or slow motion) is supported by the device before binding to the lifecycle.Bug Fixes
PREVIEW_STABILIZATION is used with VideoCapture. This corrects a bug that caused inconsistent results when a Preview use case was not also active. (Ifed82, b/449913903)CameraInfo#isFeatureGroupSupported could incorrectly return true for PREVIEW_STABILIZATION if the SessionConfig in the query was already configured with other features. (I2c355c, b/437816469)VideoCapture use case is bound. (I0f183, b/458197367)ExifInterface dependency to include a fix for parsing JPEGs with 0xFF padding, which resolves image capture failures on devices where the JPEG encoder adds fill bytes before markers. (I0eb49)February 25, 2026
androidx.camera:camera-*:1.6.0-rc01 is released. Version 1.6.0-rc01 contains these commits.
February 11, 2026
androidx.camera:camera-*:1.6.0-beta02 is released. Version 1.6.0-beta02 contains these commits.
Bug Fixes
ImageCapture OUTPUT_FORMAT_RAW_JPEG in-memory capture IllegalArgumentException issue. (Id4eec, b/479990902)January 28, 2026
androidx.camera:camera-*:1.6.0-beta01 is released. Version 1.6.0-beta01 contains these commits.
Bug Fixes
CameraExtensionsInfo current type issue in CameraX 1.6.0-alpha that the LiveData object can't receive the updated type data. (I2c7a5)December 17, 2025
androidx.camera:camera-*:1.6.0-alpha02 is released. Version 1.6.0-alpha02 contains these commits.
New Features
CameraEffect and the feature groups API in SessionConfig. (I17f18, b/406370934)ImageAnalysis and the feature groups API in SessionConfig. (I87833, b/406371720)API Changes
addUseCase setter function for ExtensionSessionConfig.Builder and added the lacking getters for ExtensionSessionConfig. (I71e07, b/453988621)ExtensionsManager.getInstance API which is a suspending version of ExtensionsManager.getInstanceAsync (I3a0a9, b/452208792)isFeatureGroupSupported to isSessionConfigSupported, and make it support any types of SessionConfig. (I21616, b/448781299)ExtensionsManager into Kotlin implementation. (I73091, b/452208792)CameraProvider#getCameraInfo(CameraSelector, SessionConfig) to retrieve CameraInfo when the SessionConfig can affect camera selection. For example, when using an ExtensionSessionConfig. (Ic548c, b/451891648)ExtensionSessionConfig API. Apps can create an ExtensionSessionConfig and use it to create an extensions session now. (I6354c, b/448524373)androidx.camera.video.HighSpeedVideoSessionConfig API is no longer experimental and is now a fully stable public API. (I492d4, b/447558239)androidx.camera.core.SessionConfig API is no longer experimental and is now a fully stable public API. (Idc87a, b/447558437)Bug Fixes
IllegalArgumentException: Dynamic range profile cannot be converted to a DynamicRange object: on Android 17 or higher. (Ibd7b5, b/463465353)CaptureRequest.FLASH_MODE not being applied when set through the Camera2Interop API. (I0004c, b/459608684)VideoCapture use case is bound. (I0f183, b/458197367)October 22, 2025
androidx.camera:camera-*:1.6.0-alpha01 is released. Version 1.6.0-alpha01 contains these commits.
New Features
CameraPipe, this new stack is a collaboration between the CameraX and Pixel Camera teams. It ensures that all improvements are shared, benefiting both CameraX users and the Pixel camera app. API Changes
CameraPresenceListener API for more details. (I41ead, b/427182232, b/419441394)Bug Fixes
PREVIEW_STABILIZATION is used with VideoCapture. This corrects a bug that caused inconsistent results when a Preview use case was not also active. (Ifed82, b/449913903)CameraInfo#isFeatureGroupSupported could incorrectly return true for PREVIEW_STABILIZATION if the SessionConfig in the query was already configured with other features. (I2c355c, b/437816469)January 28, 2026
androidx.camera:camera-*:1.5.3 is released. Version 1.5.3 contains these commits.
Bug Fixes
December 4, 2025
androidx.camera:camera-*:1.5.2 is released. Version 1.5.2 contains these commits.
Bug Fixes
IllegalArgumentException: Dynamic range profile cannot be converted to a DynamicRange object: on Android 17 or higher. (Ic9184)PREVIEW_STABILIZATION feature was added with VideoCapture use case, but without Preview use case. (Ifed82)October 08, 2025
androidx.camera:camera-*:1.5.1 is released. Version 1.5.1 contains these commits.
Bug Fixes
CameraEffect in concurrent camera composition mode. The effect will be applied on the composition output. Please note that mirrorMode in VideoCapture will be ignored when effect is set in concurrent camera composition mode. (If3d00, b/425565129)mirrorMode is not applied correctly to the secondary camera in concurrent camera composition mode. (I686cd, b/446430827)Preview, ImageCapture and VideoCapture together in concurrent camera non-composition mode. (Ib410a, b/443009871)ImageCapture and VideoCapture would lose their target rotation information if they were recreated. This could cause images or videos to have an incorrect orientation if a setting like imageCaptureMode was changed after the device had been rotated. (I477c8, b/444734537)VideoCapture from recording at QUALITY_1080P. This problem occurred when using a default Preview resolution configuration while the internal StreamSharing feature was active (e.g., when four UseCases are bound simultaneously). (I493cb, b/440364875)SurfaceProcessor is shut down (I2c450, b/414150174)CameraController that caused an IllegalStateException when an initial UseCase selected the maximum resolution, which subsequently prevented other UseCases from being bound. (Ifb758, b/440374234)CameraInfo#isFeatureGroupSupported could incorrectly return true for the PREVIEW_STABILIZATION feature. This could sometimes occur when querying with a SessionConfig that was already configured with other features. (I2c355, b/437816469)CameraXViewfinder stability on older API levels and devices with SurfaceView issues by defaulting to TextureView in such scenarios. This fallback mechanism is the new default but can be programmatically overridden. (Ieb476, b/437496463)PreviewView where it could prevent its Activity from being garbage collected. This happens if a new SurfaceRequest arrives before the previous one is handled. (I4aa0b,b/443112512)September 10, 2025
androidx.camera:camera-*:1.5.0 is released. Version 1.5.0 contains these commits.
Important changes since 1.4.0:
Recorder#getHighSpeedVideoCapabilities(CameraInfo) and HighSpeedVideoSessionConfig for details.SessionConfig and FeatureGroup API: The new SessionConfig API allows you to configure the camera session and enable multiple features together safely, including HLG (HDR), UltraHDR, 60 FPS, and Preview stabilization. You can also set a preferable feature group with priority, letting CameraX determine the optimal supported combination. See SessionConfig.Builder#setPreferredFeatureGroup, SessionConfig.Builder#setRequiredFeatureGroup, and CameraInfo#isFeatureGroupSupported(SessionConfig) for more information.setTargetFrameRate by using CameraInfo.getSupportedFrameRateRanges(sessionConfig) to query and SessionConfig.setExpectedFrameRateRange to set precise and supported frame rates.ImageCapture.getImageCaptureCapabilities(cameraInfo).getSupportedOutputFormats() and enable it in ImageCapture.Builder.setOutputFormat. Zoom ratio and preview stabilization capabilities are now reflected when Extensions are enabled.CameraControl.setTorchStrengthLevel.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY) by the following APIs: Refer to CameraInfo#isLowLightBoostSupported, CameraInfo#getLowLightBoostState, and CameraControl#enableLowLightBoostAsync.VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE is now triggered for insufficient storage during recording. PendingRecording.withAudioEnabled(boolean initialMuted) allows controlling the initial mute state for audio recording.ImageCapture. Check ImageCaptureCapabilities(CameraInfo).getSupportedOutputFormats() for RAW support. Use overloaded takePicture APIs with multiple OutputFileOptions for RAW+DNG capture.ImageAnalysis. Enable it with ImageAnalysis.Builder.setOutputImageFormat(OUTPUT_IMAGE_FORMAT_NV21).August 13, 2025
androidx.camera:camera-*:1.5.0-rc01 is released. Version 1.5.0-rc01 contains these commits.
Bug Fixes
UniSoc chipsets to hang when capturing an image. The problem occurred when VideoCapture, Preview, and ImageCapture were used simultaneously with all streams set to a 1280x720 resolution. (Ia00c4, b/380802479)getViewportAspectRatioInt (82fca18)July 16, 2025
androidx.camera:camera-*:1.5.0-beta02 is released. Version 1.5.0-beta02 contains these commits.
API Changes
SessionConfig now contains new APIs to denote a group of features as either required or preferred. The CameraInfo.isFeatureGroupSupported API allows to know if a feature group is supported before binding a SessionConfig. SessionConfig also allows setting a listener to know which features are finally selected when a session config is bound. (Ie4d60)SessoinConfig.Builder.setFrameRateRange(Range<Integer>) and CameraInfo.getSupportedFrameRateRanges(SessionConfig), enabling developers to query guaranteed supported frame rates constrained by a specific SessionConfig and then apply the frame rate on SessionConfig. (Ieacf7)SessionConfig API, which includes a better abstraction for configuring use cases, session parameters, CameraEffect, ViewPort and etc. Binding a SessionConfig to a LifecycleOwner opens the camera session, configures it using the specified use cases and session parameters, and applies the designated CameraEffect and ViewPort. When updating a new SessionConfig to the same LifecycleOwner, you can just bind a new Sessionconfig without the need of invoking unbind or unbindAll first. (Iedfc3)HighSpeedVideoSessionConfig API for more details. (Ia16f3)Bug Fixes
ImageCaptureCapabilities#getSupportedOutputFormats() API reporting RAW formats as supported in some devices which doesn't actually have RAW capability. (Ibcadb)PreviewView is used, CameraEffect is enabled or binding 4 use cases(StreamSharing) (I87468)AssertionError: Invalid internal audio state: IDLING. (I38d4b, b/414259796)PreviewView becomes stretched or sideway (Ia917a)CameraXViewfinder now properly handles surface replacement in the underlying Viewfinder. This covers scenarios such as when an EXTERNAL viewfinder on API level 28 or lower moves off screen or if a CameraXViewfinder (with any ImplementationMode) is part of moveableContentOf(). In cases where the underlying ViewfinderSurfaceSession cannot be kept alive, the CameraXViewfinder will invalidate the current CameraX SurfaceRequest, allowing CameraX to use the new Surface. (I79432)EXTERNAL CameraXViewfinder could appear stretched or incorrect due to transformation operations (like scale or translate) being applied too early. The system now waits for the Surface to be created before applying these transformations in the layout phase, ensuring correct output. (Icc77c)CameraXViewfinder now works correctly with Compose's Pager. This change ensures that the Composable can be successfully reset by implementing the onReset callback of AndroidView, supporting both EMBEDDED and EXTERNAL implementations. (I0d9be)May 7, 2025
androidx.camera:camera-*:1.5.0-beta01 is released. Version 1.5.0-beta01 contains these commits.
API Changes
ContentScale and Alignment can now be used in the viewfinder to scale and place the displayed surface within its container, similar to how androidx.compose.foundation.Image behaves. (Ibcea3)TransformationInfo now has default values for all args. This will allow Viewfinders to be created without any TransformationInfo, which will default to a source rotation of 0, no source mirroring, and no crop rect. (I2b1b2)LifecycleCameraProvider, which is a camera provider that can be instantiated with different configurations for features such as accessing the camera of a virtual device by configuring with a customized context. (Ia2992)Bug Fixes
ImageAnalysis with another stream that uses TEMPLATE_RECORD on Samsung SM-E556B device. (Ic0e62, b/409478042)ImageAnalysis with another stream that uses TEMPLATE_RECORD on Samsung SM-M556B device. (Ic1a6a, b/395822788)AssertError issue on Android 15 Pixel devices when doing zoom related operations. (I27a5d, b/401460276)CameraController. (Iae91b, b/409808510)February 26, 2025
androidx.camera:camera-*:1.5.0-alpha06 is released. Version 1.5.0-alpha06 contains these commits.
API Changes
CameraInfo.getTorchStrengthLevel, CameraInfo.getMaxTorchStrengthLevel and CameraControl.setTorchStrengthLevel to allow customizing the torch brightness (I00878)CameraController#setTapToFocusAutoCancelDuration has been added so that users can control the auto-cancellation behavior for PreviewView tap-to-focus events. By default, CameraX cancels the focus events after 5 seconds (i.e. camera focus is reset) and this API allows to modify that duration or disable auto-cancellation altogether. (Icf59a)FLASH_STATE_READY has been renamed to NOT_FIRED and the other FlashState constant names are simplified for better readability. (I8771d)CameraInfo#isLowLightBoostSupported to check the feature availability. 2. Use CameraControl#enableLowLightBoostAsync to enable the mode when the devices can support it. 3. Use CameraInfo#getLowLightBoostState to monitor the low-light boost state. (I937ed)CameraController tap-to-focus events, a new API getTapToFocusInfoState() now exposes the corresponding tap position too by returning a LiveData of TapToFocusInfo class while the previous LiveData<Integer> returning getTapToFocusState() API is deprecated in favor of the new API. (I238d2)Bug Fixes
CameraController focus state event not resetting back to TAP_TO_FOCUS_NOT_STARTED when CameraX auto-cancels a focus event which happens after 5 seconds by default. (I31954)OpenGL. (Idcedc)January 15, 2025
androidx.camera:camera-*:1.5.0-alpha05 is released. Version 1.5.0-alpha05 contains these commits.
API Changes
VideoCapture.getSelectedQuality() to know the selected Quality based on the QualitySelector. (I70508, b/204288986)ImageCapture.OnImageCapturedCallback API, the ImageInfo at the returned ImageProxy can now be used to know whether flash was fired through the new ImageInfo.getFlashState() API. (Id2c61, b/380527406)OUTPUT_IMAGE_FORMAT_NV21 output format support for ImageAnalysis. (I484ab)featurecombinationquery artifact (I4427f)CameraControl by Extensions-specific characteristics when an extensions mode is enabled. (I85af1)Bug Fixes
compileSdk as 35 for using Android 15 related API. Apps using CameraX libraries will also need to upgrade their compileSdk config setting. (Ic80cd)-Xjspecify-annotations=strict (this is the default starting with version 2.1.0 of the Kotlin compiler). (Idc6c6, b/326456246)December 11, 2024
androidx.camera:camera-*:1.5.0-alpha04 is released. Version 1.5.0-alpha04 contains these commits.
API Changes
ImageCapture.Builder#setOutputFormat and ImageCaptureCapabilities#getSupportedOutputFormats as stable APIs (Ieb04a)VideoCapture.getResolutionInfo() to get the resolution information when a VideoCapture is bound to a Lifecycle. (Icb478)PreviewView.getScreenFlash and PreviewView.setScreenFlashOverlayColor as stable APIs. (I74fee)Bug Fixes
VideoCapture is bound together. (I5c745)UltraHDR still image capture support for Extensions if the device can support it. (I48300)CameraEffect targeting image captures on TCL devices. (I7698c)October 30, 2024
androidx.camera:camera-*:1.5.0-alpha03 is released. Version 1.5.0-alpha03 contains these commits.
API Changes
ImageCapture, the device capability check is exposed in ImageCaptureCapabilities#getSupportedOutputFormats. The OUTPUT_FORMAT_RAW is to capture RAW image, which is Adobe DNG format and OUTPUT_FORMAT_RAW_JPEG is to simultaneously capture RAW and JPEG images. The new ImageCapture#takePicture API is used for simultaneous image capture, it needs to provide two OutputFileOptions, the first one is for RAW image and the second one is for JPEG image. (Ib0f3d)Bug Fixes
VideoCapture is enabled. (Id7a64)startFocusMetering with PreviewView.getMeteringPointFactory doesn't get the correct sensor coordinates when an effect is enabled or when 4 use cases are bound (stream-sharing). (I916c5, b/345993685)VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE event is not triggered when recording a video and there is insufficient storage space available. (I35779, b/356399842)October 2, 2024
androidx.camera:camera-*:1.5.0-alpha02 is released. Version 1.5.0-alpha02 contains these commits.
New Features
CameraManager#getCameraDeviceSetup#isSessionConfigurationSupported API with additional data provided by Google Play Service.Bug Fixes
Preview/VideoCapture target frame rate issue on LEGACY level devices. The target frame rate set via the setTargetFrameRate or Camera2Interop API was always overwritten to the value provided by the AeFpsRangeLegacyQuirk. With this fix, CameraX library will respect the value set via the setTargetFrameRate or Camera2Interop API. (Ie2d32)CameraEffect. The image captures with CameraEffect should now have the same pre-capture and post-capture processings (e.g. flash trigger, 3A convergence etc. when applicable) as image capture without any CameraEffect. (I5ff30)ImageAnalysis on Samsung SM-A057G device. When ImageAnalysis uses a resolution larger or equal to 1920x1440, it will cause black preview issue. Applied ExcludedSupportedSizesQuirk to the SM-A057G device to avoid the issue. (I63dfe, b/365877975)Preview/VideoCapture target frame rate issue when stream sharing mechanism is enabled internally to share a stream to Preview and VideoCapture. (I4fdac)ImageProxy.toBitmap() function on these devices if the incorrect JPEG image metadata issue happens. (Iae493, b/356428987)VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE event is not triggered when recording a video and there is insufficient storage space available. (Ia5b4f, b/356399842)September 4, 2024
androidx.camera:camera-*:1.5.0-alpha01 is released. Version 1.5.0-alpha01 contains these commits.
New Features
camera-compose is released for the CameraX Viewfinder Compose Adapter which displays a Preview stream from a CameraX SurfaceRequest from camera-core. (I8666e)CameraXViewfinder, which acts as an idiomatic composable that adapts CameraX SurfaceRequests for the composable Viewfinder. (I4770f)API Changes
CameraProvider.getCameraInfo to be a formal API. (I901cd)PendingRecording.withAudioEnabled(boolean initialMuted) to control the initial mute state. (I635c3, b/354829267)Bug Fixes
bindToLifecycle is invoked with a destroyed LifecycleOwner. (I6e6d8)VideoCapture on Motorola Edge 20 Fusion. (I1fe88)PreviewView to improve smoothness. (I04ffc)March 26, 2025
androidx.camera:camera-*:1.4.2 is released. Version 1.4.2 contains these commits.
Bug Fixes
ImageAnalysis with another stream that uses TEMPLATE_RECORD on Samsung Galaxy M55. (Ic1a6a, b/395822788)December 11, 2024
androidx.camera:camera-*:1.4.1 is released. Version 1.4.1 contains these commits.
Bug Fixes
ImageCapture#takePicture malfunction issue when extensions are enabled and VideoCapture is bound together. (I5c745)October 30, 2024
androidx.camera:camera-*:1.4.0 is released. Version 1.4.0 contains these commits.
Important changes since 1.3.0
CameraX 1.4.0 is packed with exciting updates! Here's a summary:
Headline Feature: 10-bit HDR:
UltraHDR images and HDR video on a growing range of devices.Other Cool Features:
takePicture and awaitInstance suspend functions.VideoCapture and new ImageCapture features.ExtensionMode#AUTO. You can find more bug fixes in our Beta and RC announcements.October 16, 2024
androidx.camera:camera-*:1.4.0-rc04 is released. Version 1.4.0-rc04 contains these commits.
Bug Fixes
startFocusMetering with PreviewView.getMeteringPointFactory doesn't get the correct sensor coordinates when an effect is enabled or when 4 use cases are bound (stream-sharing). (I916c5, b/345993685)October 2, 2024
androidx.camera:camera-*:1.4.0-rc03 is released. Version 1.4.0-rc03 contains these commits.
Bug Fixes
CameraEffect. The image captures with CameraEffect should now have the same pre-capture and post-capture processings (e.g. flash trigger, 3A convergence etc. when applicable) as image capture without any CameraEffect. (I5ff30)PreviewView (I04ffc)September 18, 2024
androidx.camera:camera-*:1.4.0-rc02 is released. Version 1.4.0-rc02 contains these commits.
Bug Fixes
bindToLifecycle is invoked with a destroyed LifecycleOwner. (I6e6d8)ScreenFlashView for ScreenFlash#apply which also fixes bugs due to brightness change completing asynchronously after some time. (I37cdb)August 7, 2024
androidx.camera:camera-*:1.4.0-rc01 is released. Version 1.4.0-rc01 contains these commits.
New Features
CameraInfo.getCameraInfo to provide specific camera information without the need of binding use cases to the camera. (I550d1)API Changes
PreviewView.getScreenFlash and PreviewView.setScreenFlashOverlayColor APIs for cases where ScreenFlashView is not explicitly added. (I43945)Bug Fixes
takePicture request with Extensions enabled could fail to get result and the next takePicture request might no longer work. (Iae78f)Camera2OutputConfigImpl conversion problem in release mode, surfaced after upgrading AGP to 8.5.1 and enabling minification. (I99598, b/354824993)June 12, 2024
androidx.camera:camera-*:1.4.0-beta02 is released. Version 1.4.0-beta02 contains these commits.
API Changes
VideoCapture, add setMirrorMode for Preview use case. It will support mirror mode ON and OFF for Preview stream via OutputConfiguration.setMirrorMode from API 33 and above, for older APIs, it will be no-op. (I821f4)Bug Fixes
ImageCapture selects 1920x1080 under Preview + VideoCapture + ImageCapture UseCase combination. (I5a463, b/336925549)May 14, 2024
androidx.camera:camera-*:1.4.0-beta01 is released. Version 1.4.0-beta01 contains these commits.
API Changes
ZoomGestureDetector.ZoomEvent to encapsulates the states of a zoom gesture. (I84cdf)Bug Fixes
CameraEffect is enabled on some devices. (e.g. 4000x3000 on Samsung A32 5G). (Ie3ed3, b/337336152)ImageCapture and VideoCapture(UHD) are bound on Pixel 4XL API29. (I5b288)ProcessCameraProvider will preserve the device ID to ensure the functionality in a virtual device environment. (I5ba48)April 17, 2024
androidx.camera:camera-*:1.4.0-alpha05 is released. Version 1.4.0-alpha05 contains these commits.
New Features
ProcessCameraProvider into Kotlin implementation. (I46d4f)ImageCapture.takePicture suspend functions to allow it to be called in a Kotlin-idiomatic way. (I920be)API Changes
ImageCapture, and add getSupportedOutputFormats method to ImageCaptureCapabilities for querying device capability. The default output format value is OUTPUT_FORMAT_JPEG, which captures SDR images in JPEG format. When the device supports Ultra HDR and the output format is set to OUTPUT_FORMAT_JPEG_ULTRA_HDR, CameraX will capture Ultra HDR compressed images using the JPEG/R image format. The format is backwards compatible with SDR JPEG format and supports HDR rendering of content. This means that on older apps or devices, images appear seamlessly as regular JPEG; on apps and devices that have been updated to fully support the format, images appear as HDR. (I5de50)PhysicalCameraInfo in CameraInfo to query physical camera information and add physical camera id setter/getter in CameraSelector (Ic5b90)CameraController#COORDINATE_SYSTEM_VIEW_REFERENCED with ImageAnalysis#COORDINATE_SYSTEM_VIEW_REFERENCED. The value of the constant remains the same. This is for consolidating all the constants into one place. (I890bb)RetryPolicy API empowers developers to customize retry behavior for CameraX initialization. (I36dd2)ImageCaptureLatencyEstimate object to assist with testability (Iaba99)ImageAnalysis#COORDINATE_SYSTEM_SENSOR. When this is used, the MlKitAnalyzer returns coordinates in the camera sensor coordinate system. (I3ec61)CameraExtensionsInfo and CameraExtensionsControl interfaces allow applications to monitor and adjust extension strength settings. Applications can obtain the CameraExtensionsInfo or CameraExtensionsControl instance via the newly added ExtensionsManager#getCameraExtensionsInfo() or ExtensionsManager#getCameraExtensionsControl() methods. (I28e1a)ProcessCameraProvider.awaitInstance which is a suspending version of ProcessCameraProvider.getInstance (Ib22b9)PreviewView#getSensorToViewTransform() API. The Matrix represents the transformation from camera sensor coordinates to the PreviewView's coordinates. This can be used to transform coordinates from one UseCase to another. For example, transforming the coordinates of detected objects in ImageAnalysis to PreviewView overlay. (I947ab)camera-viewfinder-core API more generic so it can be used by camera-viewfinder and camera-viewfinder-compose. (I1e295)getSurface function to ViewfinderSurfaceRequest. (I781a0)camera-viewfinder-core in camera-viewfinder and deprecate ViewfinderSurfaceRequest and CameraViewfinder. (I6198c)ZoomGestureDetector that interprets scaling gestures specifically configured for pinch-to-zoom activity. (Ifafbf)Bug Fixes
ImageAnalysis' resolution selection issue related to the analyzer default target resolution setting: target resolution was incorrectly kept as 640x480 even if applications has set a different analyzer default resolution setting. If applications encounter this issue (1.3.0 ~ 1.3.2) and can't upgrade to use the newer version releases which contain the solution, directly setting a ResolutionSelector with the preferred resolution and a matching AspectRatioStrategy to the ImageAnalysis UseCase can workaround this issue. (I81f72, b/330091012)takePicture request might fail to run if the current request is failed. (Ie0801)ImageProxy.toBitmap() function on Samsung A24 devices. (I8d6eb, b/309005680)ImageAnalysis support on CameraX Extensions as many OEMs' Extensions implementations don't work with ImageAnalysis well and might cause inconsistent issues. (I2d926)January 24, 2024
androidx.camera:camera-*:1.4.0-alpha04 is released. Version 1.4.0-alpha04 contains these commits.
New Features
Preview, VideoCapture and/or ImageCapture. This artifact contains OpenGL implementations of the CameraEffect API that manipulates the camera output efficiently.OverlayEffect: for drawing overlays with Android’s Canvas API. This allows the app to apply a watermark or highlight detected objects on camera outputs.DynamicRange APIs for the Preview Use Case: The dynamic range can now be set on the Preview Use Case, independently of the Video Use Case. This allows HDR dynamic ranges such as HLG10 for Preview alone. New APIs are also available in CameraInfo to query which dynamic ranges each camera supports.API Changes
ScreenFlashUiCompleter to ScreenFlashListener and moved ScreenFlashUiCompleter#getExpirationTimeMillis to expirationTimeMillis parameter of ScreenFlash#apply. (I13944)VideoCapture to be bound at the same time. (If25e3)getMirroring() to isMirroring() (I47063)ScreenFlashUiControl to ScreenFlash, ScreenFlashUiControl#applyScreenFlashUi to ScreenFlash#apply, ScreenFlashUiControl#clearScreenFlashUi to ScreenFlash#clear, and added getScreenFlashUiApplyTimeoutSeconds method instead of exposing SCREEN_FLASH_UI_APPLY_TIMEOUT_SECONDS directly. (Iccdd0)Bug Fixes
getZoomRatio incorrectly returned a decreased value when applying an increasing zoom ratio. (I4aa0d, b/317543616)ImageCapture#ScreenFlash#clear event is invoked immediately when ImageCapture is unbound or camera is closed, also fixes some bugs where it is never invoked due to captures in these scenarios not completing properly. (If99f9)takePicture request is completed (Idf017, b/306202751)December 13, 2023
androidx.camera:camera-*:1.4.0-alpha03 is released. Version 1.4.0-alpha03 contains these commits.
New Features
CameraInfo.mustPlayShutterSound to provide the information of whether a shutter sound must be played in accordance to regional restrictions. (Ifda84)OnImageCapturedCallback.onCaptureStarted and OnImageSavedCallback.onCaptureStarted for notifying when the camera has started exposing a frame. It's recommended to play the shutter sound or the shutter animation at this point. (Ic49b3)ScreenFlashUiControl interface provided to CameraX. (I8ae84)ImageCapture.ScreenFlashUiControl implementation from PreviewView or the newly added ScreenFlashView which will add a mono-color overlay view and maximize screen brightness during screen flash photo capture. (I1810e)API Changes
ImageCapture#getImageCaptureCapabilities() APIs for apps to query the capabilities of the postview and capture process progress callback. Apps can enable the postview using the ImageCapture.Builder#setPostviewEnabled(). The postview size can be selected using ImageCapture.Builder#setPostviewResolutionSelector(). When invoking takePicture(), onPostviewBitmapAvailable and onCaptureProcessProgressed can be implemented in OnImageSavedCallback or OnImageCapturedCallback to get the postview and process progress notification if supported. (I5cd88)PreviewCapabitlity in Preview UseCase. (Ie5b6c)VideoCapture. Recorder.Builder#setVideoCapabilitiesSource(int) can be used with VIDEO_CAPABILITIES_SOURCE_CODEC_CAPABILITIES to create a Recorder instance which supports more qualities than VIDEO_CAPABILITIES_SOURCE_CAMCORDER_PROFILE. A common use case is when the application strives to record UHD video whenever feasible, but the device's CamcorderProfile does not include a UHD settings, even though the codec is capable of recording UHD video. (Iedbe2, b/263961771)ImageAnalysis output format getter/setter to CameraController. (I9a96c, b/308240643)Bug Fixes
1.3.1: Improved the ProcessCameraProvider#bindToLifecycle() performance. The major change is to optimize the process of identifying the most suitable size combinations for UseCases. The optimal results vary based on the specific UseCase combinations and the number of supported output sizes for the target devices. (I454f2)VideoCapture when Extensions are enabled. (I91f32)ImageAnalysis support on Pixels to avoid the bug on Pixel that returns the non-empty ImageAnalysis supported sizes accidentally. (I7ec31)CameraUseInconsistentTimebaseQuirk. This fixes an issue on Android 12 for devices using this chipset where the audio in recordings is offset by the amount of time the device is in a suspended state. (I58010)October 18, 2023
androidx.camera:camera-*:1.4.0-alpha02 is released. Version 1.4.0-alpha02 contains these commits.
API Changes
setCameraOpenRetryMaxTimeoutInMillisWhileResuming and rename the argument. (I72370)ProcessCameraProvider.shutdownAsync as a public testing API to allow process camera provider to be used in test suites which may need to initialize CameraX in different ways in between tests. (I9eca7)OutputSize and replace it with ResolutionSelector. ResolutionSelector is a more comprehensive way to select resolutions, and it's consistent with the camera-core API. (I93abd, b/286801438)Bug Fixes
ImageAnalysis on the rear camera. (I2e8b1)VideoCapture stretched issues on Moto E5 Play. (73dce2)September 20, 2023
androidx.camera:camera-*:1.4.0-alpha01 is released. Version 1.4.0-alpha01 contains these commits.
API Changes
Bug Fixes
ImageAnalysis can't be bound together with ImageCapture and Preview when some extension modes are enabled on some devices. The fix will return correct value when apps query the ImageAnalysis availability via ExtensionsManager#isImageAnalysisSupported(). (I7d538)#setZoomRatio, #setLinearZoom and #enableTorch wait until camera is ready. Also added information about how to get the maximum FOV with the #takePicture API. (I23588)June 12, 2024
androidx.camera:camera-*:1.3.4 is released. Version 1.3.4 contains these commits.
Bug Fixes
getZoomRatio incorrectly returned a decreased value when applying an increasing zoom ratio. (I4aa0d, b/317543616)setTargetFrameRate with FRAME_RATE_RANGE_UNSPECIFIED. (I78c61)April 17, 2024
androidx.camera:camera-*:1.3.3 is released. Version 1.3.3 contains these commits.
Bug Fixes
ImageAnalysis' resolution selection issue related to the analyzer default target resolution setting: target resolution was incorrectly kept as 640x480 even if applications has set a different analyzer default resolution setting. If applications encounter this issue (1.3.0 ~ 1.3.2) and can't upgrade to use the newer version releases which contain the solution, directly setting a ResolutionSelector with the preferred resolution and a matching AspectRatioStrategy to the ImageAnalysis UseCase can workaround this issue. (I81f72, b/330091012)March 6, 2024
androidx.camera:camera-*:1.3.2 is released. Version 1.3.2 contains these commits.
Bug Fixes
ImageProxy.toBitmap() function returns correct Bitmap objects. (I8d6eb, b/309005680)December 13, 2023
androidx.camera:camera-*:1.3.1 is released. Version 1.3.1 contains these commits.
Bug Fixes
Improved the ProcessCameraProvider#bindToLifecycle() performance. The major change is to optimize the process of identifying the most suitable size combinations for UseCases. The optimal results vary based on the specific UseCase combinations and the number of supported output sizes for the target devices. (I454f2)
Here are some reference results for various scenarios:
Four UseCases: Preview + ImageCapture + ImageAnalysis + VideoCapture
Three UseCases: Preview + ImageCapture + ImageAnalysis
Added Snapdragon 480 to the CameraUseInconsistentTimebaseQuirk. This fixes an issue on Android 12 for devices using this chipset where the audio in recordings is offset by the amount of time the device is in a suspended state. (I58010)
October 18, 2023
androidx.camera:camera-*:1.3.0 is released. Version 1.3.0 contains these commits.
Important changes since 1.2.0
September 20, 2023
androidx.camera:camera-*:1.3.0-rc02 is released. Version 1.3.0-rc02 contains these commits.
Bug Fixes
ImageAnalysis can't be bound together with ImageCapture and Preview when some extension modes are enabled on some devices. The fix will return correct value when apps query the ImageAnalysis availability via ExtensionsManager#isImageAnalysisSupported(). (I7d538)August 23, 2023
androidx.camera:camera-*:1.3.0-rc01 is released. Version 1.3.0-rc01 contains these commits.
API Changes
PendingRecording.asPersistentRecording to allow a recording to continuously record while the VideoCapture it's Recorder is attached to is rebound. (I517c6)Bug Fixes
VideoCapture and Preview. Also fixed a black screen on LEGACY devices when stream sharing is enabled.July 26, 2023
androidx.camera:camera-*:1.3.0-beta02 is released. Version 1.3.0-beta02 contains these commits.
Bug Fixes
CaptureFailedRetryQuirk. (I7b589)June 21, 2023
androidx.camera:camera-*:1.3.0-beta01 is released. Version 1.3.0-beta01 contains these commits.
API Changes
ResolutionSelector.Builder#setHighResolutionEnabledFlag(int) function name to setAllowedResolutionMode and renamed the ResolutionSelector#HIGH_RESOLUTION_FLAG_OFF/ON constants to PREFER_CAPTURE_RATE_OVER_HIGHER_RESOLUTION/PREFER_HIGHER_RESOLUTION_OVER_CAPTURE_RATE. (If84e8)ImageAnalysis.setTargetRotationDegrees(int), ImageCapture.setTargetRotationDegrees(int) and VideoCapture.setTargetRotationDegrees(int). (Id8e77)DynamicRange class respresent the dynamic range of images. This can be used to select High Dynamic Range formats as the output of VideoCapture through VideoCapture.Builder#setDynamicRange(). (Ib0377)isImageAnalysisSupported API to the ExtensionsManager which apps can determine if an ImageAnalysis use case can be bound along with Preview and ImageCapture when Extensions are enabled. (I1bc63)VideoCapabilities class obtained from the Recorder can be used to query supported dynamic ranges and qualities for video recording on the device. QualitySelector's getSupportedQualities() and isQualitySupported() methods are being deprecated. Please use VideoCapabilities's getSupportedQualities() and isQualitySupported() methods instead. (I04014)CameraController#setVideoCaptureTargetQuality() is renamed to setVideoCaptureQualitySelector and takes argument QualitySelector, which provides more flexibility for video quality setup. CameraController#getVideoCaptureTargetQuality() is changed to getVideoCaptureQualitySelector accordingly. (I520ed)Bug Fixes
ImageFormat.JPEG format support for ImageProxy.toBitmap(). If the JPEG byte array cannot be decoded, an UnsupportedOperationException will be thrown. (I81958, b/282057603)May 24, 2023
androidx.camera:camera-*:1.3.0-alpha07 is released. Version 1.3.0-alpha07 contains these commits.
New Features
VideoCapture.Builder# setTargetFrameRate(Range) API allows video recordings to be captured at other frame rates besides the device default. The available frame rates for recordings can be queried through the new CameraInfo#getSupportedFrameRates() API.API Changes
ResolutionSelector#HIGH_RESOLUTION_FLAG_OFF/ON constants to ALLOWED_RESOLUTIONS_NORMAL/SLOW and renamed the builder setHighResolutionEnabledFlag function name to setAllowedResolutionMode. (Iae817)CameraInfo#getSupportedFrameRateRanges() now returns a Set rather than a List to better represent that the ranges are unordered. (I02f43)CameraEffect to handle unrecoverable errors (Ice471)ResolutionInfo for better testability (If6d1c)UseCase.snapToSurfaceRotation(int) to replace usage of setTargetRotationDegrees and deprecate API ImageAnalysis.setTargetRotationDegrees(int), ImageCapture.setTargetRotationDegrees(int) and VideoCapture.setTargetRotationDegrees(int). (Ia9010)Preview#getTargetFrameRate and Preview.Builder#setTargetFrameRate to be able to set and retrieve target frame rate for Preview use case (If4f22)VideoRecordEvent.Finalize will now complete with error code ERROR_RECORDING_GARBAGE_COLLECTED when the Recording object is stopped due to garbage collection. (Iba974)Bug Fixes
NullPointerException when the cached output sizes in StreamConfigurationMapCompat are null. (Idf124, b/282025204)Preview.setSurfaceProvider(null) doesn't pause the preview in Extensions (Ia903e)ConcurrentModificationException is thrown during camera opening when VideoCapture is bound. (Ic8ac4)April 19, 2023
androidx.camera:camera-*:1.3.0-alpha06 is released. Version 1.3.0-alpha06 contains these commits.
New Features
ResolutionSelector API which covers the following features:
VideoCapture mirroring APIs. Videos recorded by VideoCapture are not mirrored by default. However, the camera preview is mirrored on the front camera by default. VideoCapture mirroring APIs make it possible to align to the camera preview when using the front camera. There are three MirrorMode, OFF, ON and ON_FRONT_ONLY. To align to the camera preview, it is recommended to use ON_FRONT_ONLY which means that mirroring is not enabled for the rear camera but is enabled for the front camera.API Changes
ResolutionSelector API. Applications can specify aspect ratio and resolution strategies with fallback rules or a custom resolution filter to get the desired results. Applications can specify a flag to enable high resolution capture. This will allow CameraX to select higher resolutions when taking photos or videos. However, please note that using a high resolution may result in slower capture times. (Ibed95)CameraInfo#getSupportedFrameRateRanges(). (Iaa67f)VideoCapture#getTargetFrameRate() (I83304)setTargetAspectRatio and setTargetResolution API. Please use the new ResolutionSelector API instead. (I542c3)List<List<CameraInfo>> getAvailableConcurrentCameraInfos()ConcurrentCamera bindToLifecycle(@NonNull ConcurrentCameraConfig concurrentCameraConfig)boolean isConcurrentCameraModeOn()
and ConcurrentCameraConfig, SingleCameraConfig and ConcurrentCamera (Iab1c1)ImageProcessor.Response#getOutputImage NonNull (Ib9c60)VideoCapture mirroring APIs, including VideoCapture.Builder.setMirrorMode(int) and VideoCapture.getMirrorMode(). The APIs are useful for applications require the video recording to be consistent with common camera preview behavior, i.e. the rear camera preview is not mirrored but the front camera preview is mirrored. (I713b6, b/194634656)setTargetFrameRate() API in the VideoCapture.Builder and getTargetFramerate() API in VideoCapture (I109d4)SurfaceOutput extending Closable and hide SurfaceOutput.Event's public constructor. (I60ea8)Recording.mute to dynamically mute or unmute an in-processing recording. RecordingStats will contain AudioStats.AUDIO_STATE_MUTED when the in-processing recording is muted explicitly. (Ie17fc)#setEffects() parameter non-null. Add a #clearEffects() API for clearing effects. The app should call #clearEffects() to remove effects. (I4b4d9)ViewfinderSurfaceRequest.Builder to take a builder for copy constructor (I621a7)Bug Fixes
VideoCapture could not work with the front camera on some devices. For example, on Samsung Galaxy S23 and Xiaomi 2107113SG. (Ibec7e, b/270656244)requestLegacyExternalStorage to true in application tag. (I11b2c)RejectedExecutionException crash in DefaultSurfaceProcessor. The crash could happen when VideoCapture is bound and the activity is paused. (Idb46a, b/273713906)March 22, 2023
androidx.camera:camera-*:1.3.0-alpha05 is released. Version 1.3.0-alpha05 contains these commits.
API Changes
VideoCapture rotation APIs, including VideoCapture.Builder.setTargetRotation(int), VideoCapture.setTargetRotation(int), VideoCapture.setTargetRotationDegrees(int) and VideoCapture.getTargetRotation(). The APIs are useful for applications that lock the device orientation. ImageCapture.setTargetRotationDegrees(int) and ImageAnalysis.setTargetRotationDegrees(int) are also added. (Id3ffe, b/205242781)VIDEO_CAPTURE and PREVIEW|VIDEO_CAPTURE as effects target. Effects that targets VIDEO_CAPTURE will be applied to the VideoCapture UseCase; Effects that targets PREVIEW|VIDEO_CAPTURE will be applied to a shared stream before copying to Preview and VideoCapture stream. (Iee6f3)Bug Fixes
1.2.2: Fixed the issue where CameraX Extensions don't work properly when proguard is enabled on some devices such as Pixel (I90aa2)PreviewView bug that if the app handles screen orientation itself. the preview might become distorted upon rotation. This only happens on certain devices. It can be reproduced on Pixel a4, Pixel 5, and Pixel 6a. (I14340, b/223488673)February 22, 2023
androidx.camera:camera-*:1.3.0-alpha04 is released. Version 1.3.0-alpha04 contains these commits.
New Features
A new feature to support previously unsupported Surface combinations by sharing one stream to multiple UseCases.
IllegalArgumentException.API Changes
ImageProxy to Bitmap. The supported ImageProxy format is ImageFormat.YUV_420_888 and PixelFormat.RGBA_8888. If the format is invalid, IllegalArgumentException will be thrown. (Ic7110)CoroutineCameraViewfinder to support configuring viewfinder using suspending functions in Kotlin. (I657bc)ViewfinderSurfaceRequest. It provides the flexibility when user cannot provide CameraCharacteristics. (Ie6549)Bug Fixes
January 25, 2023
androidx.camera:camera-*:1.3.0-alpha03 is released. Version 1.3.0-alpha03 contains these commits.
API Changes
CameraInfo.getIntrinsicZoomRatio to provide angle of view information relative to the default camera. (Ib300c)CameraInfo.getLensFacing to provide lens facing information. Added CameraSelector#LENS_FACING_EXTERNAL as an experimental feature for selecting external cameras. (Icaf3e)#setEffect() to CameraController that allows adding effects to camera output. (I1d21f)invalidate() method to SurfaceRequest. The Surface provider can notify that the previously provided surface is no longer valid. (Idc649)ImageProcessor API. This interface is for inject post-processing effects into the ImageCapture pipeline. (I575c6)Recorder.Builder.setAspectRatio() which can be combined with QualitySelector to support more video resolutions. (I8a082)Recorder.Builder#setTargetVideoEncodingBitRate to set Target Video Encoding BitRate and Recorder#getTargetVideoEncodingBitRate to get Target Video Encoding BitRate. (I5984d)Bug Fixes
ImageCapture failed when there is no flash unit and flash mode is on. (I9e8b4, b/263391112)CameraController#enableTorch, the pending action is cached and submitted once the initialization compeltes. (I11e92, b/264157663)December 7, 2022
androidx.camera:camera-*:1.3.0-alpha02 is released. Version 1.3.0-alpha02 contains these commits.
API Changes
OutputOptions.getDurationLimit to OutputOptions.getDurationLimitMillis and OutputOptions.setDurationLimit to OutputOptions.setDurationLimitMillis. (I91f0c)AudioConfig class to handle the audio related setting while recording video. The @RequiresPermission annotation is moved from startRecording functions to AudioConfig to avoid unnecessary permission requests for the cases that audio is not needed. (I28755)OnVideoSavedCallback, OutputFileOptions and OutputFileResults classes that are no longer used after applying the new video capture API. (I38cd8)getVideoCaptureTargetSize and setVideoCaptureTargetSize methods are replaced with the getVideoCaptureTargetQuality and the setVideoCaptureTargetQuality methods accordingly, as setTargetResolution is no longer supported. (I2a1d5)Bug Fixes
core.VideoCapture API. (I531e0)onError callback is not called when taking pictures without the storage permission.(I936db, b/244807669)ViewPort is enabled on legacy devices. (I16b8a, b/251357665)November 9, 2022
androidx.camera:camera-*:1.3.0-alpha01 is released. Version 1.3.0-alpha01 contains these commits.
New Features
Camera-viewfinder has been published officially. Camera-viewfinder provides a base viewfinder widget that can display the camera feed for Camera2. Please check the sample code for an example.API Changes
OutputOptions.setDurationLimit to allow setting of video duration limit. The recording will be automatically finalized when exceeding the specified duration limit. (I902a0)AudioStats.AUDIO_STATE_SOURCE_ERROR. Sent when audio source setup fails or some error occurs. (I37410)Bug Fixes
PreviewView SurfaceView implementation black screen issue on ViewPager2. As part of the fix, PreviewView will reuse its SurfaceView if the requested resolution is not changed. (Ib3f27)ViewPort or CameraController API is used. (Ifbba8, b/201085351)May 24, 2023
androidx.camera:camera-*:1.2.3 is released. Version 1.2.3 contains these commits.
Bug Fixes
VideoCapture could not work with the front camera on some devices. For example, on Samsung Galaxy S23 and Xiaomi 2107113SG. (Ibec7e, b/270656244)March 22, 2023
androidx.camera:camera-*:1.2.2 is released. Version 1.2.2 contains these commits.
Bug Fixes
January 25, 2023
androidx.camera:camera-*:1.2.1 is released. Version 1.2.1 contains these commits.
Bug Fixes
December 7, 2022
androidx.camera:camera-*:1.2.0 is released. Version 1.2.0 contains these commits.
Important changes since 1.1.0
MLKitAnalyzer as new APIs.CAPTURE_MODE_ZERO_SHUTTER_LAG, the latency between the shutter button is clicked and the picture is taken is expected to be minimized, compared with other capture modes. On devices that don’t support ZERO_SHUTTER_LAG, it’ll fallback to CAPTURE_MODE_MINIMIZE_LATENCY.android.camera.core.VideoCapture.setStreamUseCase() as a public Camera2Interop API.setOutputImageRotationEnabled.ImageAnalysis.Analyzer#getTargetResolutionOverride() to ImageAnalysis.Analyzer#getDefaultTargetResolution().VideoCapture and Preview use cases with 16:9 aspect ratioPreview/VideoCapture stretched issue on API level 27 devices.October 24, 2022
androidx.camera:camera-*:1.2.0-rc01 is released. Version 1.2.0-rc01 contains these commits.
API Changes
setStreamUseCase API for OutputConfiguration. User can specify the Stream Use Case for the stream session, overrding CameraX's internal logics to choose Stream Use Case in order to optimize according to their need. (Ib1a95)Bug Fixes
Preview/VideoCapture stretched issue on API level 27 devices. Resolution 1920x1080 causes the Preview/VideoCapture images to be stretched. Added workaround to not select the 1920x1080 resolution for Preview or VideoCapture to avoid the image stretched problem. (I0e04e)VideoCapture and Preview use cases with 16:9 aspect ratio on some Huawei devices. (If8c88, b/223643510)SurfaceProvider is not set. As part of the fix, Preview with no SurfaceProvider set will now not be configured into the camera capture session. (I99681)September 21, 2022
androidx.camera:camera-*:1.2.0-beta02 is released. Version 1.2.0-beta02 contains these commits.
API Changes
setOutputImageRotationEnabled (I26e3e, b/240993561)Bug Fixes
BOKEH extension is enabled on some Samsung devices and user switches the cameras. (If6168)August 24, 2022
androidx.camera:camera-*:1.2.0-beta01 is released. Version 1.2.0-beta01 contains these commits.
New Features
camera-mlkit-vision. Easily integrate CameraX with many MLKit features, including barcode scanning, face detection, text detection, etc. Please find the sample code here.ImageAnalysis.Analyzer and MLKitAnalyzer as official APIs.ImageAnalysis.Analyzer#getTargetResolutionOverride() to ImageAnalysis.Analyzer#getDefaultTargetResolution().Bug Fixes
ExifInterface correctly parse the attributes. Capturing the images in YUV format and then compressing them to JPEG output images to workaround this issue. (I45abb)July 27, 2022
androidx.camera:camera-*:1.2.0-alpha04 is released. Version 1.2.0-alpha04 contains these commits.
API Changes
ImageAnalysis.Analyzer#getTargetResolutionOverride() to ImageAnalysis.Analyzer#getDefaultTargetResolution(). The behavior is also changed so that the value returned by this method can be overridden by the value of ImageAnalysis#setTargetResolution(). (If1d36)android.location.Location object can be set via new API androidx.camera.video.OutputOptions.Builder.setLocation(Location). (I313a0, b/204197544)Bug Fixes
Recorder when attempting to record while audio source is unavailable. (I9f652)June 29, 2022
androidx.camera:camera-*:1.2.0-alpha03 is released. Version 1.2.0-alpha03 contains these commits.
API Changes
ImageAnalysis.Analyzer and MLKitAnalyzer. (I0ff22)Bug Fixes
isFocusSuccessful false if the FocusMeteringAction is not cancelled and the AF part is not converged in the duration. (Ibc2e3)June 1, 2022
androidx.camera:camera-*:1.2.0-alpha02 is released. Version 1.2.0-alpha02 contains these commits.
New Features
API Changes
CAPTURE_MODE_ZERO_SHUTTER_LAG in ImageCapture and add isZslSupported in CameraInfo to query the device capability. CAPTURE_MODE_ZERO_SHUTTER_LAG mode is aiming to provide the minimum latency for instant capture. It is implemented based on a ring buffer, which caches intermediate capture results for later reprocessing when the user presses buttons to take pictures. If {@link VideoCapture} is bound or flash mode is not OFF or OEM Extension is ON, this mode will be disabled automatically. (I9ae74)ImageAnalysis.getBackgroundExecutor() method (Icc945)Bug Fixes
ImageCapture takePicture method turns torch off on the reported devices. (Ib5eb5, b/228272227)AssertionError not being handled when getting the CONTROL_ZOOM_RATIO_RANGE characteristic.(/Ia248a, b/231701345)May 18, 2022
androidx.camera:camera-*:1.2.0-alpha01 is released. Version 1.2.0-alpha01 contains these commits.
New Features
Bug Fixes
QualitySelector fails to record a UHD video when a fallback strategy is enabled. The issue happens when VideoCapture is bound with ImageCapture and Preview on a FULL or higher hardware level camera device. A fallback strategy of QualitySelector causes VideoCapture incorrectly to get a FHD resolution. UHD resolution is actually supported for this use case combination and should be adopted. (I0e788, b/230651237)NullPointerException on ImageCapture.takePicture(). (I92366, b/230454568, b/229766155)androidx.camera.video.Recorder (Ia8ce8)June 29, 2022
androidx.camera:camera-*:1.1.0 is released. Version 1.1.0 contains these commits.
Important changes since 1.0.0
ImageAnalysis.Builder.setOutputImageRotationEnabled and setOutputImageFormat)CameraState API that will be exposed through CameraInfo.ProcessCameraProvider.getAvailableCameraInfos() to directly retrieve information about the available camerasImageCapture#OnImageCapturedCallback when Extensions are enabled.isFocusMeteringSupported in CameraInfo which allows applications to check if the given FocusMeteringAction is supported on current camera or not.getResolutionInfo API to provide the resolution information for Preview, ImageCapture and ImageAnalysis.ImageCapture.Builder#setJpegQuality to allow changing the output JPEG image compression quality when taking pictures.CameraSelector#filter to the public API to filter a list of CameraInfos based on a CameraSelector.Camera2CameraControl.clearCaptureRequestOptions for clearing the existing capture request options.CameraController with external image processing libraries. e.g. MLKitCameraInfo#getCameraSelector() which returns a CameraSelector unique to its camera@Experimental with @RequiresOptIn to experimental APIs. For calling experimental APIs, use androidx.annotation.OptIn instead of deprecated androidx.annotation.experimental.UseExperimental.CameraXConfig.Builder#setAvailableCamerasLimiter(), CameraXConfig.Builder#setMinimumLoggingLevel(), CameraXconfig.Builder#setSchedulerHandler(), CameraXConfig#getAvailableCamerasLimiter(), CameraXConfig#getMinimumLoggingLevel(), CameraXConfig#getCameraExecutor(), CameraXConfig#getSchedulerHandler(),@ExperimentalCameraFilter APIsUseCaseGroup API for camera-core, camera-lifecycle and camera-video. Added ViewPort#getLayoutDirection, ViewPort.Builder#setLayoutDirection and ViewPort.Builder#setScaleType for customizing viewport.ExperimentalUseCaseGroupLifecycle to formal public APIs.Renamed MediaStoreOutputOptions.getCollection to MediaStoreOutputOptions.getCollectionUri.ActiveRecording has been renamed to "Recording" to reduce verbosity.QualitySelector creator API to a list-based APIBug Fixes
YuvToJpegProcessor EOFException issue when extension mode is enabled and ImageCapture#CAPTURE_MODE_MAX_QUALITY mode is set.startFocusAndMetering) when flash mode is auto or always_on in low-light environment.June 1, 2022
androidx.camera:camera-*:1.1.0-rc02 is released. Version 1.1.0-rc02 contains these commits.
Bug Fixes
NullPointerException on ImageCapture.takePicture(). (I92366, b/230454568, b/229766155)AssertionError not being handled when getting the CONTROL_ZOOM_RATIO_RANGE characteristic. (Ia248a, b/231701345)May 11, 2022
androidx.camera:camera-*:1.1.0-rc01 is released. Version 1.1.0-rc01 contains these commits.
New Features
Bug Fixes
VideoCapture<Recorder> was unbound, causing subsequent uses of VideoCapture<Recorder> to fail on recording with MediaCodec.CodecException, especially on API 21-22 devices. (Ie7f68)CameraExtensionsActivity do not be deleted in ImageCaptureTestApril 6, 2022
androidx.camera:camera-*:1.1.0-beta03 is released. Version 1.1.0-beta03 contains these commits.
API Changes
CaptureRequestOptions constructor restricted. (I261b6)CameraController with external image processing libraries. e.g. MLKit (I4ea71)Bug Fixes
PreviewView when activity is not restarted after rotating devices in multi-window. (I1ea36, b/223488673)AbstractMethodError issue happened when apps use extensions and enable proguard. (I7cbaf, b/222726805)InvalidConfigException. However, this fix only prevents app from crashing, but doesn't resolve the cause of the InvalidConfigException. If the Recorder still cannot be configured, applications will receive error callback when it starts recording. (I89c29, b/213617227)External Contribution
February 23, 2022
androidx.camera:camera-*:1.1.0-beta02 is released. Version 1.1.0-beta02 contains these commits.
API Changes
Bug Fixes
January 26, 2022
androidx.camera:camera-*:1.1.0-beta01 is released. Version 1.1.0-beta01 contains these commits.
New Features
API Changes
Camera2CameraControl.clearCaptureRequestOptions for
clearing the existing capture request options. (Ifa07d)Bug Fixes
cameraControl#startFocusAndMetering() on front lens-facing camera in Samsung devices (Ifbf59, b/210548792)December 15, 2021
androidx.camera:camera-*:1.1.0-alpha12 is released. Version 1.1.0-alpha12 contains these commits.
API Changes
@RequiresApi(21) annotations from the inner classes/interfaces. (I8e286, b/204917951)QualitySelector have been changed to be represented by class objects. For example, QualitySelector.QUALITY_HD is changed to Quality.HD, and QualitySelector.FALLBACK_STRATEGY_LOWER is changed to the instance returned by FallbackStrategy.lowerQualityOrHigherThan(Quality). The API used to create QualitySelector has been changed to a list-based API. The new API QualitySelector.fromOrderedList(List<Quality>) will refer to the order of the input quality list instead of the order created by QualitySelector.Procedure. QualitySelector.Procedure class has been removed. (I43343)PendingRecording.withEventListener() was removed and the event listener must now be passed to PendingRecording.start(). This event listener requirement is meant to encourage handling of asynchronous errors that are reported in the VideoRecordEvent.Finalize event. (I1e71d)ActiveRecording has been renamed to Recording to reduce verbosity. (I77ceb)Bug Fixes
FLASH_AUTO mode is underexposed in dark conditions on Pixel 3a and Pixel 3a XL (I13f19, b/205373142)Resolution. (I4a694)REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE. Cameras with REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE have the minimal set of capabilities that every camera device supports. Camera without REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE might be a camera to support special functionality and does not support standard color output. CameraX can't support the Preview, ImageCapture, ImageAnalysis or VideoCapture use cases for those cameras. Therefore, those cameras should be filtered out to prevent incorrect usage. (Ib8cda)CameraSelector#filter no longer throws an IllegalArgumentException when the result set is empty. (I27804)November 17, 2021
androidx.camera:camera-*:1.1.0-alpha11 is released. Version 1.1.0-alpha11 contains these commits.
API Changes
Add setOutputImageRotationEnabled API for ImageAnalysis config. User can enable rotation for YUV/RGB image buffer. The rotation degree is a relative rotation calculated based on sensor rotation and target rotation to keep image upfront.
Add setOutputImageRotationEnabled API for ImageAnalysis config. User can enable rotation for YUV/RGB image buffer. The rotation degree is a relative rotation calculated based on sensor rotation and target rotation to keep image upfront.
Add getSensorToBufferTransformMatrix API in ImageInfo. The returned matrix is a mapping from sensor coordinates to buffer coordinates, which is, from the value of CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE to (0, 0,
image.getWidth, image.getHeight). The matrix can be used to map the coordinates from one {UseCase} to another. For example, mapping coordinates of the face detected with ImageAnalysis to Preview. (I9ff1e)
Added a new API ImageCapture.Builder#setJpegQuality to allow changing the output JPEG image compression quality when taking picture. (I8dcf4)
Renamed MediaStoreOutputOptions.getCollection to MediaStoreOutputOptions.getCollectionUri. (I16639)
Bug Fixes
External Contribution
October 13, 2021
androidx.camera:camera-*:1.1.0-alpha10 is released. Version 1.1.0-alpha10 contains these commits.
New Features
androidx.camera:camera-video:1.1.0-alpha10 as the first alpha version for Video officially. There are several known issues to be fixed in the later releases.API Changes
@RequiresApi(21) annotation to all CameraX classes
and dropped minSdkVersion from AndroidManifest.xml. This will allow
camera-core to be easily integrated into applications that have a
minSdkVersion less than 21, but want to conditionally use code paths
that rely on API 21 and higher. For any application with
minSdkVersion 21 or higher, this change requires no action. (Ie7f2e, b/200599470)Bug Fixes
September 29, 2021
androidx.camera:camera-camera2:1.1.0-alpha09, androidx.camera:camera-core:1.1.0-alpha09, and androidx.camera:camera-lifecycle:1.1.0-alpha09 are released. Version 1.1.0-alpha09 contains these commits.
API Changes
Bug Fixes
MAXIMIZE_QUALITY mode. (I173a9, b/193823892)CAPTURE_MODE_MINIMIZE_LATENCY, the JPEG compression quality will be 95. If the capture mode is CAPTURE_MODE_MAXIMIZE_QUALITY, the JPEG compression quality will be 100. (Ieb37c, b/142856426)August 18, 2021
androidx.camera:camera-camera2:1.1.0-alpha08, androidx.camera:camera-core:1.1.0-alpha08, and androidx.camera:camera-lifecycle:1.1.0-alpha08 are released. Version 1.1.0-alpha08 contains these commits.
New Features
API Changes
Bug Fixes
July 21, 2021
androidx.camera:camera-camera2:1.1.0-alpha07, androidx.camera:camera-core:1.1.0-alpha07, and androidx.camera:camera-lifecycle:1.1.0-alpha07 are released. Version 1.1.0-alpha07 contains these commits.
Bug Fixes
YuvToJpegProcessor EOFException issue when extension mode is enabled and ImageCapture#CAPTURE_MODE_MAX_QUALITY mode is set. (I538bd, b/192017012)June 30, 2021
androidx.camera:camera-camera2:1.1.0-alpha06, androidx.camera:camera-core:1.1.0-alpha06, and androidx.camera:camera-lifecycle:1.1.0-alpha06 are released. Version 1.1.0-alpha06 contains these commits.
API Changes
ViewPort#getLayoutDirection, ViewPort.Builder#setLayoutDirection and ViewPort.Builder#setScaleType for customizing viewport. (I7cee8)June 2, 2021
androidx.camera:camera-camera2:1.1.0-alpha05, androidx.camera:camera-core:1.1.0-alpha05, and androidx.camera:camera-lifecycle:1.1.0-alpha05 are released. Version 1.1.0-alpha05 contains these commits.
API Changes
Camera2CameraFilter class. Suggest to select camera by
CameraFilter and retrieve CameraCharacteristics or other Camera2 related
information through Camera2CameraInfo if needed. (Ib887c)ExperimentalCameraFilter APIs are now out of experimental
stage and become formal APIs. They can be used without annotated OptIn. (I4bc94)CameraInfo#getCameraState(). (Ia86b4)CameraInfo#getCameraSelector() which returns a CameraSelector unique to its camera (I77f9f)Bug Fixes
April 21, 2021
androidx.camera:camera-camera2:1.1.0-alpha04, androidx.camera:camera-core:1.1.0-alpha04, and androidx.camera:camera-lifecycle:1.1.0-alpha04 are released. Version 1.1.0-alpha04 contains these commits.
Bug Fixes
@Experimental with @RequiresOptIn to experimental APIs. For calling experimental APIs, use androidx.annotation.OptIn instead of deprecated androidx.annotation.experimental.UseExperimental. (Iff226)March 24, 2021
androidx.camera:camera-camera2:1.1.0-alpha03, androidx.camera:camera-core:1.1.0-alpha03, and androidx.camera:camera-lifecycle:1.1.0-alpha03 are released. Version 1.1.0-alpha03 contains these commits.
Bug Fixes
ImageCapture#OnImageCapturedCallback when Extensions modes is enabled. (I0d7b1)February 24, 2021
androidx.camera:camera-camera2:1.1.0-alpha02, androidx.camera:camera-core:1.1.0-alpha02, and androidx.camera:camera-lifecycle:1.1.0-alpha02 are released. Version 1.1.0-alpha02 contains these commits.
API Changes
ProcessCameraProvider.getAvailableCameraInfos() to directly retrieve information about the available cameras, which are either all of the device's cameras, or those selected by the CameraSelector provided in CameraXConfig.Builder.setAvailableCamerasLimiter(CameraSelector). (Ieac08)Bug Fixes
ProcessCameraProvider.configureInstance(...) from
library code. (Ib8a9f)January 27, 2021
androidx.camera:camera-camera2:1.1.0-alpha01, androidx.camera:camera-core:1.1.0-alpha01, and androidx.camera:camera-lifecycle:1.1.0-alpha01 are released. Version 1.1.0-alpha01 contains these commits.
Bug Fixes
IllegalArgumentException issue that happened when all preview supported sizes are smaller than 640x480 and display size is larger than 640x480. (I2a63c, b/150506192)September 29, 2021
androidx.camera:camera-camera2:1.0.2, androidx.camera:camera-core:1.0.2, and androidx.camera:camera-lifecycle:1.0.2 are released. Version 1.0.2 contains these commits.
Bug Fixes
MAXIMIZE_QUALITY mode. (I173a9, b/193823892)July 21, 2021
androidx.camera:camera-camera2:1.0.1, androidx.camera:camera-core:1.0.1, and androidx.camera:camera-lifecycle:1.0.1 are released. Version 1.0.1 contains these commits.
Bug Fixes
Fixed the issue that the ListenableFuture returned in
setZoomRatio and setLinearZoom cannot complete on some android
11 devices (I716d7)
Fixed the issue that the camera gets stuck at closing camera state on some devices and causes black preview. (I34c99)
May 5, 2021
androidx.camera:camera-camera2:1.0.0, androidx.camera:camera-core:1.0.0, and androidx.camera:camera-lifecycle:1.0.0 are released. Version 1.0.0 contains these commits.
Major features of 1.0.0
Known Issues
April 21, 2021
androidx.camera:camera-camera2:1.0.0-rc05, androidx.camera:camera-core:1.0.0-rc05, and androidx.camera:camera-lifecycle:1.0.0-rc05 are released. Version 1.0.0-rc05 contains these commits.
Bug Fixes
March 24, 2021
androidx.camera:camera-camera2:1.0.0-rc04, androidx.camera:camera-core:1.0.0-rc04, and androidx.camera:camera-lifecycle:1.0.0-rc04 are released. Version 1.0.0-rc04 contains these commits.
Bug Fixes
February 24, 2021
androidx.camera:camera-camera2:1.0.0-rc03, androidx.camera:camera-core:1.0.0-rc03, and androidx.camera:camera-lifecycle:1.0.0-rc03 are released. Version 1.0.0-rc03 contains these commits.
Bug Fixes
ProcessCameraProvider#getInstanceJanuary 27, 2021
androidx.camera:camera-camera2:1.0.0-rc02, androidx.camera:camera-core:1.0.0-rc02, and androidx.camera:camera-lifecycle:1.0.0-rc02 are released. Version 1.0.0-rc02 contains these commits.
Bug Fixes
Limit number of camera reopen attempts. While attempting to recover from certains issues when opening the camera, CameraX will no longer attempt to reopen the camera indefinitely, instead it will stop after retrying for 10 seconds.I435d2
Fixed IllegalArgumentException issue that happened when all preview supported sizes are smaller than 640x480 and display size is larger than 640x480. (I2a63c, b/150506192)
December 16, 2020
androidx.camera:camera-camera2:1.0.0-rc01, androidx.camera:camera-core:1.0.0-rc01, and androidx.camera:camera-lifecycle:1.0.0-rc01 are released. Version 1.0.0-rc01 contains these commits.
API Changes
CameraXConfig.Builder#setMinimumLoggingLevel() to allow setting a minimum logging level for CameraX logs. When not set, it defaults to Log#DEBUG. (Ic3245)Bug Fixes
Preview.setSurfaceProvider(null). (I3ac18)November 11, 2020
androidx.camera:camera-camera2:1.0.0-beta12, androidx.camera:camera-core:1.0.0-beta12, and androidx.camera:camera-lifecycle:1.0.0-beta12 are released. Version 1.0.0-beta12 contains these commits.
Bug Fixes
OnImageCapturedCallback#onCaptureSuccess base class
implementation no longer closes the image. This is for preventing
unexpected behavior to developers. Developers should not rely on
super.onCaptureSuccess to close the image. (Ifbf9c)October 14, 2020
androidx.camera:camera-camera2:1.0.0-beta11 is released. Version 1.0.0-beta11 contains these commits.
New Features
CONTROL_ZOOM_RATIO API for zoom on
android 11 or later devices which contains valid
CONTROL_ZOOM_RATIO_RANGE. (I62cc6)Bug Fixes
ProcessCameraProvider.bindToLifecycle(). (Ia5411)<UseCase>.getTargetRotation() will return Surface.ROTATION_0
if called before being attached to a Camera instance unless a
targetRotation has been set on the Builder or UseCase. (I80fcd)October 14, 2020
androidx.camera:camera-core:1.0.0-beta11 is released. Version 1.0.0-beta11 contains these commits.
New Features
- Supports android 11 CONTROL_ZOOM_RATIO API for zoom on
android 11 or later devices which contains valid
CONTROL_ZOOM_RATIO_RANGE. (I62cc6)
Bug Fixes
ProcessCameraProvider.bindToLifecycle(). (Ia5411)<UseCase>.getTargetRotation() will return Surface.ROTATION_0
if called before being attached to a Camera instance unless a
targetRotation has been set on the Builder or UseCase. (I80fcd)September 23, 2020
androidx.camera:camera-core:1.0.0-beta10 is released. Version 1.0.0-beta10 contains these commits.
Bug Fixes
September 23, 2020
androidx.camera:camera-camera2:1.0.0-beta10 is released. Version 1.0.0-beta10 contains these commits.
Bug Fixes
September 16, 2020
androidx.camera:camera-camera2:1.0.0-beta09 is released. Version 1.0.0-beta09 contains these commits.
API Changes
Bug Fixes
AspectRatio.RATIO_16_9. (Ib7fcf, b/151969438)InitializationException to make the app be able to gracefully handle the AssertionError happened when creating CameraCharacteristics. (I89c8c, b/160524721)September 16, 2020
androidx.camera:camera-core:1.0.0-beta09 is released. Version 1.0.0-beta09 contains these commits.
API Changes
ExposureCompensation (If96c7)TranformationInfoListener callback. (I21470)Bug Fixes
FLASH_MODE_ON to take a picture, and is changed to FLASH_MODE_OFF when the flash is fired. The symptom is like torch mode enabled. (Ib4451, b/162568128)ProcessCameraProvider.getInstance(Context).Known Issues
August 19, 2020
androidx.camera:camera-camera2:1.0.0-beta08 is released. Version 1.0.0-beta08 contains these commits.
Bug Fixes
August 19, 2020
androidx.camera:camera-core:1.0.0-beta08 is released. Version 1.0.0-beta08 contains these commits.
API Changes
DisplayOrientedMeteringPointFactory takes in a CameraInfo
instance instead of a CameraSelector so there is a direct mapping to
which Camera the factory will be generating points for. All classes
which use DisplayOrientedMeteringPointFactory also take in a CameraInfo
instance instead of CameraSelector. (I400c1)Bug Fixes
Context.getApplicationContext(). (I3d3c9, b/160817073)July 22, 2020
androidx.camera:camera-camera2:1.0.0-beta07 is released. Version 1.0.0-beta07 contains these commits.
Bug Fixes
July 22, 2020
androidx.camera:camera-core:1.0.0-beta07 is released. Version 1.0.0-beta07 contains these commits.
API Changes
FIT_CENTER, FIT_START, and FIT_END fit style with FIT. FITmeans that the returned crop rect will be the max possible sensor rect. (Ia73c3)Bug Fixes
ConcurrentModificationException exception
issue when unbinding use cases. (I371c0)June 24, 2020
androidx.camera:camera-camera2:1.0.0-beta06 is released. Version 1.0.0-beta06 contains these commits.
API Changes
Bug Fixes
CameraControl#startFocusAndMetering will fail if none of the
specified MeteringPoint can generate valid metering rectangles. (Id53ce)June 24, 2020
androidx.camera:camera-core:1.0.0-beta06 is released. Version 1.0.0-beta06 contains these commits.
API Changes
Bug Fixes
ProcessCameraProvider#configureInstance() before calling
ProcessCameraProvider#getInstance(). This allows for customization of
the CameraXConfig without requiring implementing CameraXConfig.Provider
in the app's Application class. (Ia1a8d)CameraControl#startFocusAndMetering will fail if none of the
specified MeteringPoint can generate valid metering rectangles. (Id53ce)June 10, 2020
androidx.camera:camera-camera2:1.0.0-beta05 is released. Version 1.0.0-beta05 contains these commits.
Bug Fixes
InitializationException contains a CameraUnavailableException that will be set to the ListenableFuture of the intialization result instead of crashing the application. (I9909a, b/149413835)startFocusAndMetering
on devices that CONTROL_AF_STATE is null. (Ife55e, b/157084254)June 10, 2020
androidx.camera:camera-core:1.0.0-beta05 is released. Version 1.0.0-beta05 contains these commits.
API Changes
InitializationException contains a CameraUnavailableException will be set to the ListenableFuture of the intialization result instead of crashing the application. (I9909a, b/149413835)Bug Fixes
setTargetResolution and setTargetRotation. (Iae16f)May 27, 2020
androidx.camera:camera-camera2:1.0.0-beta04 is released. Version 1.0.0-beta04 contains these commits.
Bug Fixes
Camera2Interop without causing a crash. Please note that if there are issues that arise as a result of overriding parameters. Stability and behaviour are not guaranteed when overriding parameters using Camera2Interop. (Ibe5a1, b/149103700)ImageProxy from ImageCapture was not rewound (I0c455, b/153249512)May 27, 2020
androidx.camera:camera-core:1.0.0-beta04 is released. Version 1.0.0-beta04 contains these commits.
API Changes
CameraXConfig.Builder#setSchedulerHandler() for setting the handler used internally by the CameraX camera stack. This new API along with CameraXConfig.Builder#setCameraExecutor() should allow full control over the threads being used by the CameraX camera stack. (I7bf32, b/121160431)Bug Fixes
ImageAnalysis where the ImageProxy is accessed after the ImageReaderProxy has been closed. This also makes it so that all ImageProxy received by the Analyzer must be closed before the ImageReaderProxy will be closed. (I4b299, b/145956416, b/154155377, b/156357269)CameraInfo parameter from PreviewView#createSurfaceProvider(), PreviewView now internally retrieves it from the SurfaceRequest. (If18f0, b/154652477)ImageAnalysis where multiple calls to setAnalyzer/clearAnalyzer resulted in the analyzer not receiving images to analyze. (I6169f, b/151605317, b/153514544)ImageProxy from ImageCapture was not rewound (I0c455, b/153249512)CameraManager is not always selected to use. (I4c624, b/153418028)Preview.SurfaceProvider not releasing the previously requested surface. “java.lang.IllegalStateException: Camera surface session should only fail with request cancellation” (I8e4e7, b/155936225)April 15, 2020
androidx.camera:camera-camera2:1.0.0-beta03 is released. Version 1.0.0-beta03 contains these commits.
Bug Fixes
camera-coreApril 15, 2020
androidx.camera:camera-core:1.0.0-beta03 is released. Version 1.0.0-beta03 contains these commits.
Bug Fixes
bindToLifecycle() with zero UseCases would cause a thrown exception. This prevented retrieval of a Camera without binding a UseCase.April 1, 2020
androidx.camera:camera-camera2:1.0.0-beta02 is released. Version 1.0.0-beta02 contains these commits.
Bug Fixes
ImageInfo.getRotationDegrees() from the ImageProxy produced by ImageCapture so that it matches the EXIF orientation rotational value. (Id4281, b/150802561)build.gradle is no longer required to use the default CameraX/Camera2 implementation. For cases where declaring strict dependencies is required, all CameraX dependencies can now be included in the build file. (I46e88)IllegalArgumentException issue happening on the devices where the display size is smaller than 640x480. (Ife3f2, b/150506192)bindToLifecycle so that it only modifies the UseCase if it successfully binds. Previously when calling bindToLifecycle in order to do resolution calculations the UseCase is updated. Now it no longer needs to update the UseCase to do the calculations (I78d9e)April 1, 2020
androidx.camera:camera-core:1.0.0-beta02 is released. Version 1.0.0-beta02 contains these commits.
Bug Fixes
ImageInfo.getRotationDegrees() from the ImageProxy produced by ImageCapture so that it matches the EXIF orientation rotational value. (Id4281, b/150802561)bindToLifecycle so that it only modifies the UseCase if it successfully binds. Previously when calling bindToLifecycle in order to do resolution calculations the UseCase is updated. Now it no longer needs to update the UseCase to do the calculations (I78d9e)Preview use case's capture session wasn't being updated when the preview surface changed after calling Preview.setSurfaceProvider() more than once.February 26, 2020
androidx.camera:camera-camera2:1.0.0-beta01 is released. Version 1.0.0-beta01 contains these commits.
Bug Fixes
SurfaceRequest.setSurface(Surface) to
SurfaceRequest.provideSurface(Surface), and
SurfaceRequest.setWillNotComplete() to
SurfaceRequest.willNotProvideSurface(). (I224fe)ImageCapture.setTargetRotation(). (I474ea, b/148763432)CameraXConfig provider. (I2d6c1)February 26, 2020
androidx.camera:camera-core:1.0.0-beta01 is released. Version 1.0.0-beta01 contains these commits.
API Changes
ListenableFuture on
SurfaceRequest.provideSurface() with an Executor and Callback. This
simplifies the API by no longer requiring handling of exceptions on
provideSurface() and enforces that the provideSurface() callback cannot
be cancelled. This is to prevent crashes on older devices caused by
prematurely releasing surfaces. The SurfaceRequest.Result object is now used
for tracking how a SurfaceRequest uses the provided Surface. (I7854b)SurfaceRequest.setSurface(Surface) to
SurfaceRequest.provideSurface(Surface) and
SurfaceRequest.setWillNotComplete() to
SurfaceRequest.willNotProvideSurface(). (I224fe)Bug Fixes
ImageCapture.setTargetRotation(). (I474ea, b/148763432)CameraXConfig provider. (I2d6c1)February 10, 2020
androidx.camera:camera-camera2:1.0.0-alpha10 is released. Version 1.0.0-alpha10 contains these commits.
Bug Fixes
INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY devices by ensuring Surfaces are only retained for duration of use by Camera2. (I9dac2)CONTROL_AE_TARGET_FPS_RANGE properly. (1224638)February 10, 2020
androidx.camera:camera-core:1.0.0-alpha10 is released. Version 1.0.0-alpha10 contains these commits.
API Changes
ImageCapture to allow saving images to Uri and OutputStream. Combined overloaded takePicture methods into one. Updated test app to use Uri as the canonical example. (Ia3bec)Preview.PreviewSurfaceProvider has been renamed to Preview.SurfaceProvider. SurfaceProviders no longer require developers to create their own ListenableFuture, and providing a Surface is now done through a new SurfaceRequest object. The Preview.getPreviewSurfaceProvider() method has been removed due to its potential for misuse when Preview is paired with other classes such as PreviewView. (I20105)getTargetRotation() and getTargetName() to Preview. (Iceee7)getTargetRotation(), getBackpressureStrategy(), and getImageQueueDepth() in ImageAnalysis. (I9d6d9)getTargetRotation() and getCaptureMode() in ImageCapture() (I5bc17)ImageCapture.OnImageSavedCallback.onError() and ImageCapture.OnImageCapturedCallback.onError() have now been replaced by a single argument ImageCaptureException, which still contains all the information that was previously passed.ImageCapture.OnImageSavedCallback.onImageSaved() has been removed. (I750d2)Preview and ImageCapture classes are now marked final. (I2500b)getZoomRatio(), getMaxZoomRatio(),
getMinZoomRatio(), and getLinearZoom() methods of CameraInfo merging
into getZoomState() which returns a ZoomState instance. (Ib19fe)OPTION_TARGET_CLASS and OPTION_TARGET_NAME
from CameraXConfig as they are intended for internal library use only.
Removed constructor for CameraXConfig.Builder. (I96912)Application in order
to initialize CameraX. CameraX will now be initialized with a default
Camera2 configuration as long as the camera-camera2 artifact is included
in the application's build.gradle. (I58ff5) (b/146923574)January 22, 2020
androidx.camera:camera-camera2:1.0.0-alpha09 is released. Version 1.0.0-alpha09 contains these commits.
API changes
Add camera2 interop path for extracting a Camera2 camera ID. You can extract
the camera ID from CameraInfo using Camera2CameraInfo.extractCameraId().
The following code sample shows how to use this:
Camera camera = provider.bindToLifecycle(...);
String cameraId =
Camera2CameraInfo.extractCameraId(camera.getCameraInfo());
The Camera2CameraInfo class requires the ExperimentalCamera2Interop
markerClass.
January 22, 2020
androidx.camera:camera-core:1.0.0-alpha09 is released. Version 1.0.0-alpha09 contains these commits.
API changes
SurfaceOrientedMeteringPointFactory parameter useCaseForSurface was
renamed to useCaseForAspectRatio and the reference documentation was
expanded.FocusMeteringAction.Builder.from() methods are replaced by the constructors
FocusMeteringAction.Builder().DisplayOrientedMeteringPointFactory(android.content.Context, androidx.camera.core.CameraSelector, float, float).
Applications should use the constructor that takes a Display parameter and
pass in the current display.MeteringMode and
3A Flags, and usage of Display parameter.setZoomRatio and setLinearZoom.Bug fixes
ConcurrentModificationException that could occur when using torch
and zoom APIs.startFocusMetering and cancelFocusMetering APIs now behave as documented,
with correct timing and potentially returning errors when they occur.December 18, 2019
androidx.camera:camera-camera2:1.0.0-alpha08 is released. Version 1.0.0-alpha08 contains these commits.
Known Issues
09-09 14:04:13.643 10117 26020 26036 E AndroidRuntime: java.lang.IllegalArgumentException: Unsupported session configuration combinationBug Fixes
API Changes
December 18, 2019
androidx.camera:camera-core:1.0.0-alpha08 is released. Version 1.0.0-alpha08 contains these commits.
Known Issues
PreviewView or CameraView may have the wrong aspect ratio preview. This happens after pause or resume on some FULL devices, such as the Pixel2.Bug Fixes
FocusMeteringAction and CameraControl.TorchControl for enableTorch() and getTorchState().API Changes
rotationDegrees from class OnImageCaptureCallback to ImageInfo.rotationDegrees from class Analyzer to ImageInfo.December 4, 2019
androidx.camera:camera-camera2:1.0.0-alpha07 is released. Version 1.0.0-alpha07 of camera-camera2 contains these commits
Camera2Config is now available for use with initializing and configuring a Camera2-based implementation for CameraX. More details on how to use this in initialization are in the camera-core section of the release notes.androidx.camera.camera2.interop.December 4, 2019
androidx.camera:camera-core:1.0.0-alpha07 is released. Version 1.0.0-alpha07 of camera-core contains these commits
Note that there are some substantial changes in this Alpha release as we prepare for Beta. We recommend you review the changes and share any feedback you may have on the CameraX Google group. For those developers using CameraX in apps that are on the Play store, we recommend waiting for the formal Beta release before upgrading the library within your applications.
API changes
Important: CameraX initialization has changed. Applications should implement CameraXConfig.Provider, and use the default Camera2Config provided by androidx.camera.camera2. A typical usage is:
import androidx.camera.camera2.Camera2Config
import androidx.camera.core.CameraXConfig
public class MyCameraXApplication : Application(), CameraXConfig.Provider {
override fun getCameraXConfig(): CameraXConfig {
return Camera2Config.defaultConfig(this)
}
}
The CameraX class has been removed. The bindToLifecycle(), unbind(), unbindAll(), isBound(), and hasCamera() previously provided by the CameraX class call are now available via the ProcessCameraProvider.
A per-process instance of ProcessCameraProvider is obtained asynchronously using the static method ProcessCameraProvider.getInstance(), which returns a listenable future, which provides the ProcessCameraProvider on completion.
Here it is shown in onCreate() for a typical usage. You can place calls to getInstance() later in the activity’s lifecycle to defer initialization latency to a later time (such as when a user action opens a camera UI).
import androidx.camera.lifecycle.ProcessCameraProvider
import com.google.common.util.concurrent.ListenableFuture
class MainActivity : AppCompatActivity() {
private lateinit var cameraProviderFuture : ListenableFuture<ProcessCameraProvider>
override fun onCreate(savedInstanceState: Bundle?) {
cameraProviderFuture = ProcessCameraProvider.getInstance(this);
}
A listener can be added to the ListenableFuture returned by getInstance(). This ensures the camera provider can be retrieved from the Future without blocking on Future.get()
cameraProviderFuture.addListener(Runnable {
val cameraProvider = cameraProviderFuture.get()
cameraProvider.bindToLifecycle(...)
}, ContextCompat.getMainExecutor(this))
Camera selection is now done by a camera selector, instead of per-use case
val cameraSelector = CameraSelector.Builder().requireLensFacing(LensFacing.BACK).build()
CameraProvider.bindToLifecycle is given the lifecycle owner, the camera selector, and use cases, which are then bound to the given lifecycle owner and run for the selected camera.
cameraProvider.bindToLifecycle(this as LifecycleOwner,
cameraSelector, preview, imageAnalysis)
Use case “Config” classes are removed. Instead, build use cases directly, setting options on each use case builder. For example:
preview = Preview.Builder().setTargetAspectRatio(AspectRatio.RATIO_16_9).build()
The Preview use case has been updated to accept a surface created and managed by the application to ensure Android best practices. It is highly recommended to use the PreviewView view class provided in the camera-view package.
preview.setPreviewSurfaceProvider(previewView.previewSurfaceProvider)
See documentation for attaching an app-managed surface. In these cases the app manages the lifecycle of the surface.
Important: The ImageAnalysis Analyzer method implementation must call image.close() on received images when finished using them. Otherwise, new images may not be received or the camera may stall, depending on back pressure setting. Refer to the reference docs for details.
ImageAnalysis ImageReaderMode is now changed to a backpressure strategy intdef.
ImageProxy.getImage() is marked as experimental. Applications should annotate usage for example via @androidx.camera.core.ExperimentalGetImage
The UIThread annotation requirement for the Analyzer has been removed.
The ImageAnalysis.clearAnalyzer() function is added for removing an analyzer.
Listeners with more than 1 method have been renamed to Callback:
ImageCapture.OnImageCapturedListener is now ImageCapture.OnImageCapturedCallbackImageCapture.OnImageSavedListener is now ImageCapture.OnImageSavedCallbackVideoCapture.OnVideoSavedListener is now VideoCapture.OnVideoSavedCallbackEnums have changed to IntDef
Zoom controls have been added:
CameraControl.setLinearZoom()CameraControl.setZoomRatio()CameraInfo.getLinearZoom()CameraInfo.getMaxZoomRatio()CameraInfo.getZoomRatio()CameraInfo.hasFlashUnit() is added to determine if flash/torch hardware is present.
CameraInfo.isFlashAvailable() has been removed. Torch overrides flash functionality. More detail is included in the reference documentation.
ImageCapture.Metadata fields are replaced by get/set/is accessors.
startFocusMetering and cancelFocusMetering now return ListenableFutures which represent the asynchronous operation of the call.
MeteringPoints are now functioning as handles to metering actions, and are produced by factories. Apps should use the existing factories rather than custom factories.
Fixed issues
CameraControl.enableTorch() is functional but the returned ListenableFuture<Void> is always an immediate complete(success) future, even if there is no flash unit. Future versions will fix this to the final behavior: When there is no flash unit, enableTorch(true) fails immediately (won't send request to CaptureSession), and TorchState remain Off.startFocusAndMetering and cancelFocusAndMetering start and cancel focus metering, but return an immediately completed (success) future not representing the documented behavior. The FocusMeteringResult from ListenableFuture<FocusMeteringResult> CameraControl.startFocusAndMetering() is a fake result which isFocusSuccessful() and is always "false," differing from intended, documented behavior.PreviewView touch events is being developed. For now, apps connecting custom managed surfaces can use the existing metering point factories, and otherwise no touch focus functionality is available for PreviewView.October 9, 2019
androidx.camera:camera-camera2:1.0.0-alpha06 and androidx.camera:camera-core:1.0.0-alpha06 are released. These are the commits included in camera-camera2:1.0.0-alpha06 and these are the commits included in camera-core:1.0.0-alpha06.
New features
Changes to setting aspect ratios:
setTargetAspectRatioMode() was added and accepts an enum argument. This sets the Aspect Ratio Mode with options RATIO_4_3 or RATIO_16_9 instead of an arbitrary aspect ratio. This closer reflects the fact that only certain aspect ratios are provided from the camera, rather than any arbitrary ratio.
getTargetAspectRatio() was added to use case config APIs, returning the aspect ratio the use case output is targeted for.setTargetAspectRatio(Rational aspectRatio) has been changed for ImageCapture to setTargetAspectRatioCustom(Rational aspectRatio). When set, the ImageCapture output crops accordingly.Executor APIs
Preview.setOnPreviewOutputUpdateListener() API. If the executor is not present for that function, it executes on the main thread.Preview.setOnPreviewOutputUpdateListenerFocusMeteringAction.Builder.setAutoFocusCallbackImageAnalysis.setAnalyzerImageCapture.takePictureCameraView.takePictureCameraView.startRecordingVideoCapture.startRecordingCameraInfo added with check Flash Available and Sensor Rotation APIs
Added CameraInfo and a getCameraInfo method, which allows apps to check if a lens facing CameraInfo is available and if a flash is available on that camera. For example:
try {
CameraInfo cameraInfo = CameraX.getCameraInfo(currentCameraLensFacing);
LiveData<Boolean> isFlashAvailable = cameraInfo.isFlashAvailable();
flashToggle.setVisibility(isFlashAvailable.getValue() ? View.VISIBLE : View.INVISIBLE);
} catch (CameraInfoUnavailableException e) {
Log.w(TAG, "Cannot get flash available information", e);
flashToggle.setVisibility(View.VISIBLE);
}
CameraInfo.getSensorRotationDegrees() was added. It provides the camera sensor orientation relative to the device’s natural orientation, or for convenience, relative to an orientation described by a Surface rotation (which describes an orientation relative to natural orientation).
API changes and bug fixes
setTargetResolution() or setTargetAspectRatio(). Calling both on the same builder returns an error.
setTargetAspectRatio() based on the application’s UI design. Specific resolutions are based on the use case. For example, preview is near screen resolutions and image capture provides high resolution stills. See the automatic resolutions table for more information.setTargetResolution() for more specific cases, such as when minimum (to save computation) or maximum resolutions (for processing details) are required.setCallbackHandler() call from use case configuration APIs. Instead, applications can set the executor as a parameter in various other APIs that set a callback.java.lang.IllegalStateException at Camera$StateCallback.onError to be thrown when opening the camera.java.lang.IllegalArgumentException: CaptureRequest contains unconfigured Input/Output Surface!java.lang.IllegalStateException: maxImages (4) has already been acquired, call #close before acquiring more.September 5, 2019
androidx.camera:camera-camera2:1.0.0-alpha05 and androidx.camera:camera-core:1.0.0-alpha05 are released. These are the commits included in camera-camera2:1.0.0-alpha05 and these are the commits included camera-core:1.0.0-alpha05.
API Change: Renamed use case error variables:
ImageCapture.UseCaseError is renamed ImageCapture.ImageCaptureErrorVideoCapture.UseCaseError is renamed VideoCapture.VideoCaptureErrorAdded CameraControl API w/Tap-to-Focus APIs
Added API to get a CameraControl from CameraX for a camera, selected by lens facing:
CameraX.getCameraControl(LensFacing lensFacing)
Added MeteringPointFactory, MeteringPoint, MeteringMode, and FocusMeteringAction to run Tap-to-Focus:
MeteringPointFactory factory = new SensorOrientedMeteringPointFactory(width, height);
MeteringPoint point = factory.createPoint(x, y);
FocusMeteringAction action = FocusMeteringAction.Builder.from(point,
MeteringMode.AF_ONLY)
.addPoint(point2, MeteringMode.AE_ONLY) // could have many
.setAutoFocusCallback(new OnAutoFocusListener(){
public void onFocusCompleted(boolean isSuccess) {
}
})
// auto calling cancelFocusAndMetering in 5 sec.
.setAutoCancelDuration(5, TimeUnit.Second)
.build();
Added API for CameraControl to start and cancel focus metering:
getCameraControl(lensFacing).startFocusAndMetering(action);
getCameraControl(lensFacing).cancelFocusAndMetering();
Added APIs for Metering Point Factories that assist translating tap coordinates to sensor coordinates, based on view classes:
MeteringPointFactory factory = new TextureViewMeteringPointFactory(textureView);
MeteringPointFactory factory = new DisplayOrientedMeteringPointFactory(context, lensFacing, viewWidth, viewHeight);
Enforce calling the following methods on the Main (UI) thread, throwing an
IllegalStateException when they are not. Future versions will allow usage on
other threads and ensure serialization.
CameraX.bindToLifecycle()CameraX.unbind()CameraX.unbindAll()ImageAnalysis.setAnalyzer()ImageAnalysis.getAnalyzer()ImageAnalysis.removeAnalyzer()Preview.removePreviewOutputListener()Preview.getOnPreviewOutputUpdateListener()Preview.setOnPreviewOutputUpdateListener()Various config settings now accept null parameters and corresponding getters may return null.
Fixed issue when testing on emulators that do not support AF/AE/AWB settings.
Fixed crash bug on rotation while analyzing image.
Fixed bug where preview appears black on start (no camera data), after rotation or switching between front and back cameras.
Removed testing for multiple concurrent image analysis use cases. To ensure compatibility, applications should only attach a single image analysis use case.
Added initial robolectric tests for fake camera in camera-testing suite (WIP).
Camera2Inititalizer test removed, as its coverage was unclear/misleading.
August 7, 2019
androidx.camera:camera-camera2:1.0.0-alpha04 and androidx.camera:camera-core:1.0.0-alpha04 are released. Version 1.0.0-alpha04 contains these commits.
New Features
Changes to Aspect Ratio and Resolution selection
CameraX's goal is to successfully initialize a camera session. This means CameraX compromises on resolution/aspect ratios based on device capability, in order to start a capture session as its first goal, and so exact requests may not be honored. This may be due to:
CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAPAlthough CameraX creates and manages the session, you should always check the returned image sizes on the use case output in your code and adjust accordingly.
Some changes have been made for setting resolutions and aspect ratios, intended to make the API more clear:
setTargetAspectRatio or setTargetResolution calls)ImageAnalysis Non-Blocking Mode
ImageReaderMode.ACQUIRE_LATEST_IMAGE is now non-blocking. It acquires the latest image in the queue, but discards unused images continuously to allow the camera pipeline to avoid blocking.Bug Fixes
java.lang.IllegalStateException: maxImages (2) has already been acquiredsetLensFacing was not called for a use case, resulting in java.lang.IllegalArgumentException: Unable to get camera ID for use case.checkAndUpdateEglState: invalid current EGLDisplayJuly 2, 2019
androidx.camera:camera-core:1.0.0-alpha03 and androidx.camera:camera-camera2:1.0.0-alpha03 are released. Version 1.0.0-alpha03 contains these commits.
API Changes
Camera-Core
Extensions
June 5, 2019
androidx.camera:camera-core:1.0.0-alpha02 and androidx.camera:camera-camera2:1.0.0-alpha02 are released. Version 1.0.0-alpha02 contains these commits.
Bug fixes
May 7, 2019
androidx.camera:camera-core:1.0.0-alpha01 and
androidx.camera:camera-camera2:1.0.0-alpha01 are released. Version 1.0.0-alpha01 contains these commits.
October 14, 2020
androidx.camera:camera-lifecycle:1.0.0-beta11 is released. Version 1.0.0-beta11 contains these commits.
Bug Fixes
<UseCase>.getTargetRotation() will return Surface.ROTATION_0
if called before being attached to a Camera instance unless a
targetRotation has been set on the Builder or UseCase. (I80fcd)September 23, 2020
androidx.camera:camera-lifecycle:1.0.0-beta10 is released. Version 1.0.0-beta10 contains these commits.
Bug Fixes
September 16, 2020
androidx.camera:camera-lifecycle:1.0.0-beta09 is released. Version 1.0.0-beta09 contains these commits.
August 19, 2020
androidx.camera:camera-lifecycle:1.0.0-beta08 is released. Version 1.0.0-beta08 contains these commits.
Bug Fixes
Context.getApplicationContext(). (I3d3c9, b/160817073)July 22, 2020
androidx.camera:camera-lifecycle:1.0.0-beta07 is released. Version 1.0.0-beta07 contains these commits.
June 24, 2020
androidx.camera:camera-lifecycle:1.0.0-beta06 is released. Version 1.0.0-beta06 contains these commits.
API Changes
June 10, 2020
androidx.camera:camera-lifecycle:1.0.0-beta05 is released. Version 1.0.0-beta05 contains these commits.
Bug Fixes
InitializationException contains a CameraUnavailableException will be set to the ListenableFuture of the intialization result instead of crashing the application. (I9909a, b/149413835)May 27, 2020
androidx.camera:camera-lifecycle:1.0.0-beta04 is released. Version 1.0.0-beta04 contains these commits.
April 15, 2020
androidx.camera:camera-lifecycle:1.0.0-beta03 is released. Version 1.0.0-beta03 contains these commits.
Bug Fixes
bindToLifecycle() with zero UseCases would cause a thrown exception. This prevented retrieval of a Camera without binding a UseCase.camera-coreFebruary 26, 2020
androidx.camera:camera-lifecycle:1.0.0-beta01 is released. Version 1.0.0-beta01 contains these commits.
Bug Fixes
ProcessCameraProvider during initialization, a default configuration is
used and that extending Application is optional. (I5e395)April 1, 2020
androidx.camera:camera-lifecycle:1.0.0-beta02 is released. Version 1.0.0-beta02 contains these commits.
Bug Fixes
camera-camera2:1.0.0-beta02 and camera-core:1.0.0-beta02 artifacts.February 10, 2020
androidx.camera:camera-lifecycle:1.0.0-alpha10 is released. Version 1.0.0-alpha10 contains these commits.
API Changes
@MainThread annotation to BindToLifecycle, unbind and unbindAll methods. (I990d2)January 22, 2020
androidx.camera:camera-lifecycle:1.0.0-alpha03 is released. Version 1.0.0-alpha03 contains these commits.
Updates
December 18, 2019
androidx.camera:camera-lifecycle:1.0.0-alpha02 is released. Version 1.0.0-alpha02 contains these commits.
Dependency changes
androidx.camera:camera-core:1.0.0-alpha08.December 4, 2019
androidx.camera:camera-lifecycle:1.0.0-alpha01 is released. Version 1.0.0-alpha01 of camera-lifecycle contains these commits
API notes
LifeCycleCameraProvider interface, and an implementation called ProcessCameraProvider which provides many of the functions of the previous CameraX class in core and is obtained via a getInstance() method.ProcessCameraProvider.December 15, 2021
androidx.camera:camera-extensions:1.0.0-alpha32 and androidx.camera:camera-view:1.0.0-alpha32 are released. Version 1.0.0-alpha32 contains these commits.
API Changes
@RequiresApi(21) annotations from the inner classes/interfaces. (I8e286, b/204917951)Bug Fixes
VideoCapture. CameraX Extensions only support ImageCapture and Preview. The VideoCapture can't be supported yet. If the app binds VideoCapture and enables any extension mode, an IllegalArgumentException will be thrown. (I0d87b)CameraSelector#filter no longer throws an IllegalArgumentException when the result set is empty. (I27804)ExtensionsManager#getInstance API as getInstanceAsync because it returns ListenableFuture. The Async suffix of the function name can clearly present that it is an async function. (I279d2)ExtensionsManager#getEstimatedCaptureLatencyRange API since users can't know which sizes are supported for the ImageCapture use case and can't distinguish whether the returned latency information is for the maximum capture output size or the input resolution parameter. (I74bb2)CameraProvider parameter of ExtensionsManager functions to the getInstance() API. So that the users don't need to input the CameraProvider parameter each time when calling the ExtensionsManager functions. (Ic7e48)November 17, 2021
androidx.camera:camera-extensions:1.0.0-alpha31 and androidx.camera:camera-view:1.0.0-alpha31 are released. Version 1.0.0-alpha31 contains these commits.
API Changes
Bug Fixes
October 13, 2021
androidx.camera:camera-extensions:1.0.0-alpha30 and androidx.camera:camera-view:1.0.0-alpha30 are released. Version 1.0.0-alpha30 contains these commits.
API Changes
Bug Fixes
September 29, 2021
androidx.camera:camera-extensions:1.0.0-alpha29 and androidx.camera:camera-view:1.0.0-alpha29 are released. Version 1.0.0-alpha29 contains these commits.
API Changes
RotationProvider#removeAllListeners(). Please use RotationProvider#removeListener(...) instead. (Id9d4a)Bug Fixes
August 18, 2021
androidx.camera:camera-extensions:1.0.0-alpha28 and androidx.camera:camera-view:1.0.0-alpha28 are released. Version 1.0.0-alpha28 contains these commits.
API Changes
Bug Fixes
<EffectName><UseCase>Extender classes, ExtensionsErrorListener and related ExtensionsManager APIs. (I3b8c3)July 21, 2021
androidx.camera:camera-extensions:1.0.0-alpha27 and androidx.camera:camera-view:1.0.0-alpha27 are released. Version 1.0.0-alpha27 contains these commits.
API Changes
CoordinateTransform#getTransform to CoordinateTransform#transform and update JavaDoc (I864ae)Bug Fixes
PreviewView PERFORMANCE mode stretch issue when using it together with Compose UI. (Ie1137, b/183864890)June 30, 2021
androidx.camera:camera-extensions:1.0.0-alpha26 and androidx.camera:camera-view:1.0.0-alpha26 are released. Version 1.0.0-alpha26 contains these commits.
API Changes
CameraController#getTapToFocusState() that exposes the latest tap-to-focus result. (Iaccb0)<EffectName><UseCase>Extender classes and related APIs. (I329e6)June 2, 2021
androidx.camera:camera-extensions:1.0.0-alpha25 and androidx.camera:camera-view:1.0.0-alpha25 are released. Version 1.0.0-alpha25 contains these commits.
API Changes
CameraView. CameraView has been replaced by CameraController. Please see the migration guide for how to migrate.: (Id5005)Bug Fixes
ExperimentalUseCaseGroupLifecycle with
ExperimentalUseCaseGroup. (I3b2ef, b/159033688)April 21, 2021
androidx.camera:camera-extensions:1.0.0-alpha24 and androidx.camera:camera-view:1.0.0-alpha24 are released. Version 1.0.0-alpha24 contains these commits.
Bug Fixes
@Experimental with @RequiresOptIn to experimental APIs. For calling experimental APIs, use androidx.annotation.OptIn instead of deprecated androidx.annotation.experimental.UseExperimental. (Iff226)March 24, 2021
androidx.camera:camera-extensions:1.0.0-alpha23 and androidx.camera:camera-view:1.0.0-alpha23 are released. Version 1.0.0-alpha23 contains these commits.
API Changes
LifecycleCameraController instead. See the migration guide (Idac2c)Bug Fixes
February 24, 2021
androidx.camera:camera-extensions:1.0.0-alpha22 and androidx.camera:camera-view:1.0.0-alpha22 are released. Version 1.0.0-alpha22 contains these commits.
API Changes
Bug Fixes
January 27, 2021
androidx.camera:camera-extensions:1.0.0-alpha21 and androidx.camera:camera-view:1.0.0-alpha21 are released. Version 1.0.0-alpha21 contains these commits.
Releasing to support other camera library artifacts.
December 16, 2020
androidx.camera:camera-extensions:1.0.0-alpha20 and androidx.camera:camera-view:1.0.0-alpha20 are released. Version 1.0.0-alpha20 contains these commits.
Releasing to support other camera library artifacts.
November 11, 2020
androidx.camera:camera-extensions:1.0.0-alpha19 and androidx.camera:camera-view:1.0.0-alpha19 are released. Version 1.0.0-alpha19 contains these commits.
Bug Fixes
@ExperimentalVideo annotation was introduced to camera-view.
This annotation marks APIs which expose experimental video functionality
which is subject to change as the features are fully developed. Any
method using these APIs should use the @UseExperimental annotation
with ExperimentalVideo as the markerClass. (I6d729)October 14, 2020
androidx.camera:camera-extensions:1.0.0-alpha18 is released. Version 1.0.0-alpha18 contains these commits.
Bug Fixes
<UseCase>.getTargetRotation() will return Surface.ROTATION_0
if called before being attached to a Camera instance unless a
targetRotation has been set on the Builder or UseCase. (I80fcd)October 14, 2020
androidx.camera:camera-view:1.0.0-alpha18 is released. Version 1.0.0-alpha18 contains these commits.
Releasing to support other camera library artifacts.
September 23, 2020
androidx.camera:camera-extensions:1.0.0-alpha17 is released. Version 1.0.0-alpha17 contains these commits.
Bug Fixes
September 23, 2020
androidx.camera:camera-view:1.0.0-alpha17 is released. Version 1.0.0-alpha17 contains these commits.
Bug Fixes
September 16, 2020
androidx.camera:camera-extensions:1.0.0-alpha16 is released. Version 1.0.0-alpha16 contains these commits.
Bug Fixes
ExtensionsManager to get an Extensions object
which is used to enable and query extensions on Camera instances (I4fb7e)September 16, 2020
androidx.camera:camera-view:1.0.0-alpha16 is released. Version 1.0.0-alpha16 contains these commits.
API Changes
PreviewView#setDeviceRotationForRemoteDisplayMode() and PreviewView#getDeviceRotationForRemoteDisplayMode(). The two methods are for customizing preview rotation, when desired rotation is not display rotation, e.g. remote display. To handle the non-display preview rotation now, set the desired rotation with Preview#setTargetRotation() and the newly added PreviewView#getViewPort(targetRotation). (Ib62cc)createSurfaceProvider() to getSurfaceProvider(). The method will always return the same instance of Preview.SurfaceProvider. (Iff83c)Bug Fixes
TranformationInfoListener callback. (I21470)Known Issues
OnClickListener#onClick() is not invoked when the end user clicks PreviewView. The touch event is mistakenly consumed by PreviewView#onTouchEvent(). The issue will be fixed in the next release.PreviewView#getMeteringPointFactory() may be wrong if ViewPort is used with PreviewView.August 19, 2020
androidx.camera:camera-extensions:1.0.0-alpha15 is released. Version 1.0.0-alpha15 contains these commits.
Bug Fixes
ExtensionsManager.init() method now takes in a
Context as a parameter instead of having 0 args. (Ife754)Initialization should no longer crash when using a Context
that does not return an Application object from Context.getApplicationContext(). (I3d3c9, b/160817073)
August 19, 2020
androidx.camera:camera-view:1.0.0-alpha15 is released. Version 1.0.0-alpha15 contains these commits.
Bug Fixes
DisplayOrientedMeteringPointFactory takes in a CameraInfo
instance instead of a CameraSelector so there is a direct mapping to
which Camera the factory will be generating points for. All classes
which use DisplayOrientedMeteringPointFactory also take in a CameraInfo
instance instead of CameraSelector. (I400c1)TextureViewMeteringPointFactory. PreviewView provides a public API (createMeteringPointFactory()) to create a metering point factory regardless of whether it's using a TextureView or SurfaceView. (Ide693)SURFACE_VIEW/TEXTURE_VIEW implementation modes to PERFORMANCE/COMPATIBLE. PERFORMANCE is the old SURFACE_VIEW mode, and COMPATIBLE is the old TEXTURE_VIEW mode. (I0edc2)July 22, 2020
androidx.camera:camera-extensions:1.0.0-alpha14 is released. Version 1.0.0-alpha14 contains these commits.
July 22, 2020
androidx.camera:camera-view:1.0.0-alpha14 is released. Version 1.0.0-alpha14 contains these commits.
June 24, 2020
androidx.camera:camera-extensions:1.0.0-alpha13 is released. Version 1.0.0-alpha13 contains these commits.
Bug Fixes
June 24, 2020
androidx.camera:camera-view:1.0.0-alpha13 is released. Version 1.0.0-alpha13 contains these commits.
Bug Fixes
June 10, 2020
androidx.camera:camera-extensions:1.0.0-alpha12 is released. Version 1.0.0-alpha12 contains these commits.
Bug Fixes
InitializationException contains a CameraUnavailableException will be set to the ListenableFuture of the intialization result instead of crashing the application. (I9909a, b/149413835)June 10, 2020
androidx.camera:camera-view:1.0.0-alpha12 is released. Version 1.0.0-alpha12 contains these commits.
Bug Fixes
PreviewView#getBitmap() API which returns a Bitmap representation of the content displayed on the preview surface. (I9b500, b/157659818)May 27, 2020
androidx.camera:camera-extensions:1.0.0-alpha11 is released. Version 1.0.0-alpha11 contains these commits.
June 10, 2020
androidx.camera:camera-view:1.0.0-alpha12 is released. Version 1.0.0-alpha12 contains these commits.
New Features
API Changes
Bug Fixes
PreviewView#getBitmap() API which returns a Bitmap representation of the content displayed on the preview surface. (I9b500, b/157659818)May 27, 2020
androidx.camera:camera-view:1.0.0-alpha11 is released. Version 1.0.0-alpha11 contains these commits.
API Changes
PreviewView#getPreviewStreamState API which
allows apps to observe if preview is streaming or not. When
the PreviewView is in TEXTURE_VIEW mode, the STREAMING state
also guarantees the preview image is visible. (Ic0906, b/154652477)PreviewView#setDeviceRotationForRemoteDisplayMode() API to provide device rotation for transform calculations if the application is running in remote display mode. (I59b95, b/153514525)Bug Fixes
FULL/LIMITED/LEVEL_3 cameras running android 7.0 and below. Forced use ImplementationMode#TEXTURE_VIEW mode when the android version is 7.0 or below. (I83e30, b/155085307)CameraInfo parameter from PreviewView#createSurfaceProvider(), PreviewView now internally retrieves it from the SurfaceRequest. (If18f0, b/154652477)PreviewView black screen issues when swiped out Preview fragment and then swiped back in ViewPager2. Also fixed the issue when removeView(previewview) and then addView(previewView). (Iab555, b/149877652, b/147354615)CameraView#takePicture() API to allow saving images to Uri and OutputStream. Update the test app to use Uri as the canonical example. (Ia2459, b/153607583)ScaleType attribute. (I08565, b/153015659)CameraView.ScaleType has been removed. Instead, use PreviewView.ScaleType to set/get a scale type with CameraView. (Ia8974, b/153014831)PreviewView a background color by default if it doesn’t already have one. This prevents content behind it from being visible before the preview stream starts. (I09fad)April 15, 2020
androidx.camera:camera-extensions:1.0.0-alpha10 is released. Version 1.0.0-alpha10 contains these commits.
Bug Fixes
April 15, 2020
androidx.camera:camera-view:1.0.0-alpha010 is released. Version 1.0.0-alpha010 contains these commits.
Bug Fixes
PreviewView's surfaceView implementation wasn't working well on certain devices, and would cause the app to crash after resuming preview. (I5ed6b)April 1, 2020
androidx.camera:camera-extensions:1.0.0-alpha09 is released. Version 1.0.0-alpha09 contains these commits.
Bug Fixes
camera-camera2:1.0.0-beta02, camera-core:1.0.0-beta02, and camera-lifecycle:1.0.0-beta02 artifactsApril 1, 2020
androidx.camera:camera-view:1.0.0-alpha09 is released. Version 1.0.0-alpha09 contains these commits.
Known Issues
ImplementationMode.SURFACE_VIEW with PreviewView may not work well on certain devices, this is because the SurfaceView used for preview invalidates its surface when the lifecycle of the window it's in is stopped, when it restarts, the camera is reopened and may attempt to resume preview before the SurfaceView's surface is valid again. For now, you should use ImplementationMode.TEXTURE_VIEW.API Changes
PreviewView.setImplementationMode() to PreviewView.setPreferredImplementationMode().PreviewView.getImplementationMode() to PreviewView.getPreferredImplementationMode().PreviewView.getSurfaceProvider() by PreviewView.createSurfaceProvider(CameraInfo), which takes a nullable CameraInfo instance used to optimize preview by using ImplementationMode.SURFACE_VIEW whenever possible. If a null instance is passed, or if you set the preferred implementation mode to ImplementationMode.TEXTURE_VIEW, ImplementationMode.TEXTURE_VIEW is used internally.The following code sample shows how a preview use case used to previously be used with PreviewView.
preview.setSurfaceProvider(previewView.previewSurfaceProvider)
cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview)
Right now, you can write the following:
val camera = cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview)
previewView.preferredImplementationMode = ImplementationMode.TEXTURE_VIEW
preview.setSurfaceProvider(previewView.createSurfaceProvider(camera.cameraInfo))
The @UiThread annotation has been added to PreviewView.getSurfaceProvider(), meaning it must be called from the main thread. (I192f3)
Added PreviewView.setScaleType() which allows to set the scale type of the preview. It accepts one of the values in PreviewView.ScaleType, and defaults to PreviewView.ScaleType.FILL_CENTER.
Added PreviewView.getScaleType().
Removed support for setting the implementation mode for PreviewView in a XML layout using the implementationMode attribute.
Add createMeteringPointFactory() API to PreviewView to support converting (x, y) in PreviewView to MeteringPoint. (Ib36d7)
Bug Fixes
PreviewView's size changes. (I71101)February 26, 2020
androidx.camera:camera-extensions:1.0.0-alpha08 is released. Version 1.0.0-alpha08 contains these commits.
February 26, 2020
androidx.camera:camera-view:1.0.0-alpha08 is released. Version 1.0.0-alpha08 contains these commits.
Bug Fixes
ListenableFuture on
SurfaceRequest.provideSurface() with an Executor and Callback. This
simplifies the API by no longer requiring handling of exceptions on
provideSurface() and enforces that the provideSurface() callback cannot
be cancelled. This is to prevent crashes on older devices caused by
prematurely releasing surfaces. The SurfaceRequest.Result object is now used
for tracking how a SurfaceRequest uses the provided Surface. (I7854b)SurfaceRequest.setSurface(Surface) to
SurfaceRequest.provideSurface(Surface) and
SurfaceRequest.setWillNotComplete() to
SurfaceRequest.willNotProvideSurface(). (I224fe)CameraXConfig provider. (I2d6c1)February 10, 2020
androidx.camera:camera-extensions:1.0.0-alpha07 is released. Version 1.0.0-alpha07 contains these commits.
Bug Fixes
ImageCapture.OnImageSavedCallback.onError() and ImageCapture.OnImageCapturedCallback.onError() have now been replaced by a single argument ImageCaptureException, which still contains all the information that was previously passed.ImageCapture.OnImageSavedCallback.onImageSaved() has been removed. (I750d2)February 10, 2020
androidx.camera:camera-view:1.0.0-alpha07 is released. Version 1.0.0-alpha07 contains these commits.
API Changes
PreviewView's TextureView implementation now sets the TextureView's size to the camera sensor output size before scaling it to fill its parent PreviewView. If you want the camera preview to fill an entire part of the UI (the whole screen for instance), you should not set the PreviewView's size to a fixed value, or have it wrap its content (by using the attribute "wrap_content" for example), this may result in the camera preview only filling part of the PreviewView (if the camera sensor output size is smaller). Instead, you should set the PreviewView as big as its parent (by using the attribute "match_parent" for example). (1204869)Bug Fixes
ImageCapture to allow saving images to Uri and OutputStream. Combined overloaded takePicture methods into one. Updated test app to use Uri as the canonical example. (Ia3bec)Preview.PreviewSurfaceProvider has been renamed to Preview.SurfaceProvider. SurfaceProviders no longer require developers to create their own ListenableFuture, and providing a Surface is now done through a new SurfaceRequest object. The Preview.getPreviewSurfaceProvider() method has been removed due to its potential for misuse when Preview is paired with other classes such as PreviewView. (I20105)ImageCapture.OnImageSavedCallback.onError() and ImageCapture.OnImageCapturedCallback.onError() have now been replaced by a single argument ImageCaptureException, which still contains all the information that was previously passed.ImageCapture.OnImageSavedCallback.onImageSaved() has been removed. (I750d2)getZoomRatio(), getMaxZoomRatio(), getMinZoomRatio(), and getLinearZoom() methods of CameraInfo merging into getZoomState() which returns a ZoomState instance. (Ib19fe)January 22, 2020
androidx.camera:camera-extensions:1.0.0-alpha06 is released. Version 1.0.0-alpha06 contains these commits.
Updates
January 22, 2020
androidx.camera:camera-view:1.0.0-alpha06 is released. Version 1.0.0-alpha06 contains these commits.
Updates
December 18, 2019
androidx.camera:camera-extensions:1.0.0-alpha05 is released. Version 1.0.0-alpha05 contains these commits.
Bug Fixes
December 18, 2019
androidx.camera:camera-view:1.0.0-alpha05 is released. Version 1.0.0-alpha05 contains these commits.
Known Issues
New Features
PreviewView.TextureViewImplementation that syncs the SurfaceTexture's lifecycle with the camera's usage of the TextureView's surface.December 4, 2019
androidx.camera:camera-extensions:1.0.0-alpha04 is released. Version 1.0.0-alpha04 of camera-extensions contains these commits
API changes
Checking for the availability and enabling of an extension now takes in a CameraSelector as an input parameter. This needs to be the same CameraSelector that is used for binding the use case.
val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA
val builder = ImageCapture.Builder()
val bokehImageCaptureExtender = BokehImageCaptureExtender.create(builder)
if (bokehImageCaptureExtender.isExtensionAvailable(cameraSelector)) {
bokehImageCaptureExtender.enableExtension(cameraSelector)
}
val imageCapture = builder.build()
mCameraProvider?.bindToLifecycle(this, cameraSelector, imageCapture)
You must initialize extensions before using the extension library.
val availability = ExtensionsManager.init()
Futures.addCallback<ExtensionsManager.ExtensionsAvailability>(
availability,
object : FutureCallback<ExtensionsManager.ExtensionsAvailability> {
override fun onSuccess(availability: ExtensionsManager.ExtensionsAvailability?) {
// Ready to make extensions calls
}
override fun onFailure(throwable: Throwable) {
// Extensions could not be initialized
}
},
Executors.newSingleThreadExecutor()
)
December 4, 2019
androidx.camera:camera-view:1.0.0-alpha04 is released. Version 1.0.0-alpha04 of camera-view contains these commits
API changes
PreviewView class is provided for easily displaying the output from the Preview use case in an application.PreviewView can be included in the layout:
<androidx.camera.view.PreviewView
android:id="@+id/preview_view"
… />
PreviewView provides a PreviewSurfaceProvider to easily connect a Preview use case
preview.setPreviewSurfaceProvider(previewView.previewSurfaceProvider)
“ZoomLevel” is now “ZoomRatio” in API-naming
Some method parameters have changed nullability
October 9, 2019
androidx.camera:camera-extensions:1.0.0-alpha03 and androidx.camera:camera-view:1.0.0-alpha03 are released. These are the commits included in camera-extensions:1.0.0-alpha03 and these are the commits included in camera-view:1.0.0-alpha03.
New Features
September 5, 2019
androidx.camera:camera-extensions:1.0.0-alpha02 and
androidx.camera:camera-view:1.0.0-alpha02 are released. These are the
commits included in camera-extensions:1.0.0-alpha02
and these are the commits included
camera-view:1.0.0-alpha02.
PreviewImageProcessorImpl has correctly implemented
timestamps.ExtensionTest test failure on Nexus 5 (API level 21) and ensure preview
is available.August 7, 2019
androidx.camera:camera-extensions:1.0.0-alpha01 and
androidx.camera:camera-view:1.0.0-alpha01 are released.
These are the
commits included in camera-extensions:1.0.0-alpha01
and these are the commits included
camera-view:1.0.0-alpha01
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2026-05-06 UTC.