CameraX
This table lists all the artifacts in the androidx.camera
group.
Artifact | Current Stable Release | Next Release Candidate | Beta Release | Alpha Release |
---|---|---|---|---|
camera-camera2 | - | 1.0.0-rc04 | - | 1.1.0-alpha02 |
camera-core | - | 1.0.0-rc04 | - | - |
camera-extensions | - | - | - | 1.0.0-alpha23 |
camera-lifecycle | - | 1.0.0-rc04 | - | - |
camera-view | - | - | - | 1.0.0-alpha23 |
Device testing
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.
Declaring dependencies
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.0.0-rc04" // 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 View class implementation "androidx.camera:camera-view:1.0.0-alpha23" // If you want to additionally use the CameraX Extensions library implementation "androidx.camera:camera-extensions:1.0.0-alpha23" }
Feedback
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.
Camera-Camera2, Camera-Core, & Camera-Lifecyce Version 1.1.0
Camera Camera2, Core, & Lifecycle Version 1.1.0-alpha03
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
- Output JPEG format for
ImageCapture#OnImageCapturedCallback
when Extensions modes is enabled. (I0d7b1) - Fixed initialization failure on UMIDIGI BISON devices (I57d9e, b/180818665)
- Fixed Samsung A3 stretched preview in PreviewView. (Iacb30, b/180121821)
Camera Camera2, Core, & Lifecycle Version 1.1.0-alpha02
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
- Added an API
ProcessCameraProvider.getAvailableCameraInfos()
to directly retrieve information about the available cameras, which are either all of the device's cameras, or those selected by theCameraSelector
provided inCameraXConfig.Builder.setAvailableCamerasLimiter(CameraSelector)
. (Ieac08)
Bug Fixes
- CameraX now tries to force open a camera on the initial attempt, this may result in CameraX stealing the camera away from other camera clients when its app has a higher priority. (Iab069, b/175820568)
- Fixed the Robolectric test failure when setAvailableCamerasLimiter is used in CameraXConfig. (Ice307)
- This change catches the exception when the image queue is maxed out in ImageAnalysis. So instead of crashing, you may notice other use cases being frozen or sluggish. e.g. frozen/sluggish preview. (Ic12da, b/175851631)
- Fixed ExtensionsErrorListener to report errors when only Preview or ImageCapture is bound. (I5ae39)
- Fixed ImageCapture performance regression by removing the validation of image saved location before taking a picture. After making this change, if the save destination is invalid, it will take longer to get the failure response because it will try to save the image after the photo is taken. (I1fd4e, b/177061560)
- Fixed ImageCapture performance regression with "File" type OutputFileOptions. (I5164a, b/177061560)
- Documentation updated to recommend against using
ProcessCameraProvider.configureInstance(...)
from library code. (Ib8a9f)
Camera Camera2, Core, & Lifecycle Version 1.1.0-alpha01
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
- Workaround included for intermittent corrupt image data in JPEGs on SM-G930T back-facing camera. (I52001, b/159831206)
- Fixed
IllegalArgumentException
issue that happened when all preview supported sizes are smaller than 640x480 and display size is larger than 640x480. (I2a63c, b/150506192) - Resources in libraries with no explicitly declared public resources (ex. via public.xml) are now private by default. (Ia1dcc, b/170882230)
Camera-Camera2, Camera-Core, & Camera-Lifecyce Version 1.0.0
Camera Camera2, Core, & Lifecycle Version 1.0.0-rc04
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
- Fixed initialization failure on UMIDIGI BISON devices (I57d9e, b/180818665)
Camera Camera2, Core, & Lifecycle Version 1.0.0-rc03
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
- Fix format error in the document of
ProcessCameraProvider#getInstance
- Fixed the Robolectric test failure when setAvailableCamerasLimiter is used in CameraXConfig.
- Fixed ImageCapture performance regression by removing the validation of image saved location before taking a picture. After making this change, if the save destination is invalid, it will take longer to get the failure response because it will try to save the image after the photo is taken
- This change catches the exception when the image queue is maxed out in ImageAnalysis. So instead of crash, you may notice other use cases being frozen or sluggish. e.g. frozen/sluggish preview.
- Workaround included for intermittent corrupt image data in JPEGs on SM-G930T back-facing camera. (I52001, b/159831206)
- This change catches the exception when the image queue is maxed out in ImageAnalysis. So instead of crashing, you may notice other use cases being frozen or sluggish. e.g. frozen/sluggish preview. (Ic12da, b/175851631)
- Fixed the Robolectric test failure when setAvailableCamerasLimiter is used in CameraXConfig. (Ice307)
- Fixed ImageCapture performance regression by removing the validation of image saved location before taking a picture. After making this change, if the save destination is invalid, it will take longer to get the failure response because it will try to save the image after the photo is taken. (I1fd4e, b/177061560)
- Fixed ImageCapture performance regression with "File" type OutputFileOptions. (I5164a, b/177061560)
Camera Camera2, Core, & Lifecycle Version 1.0.0-rc02
January 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
- Fixed IllegalArgumentException issue happened when all preview supported sizes are smaller than 640x480 and display size is larger than 640x480. (b/150506192)
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)
Camera Camera2, Core, & Lifecycle Version 1.0.0-rc01
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
- Changed CameraFilter and Camera2Filter to take in CameraInfo. (I6883d)
- Added experimental class Camera2CameraControl to allow interoperating with Camera2 APIs dynamically. (I45cf3)
- Renamed Camera2CameraInfo#fromCameraInfo to #from. (Ia2bd6)
- Added an experimental setAvailableCamerasLimiter API to CameraXConfig to allow apps to optimize the initialization latency by avoiding initializing unused cameras. (I6cf88)
- Added experimental method
CameraXConfig.Builder#setMinimumLoggingLevel()
to allow setting a minimum logging level for CameraX logs. When not set, it defaults toLog#DEBUG
. (Ic3245)
Bug Fixes
- Workaround included for intermittent corrupt image data in JPEGs on SM-G930V back-facing camera. (I5aca5, b/159831206)
- Fixed the issue that taking pictures doesn't receive results when flash is always/on and the environment is dark on Samsung SM-A716 devices. (If98b2, b/172036589)
- Fixed the issue that the Preview cannot be stopped by calling
Preview.setSurfaceProvider(null)
. (I3ac18) - Fixed orientation issue when capturing 4:3 images on some devices. (I0e3fb, b/171492111)
Camera Camera2, Core, & Lifecycle Version 1.0.0-beta12
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
- Disabled auto flash on Samsung A3 devices to fix the crash when taking a photo with auto flash AE mode on Samsung A3 devices. (Ia5fe3, b/157535165)
- Fixed an issue where the preview was stretched on Nexus 4 devices running Android L (API levels 21 and 22). (I4d407, b/158749159)
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)- The androidx variant of the Experimental annotation has been deprecated to provide parity with Kotlin. It has been replaced by the RequiresOptIn annotation, and the Java-facing linter has been updated to support both the new Kotlin annotation and the new androidx variant. (I52495, b/151331381)
Camera-Camera2 Version 1.0.0-beta11
October 14, 2020
androidx.camera:camera-camera2: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 validCONTROL_ZOOM_RATIO_RANGE
. (I62cc6)
Bug Fixes
- Fixed the NumberFormatException issue happened when the camera Id is a non-integer camera Id. (Ib2228)
- Improved the latency of CameraX initialization and bindToLifecycle (I61dc5)
- Creation of UseCases do not require initialization of CameraX
to complete. All implementation specific configurations are set on
UseCase once it is attached to a Camera instance which for the public
API is
ProcessCameraProvider.bindToLifecycle()
. (Ia5411) <UseCase>.getTargetRotation()
will returnSurface.ROTATION_0
if called before being attached to a Camera instance unless a targetRotation has been set on the Builder or UseCase. (I80fcd)
Camera-Core Version 1.0.0-beta11
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
- Fixed the NumberFormatException issue happened when the camera Id is a non-integer camera Id. (Ib2228)
- Creation of UseCases do not require initialization of CameraX
to complete. All implementation specific configurations are set on
UseCase once it is attached to a Camera instance which for the public
API is
ProcessCameraProvider.bindToLifecycle()
. (Ia5411) <UseCase>.getTargetRotation()
will returnSurface.ROTATION_0
if called before being attached to a Camera instance unless a targetRotation has been set on the Builder or UseCase. (I80fcd)
Camera-Core Version 1.0.0-beta10
September 23, 2020
androidx.camera:camera-core:1.0.0-beta10
is released. Version 1.0.0-beta10 contains these commits.
Bug Fixes
- Fix bug in validating file save destination for image capture (I8c565, b/167697553)
Camera-Camera2 Version 1.0.0-beta10
September 23, 2020
androidx.camera:camera-camera2:1.0.0-beta10
is released. Version 1.0.0-beta10 contains these commits.
Bug Fixes
- Release to support Camera-Core 1.0.0-beta10
Camera-Camera2 Version 1.0.0-beta09
September 16, 2020
androidx.camera:camera-camera2:1.0.0-beta09
is released. Version 1.0.0-beta09 contains these commits.
API Changes
- Instead of providing static methods, Camera2CameraInfo takes in a CameraInfo instance when created to retrieve Camera2 related information from. (I5b844)
Bug Fixes
- Fixed target aspect ratio issue on tablet devices. A 16:9 size should be selected when the target aspect ratio is set as
AspectRatio.RATIO_16_9
. (Ib7fcf, b/151969438) - Throw an
InitializationException
to make the app be able to gracefully handle the AssertionError happened when creating CameraCharacteristics. (I89c8c, b/160524721) - Added experimental interfaces for ExposureCompensation (If96c7)
Camera-Core Version 1.0.0-beta09
September 16, 2020
androidx.camera:camera-core:1.0.0-beta09
is released. Version 1.0.0-beta09 contains these commits.
API Changes
- fixed the bug where viewport is marked as non-null on UseCaseGroup. Developers should be able to create a viewport without setting a viewport. (Ie3d2e)
- Added experimental interfaces for
ExposureCompensation
(If96c7) - Allow arbitrary target rotation for Preview. The transformation info is calculated and returned to user on-the-fly via a new
TranformationInfoListener
callback. (I21470)
Bug Fixes
- Fixed the issue that flash on some devices would not turn off. It happens when the flash mode is set to
FLASH_MODE_ON
to take a picture, and is changed toFLASH_MODE_OFF
when the flash is fired. The symptom is like torch mode enabled. (Ib4451, b/162568128) - Forced PreviewView to use TextureView if extension effect is enabled and the vendor library implementation needs to do a special process on the output surface. (I0c3cc)
- Fixed the activity/fragment leak when an activity/fragment context is passed to
ProcessCameraProvider.getInstance(Context)
.
Known Issues
- When ViewPort is set, the crop rect of ImageCapture might be incorrect on devices who rotate the image buffer in HAL. This will be fixed in the next release.
Camera-Camera2 Version 1.0.0-beta08
August 19, 2020
androidx.camera:camera-camera2:1.0.0-beta08
is released. Version 1.0.0-beta08 contains these commits.
Bug Fixes
- Optimized bindToLifecycle to run quickly on the main thread. (I1d57e)
- 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)
- Fixed auto-resolution aspect ratio size grouping issue that a 16:9 mod16 size (864x480) is selected when the target resolution setting is 2016x1080 and there is another 1920x1080 16:9 size supported. (I53167, b/159363774)
- Fix the CameraControl issue where it’s unable to work by a race condition (I2279f, b/152333890, b/160714166)
Camera-Core Version 1.0.0-beta08
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 aCameraInfo
instance instead of aCameraSelector
so there is a direct mapping to which Camera the factory will be generating points for. All classes which useDisplayOrientedMeteringPointFactory
also take in aCameraInfo
instance instead ofCameraSelector
. (I400c1)
Bug Fixes
- For image capture, overwrite the flip horizontal flag in metadata based on camera direction. (I28499)
- Initialization should no longer crash when using a Context
that does not return an Application object from
Context.getApplicationContext()
. (I3d3c9, b/160817073)
Camera-Camera2 Version 1.0.0-beta07
July 22, 2020
androidx.camera:camera-camera2:1.0.0-beta07
is released. Version 1.0.0-beta07 contains these commits.
Bug Fixes
- Fixed the issue that the preview is stretched on android 5.0 legacy device. (I0c03a)
- Excluded some JPEG supported sizes that will cause WYSIWYG issue on some devices. (Ib5128)
Camera-Core Version 1.0.0-beta07
July 22, 2020
androidx.camera:camera-core:1.0.0-beta07
is released. Version 1.0.0-beta07 contains these commits.
API Changes
- Merge
FIT_CENTER
,FIT_START
, andFIT_END
fit style withFIT
.FIT
means that the returned crop rect will be the max possible sensor rect. (Ia73c3) - Preview's crop rect is configured by viewport. Only the area covered by the crop rect should be visible to end users. (I142a4)
Bug Fixes
- Fixed the issue that the preview is stretched on android 5.0 legacy device. (I0c03a)
- Fixed the
ConcurrentModificationException
exception issue when unbinding use cases. (I371c0)
Camera-Camera2 Version 1.0.0-beta06
June 24, 2020
androidx.camera:camera-camera2:1.0.0-beta06
is released. Version 1.0.0-beta06 contains these commits.
API Changes
- Added experimental interfaces for filtering cameras by camera ID and CameraCharacteristics. (I28f61)
Bug Fixes
- Fixed the issue where startFocusAndMetering fails to focus successfully on Samsung Galaxy S7. (If3be7, b/159039233)
- Fix the camera can't be closed after quit the app. (I7a7b3)
- Fix repeated camera switching breaks preview when using SurfaceView implementation of PreviewView (I920ce)
CameraControl#startFocusAndMetering
will fail if none of the specified MeteringPoint can generate valid metering rectangles. (Id53ce)
Camera-Core Version 1.0.0-beta06
June 24, 2020
androidx.camera:camera-core:1.0.0-beta06
is released. Version 1.0.0-beta06 contains these commits.
API Changes
- Added experimental interfaces for filtering cameras by camera ID and CameraCharacteristics. (I28f61)
Bug Fixes
- CameraX can now be configured with
ProcessCameraProvider#configureInstance()
before callingProcessCameraProvider#getInstance()
. This allows for customization of theCameraXConfig
without requiring implementingCameraXConfig.Provider
in the app's Application class. (Ia1a8d) CameraControl#startFocusAndMetering
will fail if none of the specified MeteringPoint can generate valid metering rectangles. (Id53ce)
Camera-Camera2 Version 1.0.0-beta05
June 10, 2020
androidx.camera:camera-camera2:1.0.0-beta05
is released. Version 1.0.0-beta05 contains these commits.
Bug Fixes
- Fix the crash on app startup when initialising CameraX while phone is in Do Not Disturb mode. An
InitializationException
contains aCameraUnavailableException
that will be set to theListenableFuture
of the intialization result instead of crashing the application. (I9909a, b/149413835) - Fixed the crash when calling
startFocusAndMetering
on devices thatCONTROL_AF_STATE
is null. (Ife55e, b/157084254)
Camera-Core Version 1.0.0-beta05
June 10, 2020
androidx.camera:camera-core:1.0.0-beta05
is released. Version 1.0.0-beta05 contains these commits.
API Changes
- Fix the crash on app startup when initialising CameraX while phone is in Do Not Disturb mode. An
InitializationException
contains aCameraUnavailableException
will be set to theListenableFuture
of the intialization result instead of crashing the application. (I9909a, b/149413835)
Bug Fixes
- Updated javadocs of
setTargetResolution
andsetTargetRotation
. (Iae16f)
Camera-Camera2 Version 1.0.0-beta04
May 27, 2020
androidx.camera:camera-camera2:1.0.0-beta04
is released. Version 1.0.0-beta04 contains these commits.
Bug Fixes
- Allowed applications to set any camera2 capture request parameters via
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) - Auto-initialization is fixed when using an app on a device that is using a pseudo-locale. (I3bef3, b/154767663)
- Converted error log related to detached use case to a debug log on Camera2CameraImpl. (I1a565, b/154422490)
- Fixed issue where image taken is too dark sometimes even though flash is fired. (I5d9fa, b/149729613)
- Fix bug where buffer in
ImageProxy
fromImageCapture
was not rewound (I0c455, b/153249512) - Fixed the issues where binding ImageCapture only: (1) Failed to take photos with MAX_QUALITY; (2) Generated bad Image quality because auto exposure does not work. (I17782, b/145326998)
- Improved reliability of re-opening camera when CameraX is disconnected by another process or codepath stealing the camera (I1fbc3, b/153714651)
Camera-Core Version 1.0.0-beta04
May 27, 2020
androidx.camera:camera-core:1.0.0-beta04
is released. Version 1.0.0-beta04 contains these commits.
API Changes
- Adds an experimental API,
CameraXConfig.Builder#setSchedulerHandler()
for setting the handler used internally by the CameraX camera stack. This new API along withCameraXConfig.Builder#setCameraExecutor()
should allow full control over the threads being used by the CameraX camera stack. (I7bf32, b/121160431)
Bug Fixes
- Fixes crash in
ImageAnalysis
where theImageProxy
is accessed after theImageReaderProxy
has been closed. This also makes it so that allImageProxy
received by theAnalyzer
must be closed before theImageReaderProxy
will be closed. (I4b299, b/145956416, b/154155377, b/156357269) - Removed the
CameraInfo
parameter fromPreviewView#createSurfaceProvider()
,PreviewView
now internally retrieves it from theSurfaceRequest
. (If18f0, b/154652477) - Auto-initialization is fixed when using an app on a device that is using a pseudo-locale. (I3bef3, b/154767663)
- Fixed issue where image taken is too dark sometimes even though flash is fired. (I5d9fa, b/149729613)
- Fix issue with
ImageAnalysis
where multiple calls to setAnalyzer/clearAnalyzer resulted in the analyzer not receiving images to analyze. (I6169f, b/151605317, b/153514544) - Fix bug where buffer in
ImageProxy
fromImageCapture
was not rewound (I0c455, b/153249512) - Fixed the issue that the first camera in the supported list from
CameraManager
is not always selected to use. (I4c624, b/153418028) - Fixed intermittent crash caused by setting
Preview.SurfaceProvider
not releasing the previously requested surface.“java.lang.IllegalStateException: Camera surface session should only fail with request cancellation”
(I8e4e7, b/155936225)
Camera-Camera2 Version 1.0.0-beta03
April 15, 2020
androidx.camera:camera-camera2:1.0.0-beta03
is released. Version 1.0.0-beta03 contains these commits.
Bug Fixes
- Fixes to support the release of
camera-core
Camera-Core Version 1.0.0-beta03
April 15, 2020
androidx.camera:camera-core:1.0.0-beta03
is released. Version 1.0.0-beta03 contains these commits.
Bug Fixes
- Fixed regression from beta03 where calling
bindToLifecycle()
with zeroUseCase
s would cause a thrown exception. This prevented retrieval of aCamera
without binding aUseCase
.
Camera-Camera2 Version 1.0.0-beta02
April 1, 2020
androidx.camera:camera-camera2:1.0.0-beta02
is released. Version 1.0.0-beta02 contains these commits.
Bug Fixes
- Fixed the
ImageInfo.getRotationDegrees()
from theImageProxy
produced byImageCapture
so that it matches the EXIF orientation rotational value. (Id4281, b/150802561) - Explicit ordering of CameraX dependencies within
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) - Fixed the
IllegalArgumentException
issue happening on the devices where the display size is smaller than 640x480. (Ife3f2, b/150506192) - Fixed
bindToLifecycle
so that it only modifies the UseCase if it successfully binds. Previously when callingbindToLifecycle
in order to do resolution calculations the UseCase is updated. Now it no longer needs to update the UseCase to do the calculations (I78d9e)
Camera-Core Version 1.0.0-beta02
April 1, 2020
androidx.camera:camera-core:1.0.0-beta02
is released. Version 1.0.0-beta02 contains these commits.
Bug Fixes
- Fixed the
ImageInfo.getRotationDegrees()
from theImageProxy
produced byImageCapture
so that it matches the EXIF orientation rotational value. (Id4281, b/150802561) - Fixed
bindToLifecycle
so that it only modifies the UseCase if it successfully binds. Previously when callingbindToLifecycle
in order to do resolution calculations the UseCase is updated. Now it no longer needs to update the UseCase to do the calculations (I78d9e) - Fixed an issue where the
Preview
use case's capture session wasn't being updated when the preview surface changed after callingPreview.setSurfaceProvider()
more than once.
Camera-Camera2 Version 1.0.0-beta01
February 26, 2020
androidx.camera:camera-camera2:1.0.0-beta01
is released. Version 1.0.0-beta01 contains these commits.
Bug Fixes
- Renamed
SurfaceRequest.setSurface(Surface)
toSurfaceRequest.provideSurface(Surface)
, andSurfaceRequest.setWillNotComplete()
toSurfaceRequest.willNotProvideSurface()
. (I224fe) - Fixed an issue with the aspect ratio of a saved image not being correct
after changing the target rotation value using
ImageCapture.setTargetRotation()
. (I474ea, b/148763432) - Fixed initialization of app variants with ProGuard enabled by preserving the
flag that sets the default
CameraXConfig
provider. (I2d6c1)
Camera-Core Version 1.0.0-beta01
February 26, 2020
androidx.camera:camera-core:1.0.0-beta01
is released. Version 1.0.0-beta01 contains these commits.
API Changes
- Replaced the
ListenableFuture
onSurfaceRequest.provideSurface()
with anExecutor
andCallback
. This simplifies the API by no longer requiring handling of exceptions onprovideSurface()
and enforces that theprovideSurface()
callback cannot be cancelled. This is to prevent crashes on older devices caused by prematurely releasing surfaces. TheSurfaceRequest.Result
object is now used for tracking how aSurfaceRequest
uses the providedSurface
. (I7854b) - Renamed
SurfaceRequest.setSurface(Surface)
toSurfaceRequest.provideSurface(Surface)
andSurfaceRequest.setWillNotComplete()
toSurfaceRequest.willNotProvideSurface()
. (I224fe)
Bug Fixes
- Fixed an issue with the aspect ratio of a saved image not being correct
after changing the target rotation value using
ImageCapture.setTargetRotation()
. (I474ea, b/148763432) - Fixed initialization of app variants with ProGuard enabled by preserving the
flag that sets the default
CameraXConfig
provider. (I2d6c1) - Updated documentation for flash mode APIs to include possible values. (I4a3ec)
Camera-Camera2 Version 1.0.0-alpha10
February 10, 2020
androidx.camera:camera-camera2:1.0.0-alpha10
is released. Version 1.0.0-alpha10 contains these commits.
Bug Fixes
- Improved stability on
INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY
devices by ensuringSurface
s are only retained for duration of use by Camera2. (I9dac2) - Fixed underexposed preview issue on LEGACY devices by adjusting
CONTROL_AE_TARGET_FPS_RANGE
properly. (1224638)
Camera-Core Version 1.0.0-alpha10
February 10, 2020
androidx.camera:camera-core:1.0.0-alpha10
is released. Version 1.0.0-alpha10 contains these commits.
API Changes
- Updated
ImageCapture
to allow saving images toUri
andOutputStream
. Combined overloadedtakePicture
methods into one. Updated test app to useUri
as the canonical example. (Ia3bec) Preview.PreviewSurfaceProvider
has been renamed toPreview.SurfaceProvider
.SurfaceProvider
s no longer require developers to create their ownListenableFuture
, and providing aSurface
is now done through a newSurfaceRequest
object. ThePreview.getPreviewSurfaceProvider()
method has been removed due to its potential for misuse whenPreview
is paired with other classes such asPreviewView
. (I20105)- Added
getTargetRotation()
andgetTargetName()
toPreview
. (Iceee7) - Added
getTargetRotation()
,getBackpressureStrategy()
, andgetImageQueueDepth()
inImageAnalysis
. (I9d6d9) - Added
getTargetRotation()
andgetCaptureMode()
inImageCapture()
(I5bc17) - The arguments that were previously passed in
ImageCapture.OnImageSavedCallback.onError()
andImageCapture.OnImageCapturedCallback.onError()
have now been replaced by a single argumentImageCaptureException
, which still contains all the information that was previously passed. - The file argument previously passed in
ImageCapture.OnImageSavedCallback.onImageSaved()
has been removed. (I750d2) Preview
andImageCapture
classes are now marked final. (I2500b)- API updated, with
getZoomRatio()
,getMaxZoomRatio()
,getMinZoomRatio()
, andgetLinearZoom()
methods ofCameraInfo
merging intogetZoomState()
which returns aZoomState
instance. (Ib19fe) - Removed API fields
OPTION_TARGET_CLASS
andOPTION_TARGET_NAME
fromCameraXConfig
as they are intended for internal library use only. Removed constructor forCameraXConfig.Builder
. (I96912) - Removed requirement that app must extend
Application
in order to initialize CameraX. CameraX will now be initialized with a default Camera2 configuration as long as thecamera-camera2
artifact is included in the application'sbuild.gradle
. (I58ff5) (b/146923574)
Camera-Camera2 Version 1.0.0-alpha09
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
usingCamera2CameraInfo.extractCameraId()
. The following code sample shows how to use this:Camera camera = provider.bindToLifecycle(...); String cameraId = Camera2CameraInfo.extractCameraId(camera.getCameraInfo());
The
Camera2CameraInfo
class requires theExperimentalCamera2Interop
markerClass.
Camera-Core Version 1.0.0-alpha09
January 22, 2020
androidx.camera:camera-core:1.0.0-alpha09
is released. Version 1.0.0-alpha09 contains these commits.
API changes
- The
SurfaceOrientedMeteringPointFactory
parameteruseCaseForSurface
was renamed touseCaseForAspectRatio
and the reference documentation was expanded. FocusMeteringAction.Builder.from()
methods are replaced by the constructorsFocusMeteringAction.Builder()
.- Removed
DisplayOrientedMeteringPointFactory(android.content.Context, androidx.camera.core.CameraSelector, float, float)
. Applications should use the constructor that takes aDisplay
parameter and pass in the current display. - Javadoc improvements for focus and metering APIs regarding
MeteringMode
and 3A Flags, and usage ofDisplay
parameter. - Expanded the reference documentation for
setZoomRatio
andsetLinearZoom
.
Bug fixes
- Fixed issues when closing then opening cameras resulting in "Precondition" check failure.
- Fixed a
ConcurrentModificationException
that could occur when using torch and zoom APIs. - Fixed issue to now select resolutions closer to requested resolution when a mod16 dimensions size is available.
startFocusMetering
andcancelFocusMetering
APIs now behave as documented, with correct timing and potentially returning errors when they occur.- Fixed issue when a specific target resolution was requested with a crop aspect ratio on a device that doesn’t support such sizes. Now, a non-cropped size of sufficient resolution to bound the original request will be selected when available.
Camera-Camera2 Version 1.0.0-alpha08
December 18, 2019
androidx.camera:camera-camera2:1.0.0-alpha08
is released. Version 1.0.0-alpha08 contains these commits.
Known Issues
- Not all Camera2 capture request options work when using the Camera2 interop. If the requested option is not supported, the session fails to start and an error like this may occur:
09-09 14:04:13.643 10117 26020 26036 E AndroidRuntime: java.lang.IllegalArgumentException: Unsupported session configuration combination
Bug Fixes
- Fixed an issue in which a preview black screen occurred after rotating or switching the camera for API Levels 21 and 22.
API Changes
- Experimental: Added a camera2 interop path for extracting the Camera ID.
Camera-Core Version 1.0.0-alpha08
December 18, 2019
androidx.camera:camera-core:1.0.0-alpha08
is released. Version 1.0.0-alpha08 contains these commits.
Known Issues
- Apps using the
PreviewView
orCameraView
may have the wrong aspect ratio preview. This happens after pause or resume on some FULL devices, such as the Pixel2.
Bug Fixes
- Updated the documentation for
FocusMeteringAction
andCameraControl
. - Implemented
TorchControl
forenableTorch()
andgetTorchState()
.
API Changes
- Hid IntDefs and moved IntDef constants outside of the IntDef definition.
- Moved
rotationDegrees
from classOnImageCaptureCallback
toImageInfo
. - Moved
rotationDegrees
from classAnalyzer
toImageInfo
.
Camera-Camera2 Version 1.0.0-alpha07
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.- The camera2 interop functionally is now marked as experimental and moved to a separate package,
androidx.camera.camera2.interop.
Camera-Core Version 1.0.0-alpha07
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 defaultCamera2Config
provided byandroidx.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()
, andhasCamera()
previously provided by the CameraX class call are now available via theProcessCameraProvider
.A per-process instance of
ProcessCameraProvider
is obtained asynchronously using the static methodProcessCameraProvider.getInstance()
, which returns a listenable future, which provides theProcessCameraProvider
on completion. Here it is shown inonCreate()
for a typical usage. You can place calls togetInstance()
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 bygetInstance()
. This ensures the camera provider can be retrieved from theFuture
without blocking onFuture.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 callimage.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 strategyintdef
.ImageProxy.getImage()
is marked as experimental. Applications should annotate usage for example via@androidx.camera.core.ExperimentalGetImage
The
UIThread
annotation requirement for theAnalyzer
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 nowImageCapture.OnImageCapturedCallback
ImageCapture.OnImageSavedListener
is nowImageCapture.OnImageSavedCallback
VideoCapture.OnVideoSavedListener
is nowVideoCapture.OnVideoSavedCallback
Enums 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
andcancelFocusMetering
now returnListenableFutures
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
- Fixed issue when taking a picture on resuming (after a previous pause had take pictures pending completion).
- Known Issue:
CameraControl.enableTorch()
is functional but the returnedListenableFuture<Void>
is always an immediatecomplete(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 toCaptureSession
), andTorchState
remain Off. - Known Issue:
startFocusAndMetering
andcancelFocusAndMetering
start and cancel focus metering, but return an immediatelycompleted (success)
future not representing the documented behavior. TheFocusMeteringResult
fromListenableFuture<FocusMeteringResult> CameraControl.startFocusAndMetering()
is a fake result whichisFocusSuccessful()
and is always "false," differing from intended, documented behavior. - Known Issue: A metering point factory for use with
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 forPreviewView
.
Camera-Camera2 and Camera-Core Version 1.0.0-alpha06
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 optionsRATIO_4_3
orRATIO_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.- Currently, the only available ratios are 16:9 and 4:3. In the case of 1:1, only certain devices have this available from the camera, and then only at limited resolutions. Applications designing a 1:1 interface or processing should use the more flexible 16:9 or 4:3 choices and crop the display or process a subregion.
- These aspect ratios are oriented to use the maximum sensor area.
getTargetAspectRatio()
was added to use case config APIs, returning the aspect ratio the use case output is targeted for.- The method
setTargetAspectRatio(Rational aspectRatio)
has been changed for ImageCapture tosetTargetAspectRatioCustom(Rational aspectRatio)
. When set, the ImageCapture output crops accordingly.
Executor APIs
- The following functions accept an executor parameter, which allows the app to control which executor the function runs on.
Preview.setOnPreviewOutputUpdateListener()
API. If the executor is not present for that function, it executes on the main thread.Preview.setOnPreviewOutputUpdateListener
FocusMeteringAction.Builder.setAutoFocusCallback
ImageAnalysis.setAnalyzer
ImageCapture.takePicture
CameraView.takePicture
CameraView.startRecording
VideoCapture.startRecording
CameraInfo added with check Flash Available and Sensor Rotation APIs
Added
CameraInfo
and agetCameraInfo
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
- Aspect Ratios: For each use case, applications should call only one of
setTargetResolution()
orsetTargetAspectRatio()
. Calling both on the same builder returns an error.- In general it’s recommended to use
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. - Use
setTargetResolution()
for more specific cases, such as when minimum (to save computation) or maximum resolutions (for processing details) are required.
- In general it’s recommended to use
- Executor API: Removed the
setCallbackHandler()
call from use case configuration APIs. Instead, applications can set the executor as a parameter in various other APIs that set a callback. - Updated null annotations for various functions.
- Fixed an issue that caused
java.lang.IllegalStateException at Camera$StateCallback.onError
to be thrown when opening the camera. - Fixed issue where resolutions would be selected that were too small (less than 640x480) when app is requesting larger or default resolutions resulting in a blocky or blurry preview image. Applications that specifically need smaller resolutions can explicitly request them.
- Fixed an issue where the camera would show black screen (failed to start the camera) after returning from an intent that launched another camera application.
- Fixed a bug that threw the following error when apps are repeatedly started or stopped;
java.lang.IllegalArgumentException: CaptureRequest contains unconfigured Input/Output Surface!
- Fixed the following error that occurs when disabling ImageAnalysis:
java.lang.IllegalStateException: maxImages (4) has already been acquired, call #close before acquiring more.
- Added additional tests for camera disconnect flow.
- Improved test system robustness when running back-to-back camera tests.
Camera-Camera2 and Camera-Core Version 1.0.0-alpha05
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 renamedImageCapture.ImageCaptureError
VideoCapture.UseCaseError
is renamedVideoCapture.VideoCaptureError
Added
CameraControl
API w/Tap-to-Focus APIsAdded API to get a
CameraControl
from CameraX for a camera, selected by lens facing:CameraX.getCameraControl(LensFacing lensFacing)
Added
MeteringPointFactory
,MeteringPoint
,MeteringMode
, andFocusMeteringAction
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.
Camera-Camera2 and Camera-Core Version 1.0.0-alpha04
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:
- Devices not supporting the requested resolution
- Compatibility issues such as on LEGACY devices where certain resolutions must be used to operate correctly
- On some devices, certain formats are only available at certain aspect ratios
- A preference for a “nearest mod16” for JPEG or video encoding. See
CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP
Although 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:
- Preview use case is now considered to have a default 4:3 aspect ratio when none is set.
- When CameraX internally considers changes to requested resolutions and aspect ratios based on device capability, it first tries to maintain the same aspect ratio (as determined by any of
setTargetAspectRatio
orsetTargetResolution
calls) - A “Nearest mod16” version of the resolution is considered as the same aspect ratio.
ImageAnalysis Non-Blocking Mode
- The behaviour of
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. - The analyzer can hold a single image indefinitely without stalling the pipeline.
- If the application provides an executor which then blocks, the ImageAnalysis use case blocks.
- The default executor set internally behaves as a non-blocking executor.
Bug Fixes
- Fixed timeout issues waiting for 3A convergence when capturing images on devices with no auto-focus, auto exposure, and auto-whitebalance
- Fixed issue when rapidly taking pictures with ImageCapture. Fixes error:
java.lang.IllegalStateException: maxImages (2) has already been acquired
- Fixed issue when
setLensFacing
was not called for a use case, resulting injava.lang.IllegalArgumentException: Unable to get camera ID for use case
. - Fixed issue where LEGACY device required specific aspect ratio as maximum JPEG resolution
- Fixed issue when backgrounding the app while camera is opening
- Fixed issue on API < 25, removing error
checkAndUpdateEglState: invalid current EGLDisplay
- Fixed issue when unbinding preview after enabling and starting extensions
- Build artifacts for camera-view and camera-extensions are now published as alpha versions
Camera-Camera2 and Camera-Core Version 1.0.0-alpha03
July 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
- Added javadoc clarification for “target” in setTarget configuration calls
Camera-Core
- Fixed unconfigured Input/Output Surface crash on rapid open/close or bind/unbind
- Move to new Futures implementations
- Test fixes for more robust testing
- Core integration test now shows capture time for photos
- Developed internal compat class for Executors
- Timing test app capture images waits for previous to complete & improved stability
Extensions
- Added versioning checks
- Additional test coverage - extension event callbacks
- Improvements for internally corresponding image and meta-data
- Fixes to mode switching in test app
Camera-Camera2 and Camera-Core Version 1.0.0-alpha02
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
- Fixed div by zero issue when using emulator
- Fixed NullPointerException/Surface Abandoned error occurring on some devices when quickly taking photos while unbinding and rebinding use cases rapidly.
- Fixed internal issue to ensure capture request updates affect all surfaces consistently
- Stability improvements when restarting use cases in new app instances
- Internal architecture changes to prepare for supporting executors in the API
- Additional Javadoc clarifications on CameraX class and lifecycle management
- Added instrumented testing for Antelope performance test app
- Remove need for '-keepattributes Signature' in app Proguard config
Camera-Camera2 and Camera-Core 1.0.0-alpha01
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.
Camera-Lifecycle Version 1.0.0-beta11
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 returnSurface.ROTATION_0
if called before being attached to a Camera instance unless a targetRotation has been set on the Builder or UseCase. (I80fcd)
Camera-Lifecycle Version 1.0.0-beta10
September 23, 2020
androidx.camera:camera-lifecycle:1.0.0-beta10
is released. Version 1.0.0-beta10 contains these commits.
Bug Fixes
- Release to support Camera-Core 1.0.0-beta10
Camera-Lifecycle Version 1.0.0-beta09
September 16, 2020
androidx.camera:camera-lifecycle:1.0.0-beta09
is released. Version 1.0.0-beta09 contains these commits.
Camera-Lifecycle Version 1.0.0-beta08
August 19, 2020
androidx.camera:camera-lifecycle:1.0.0-beta08
is released. Version 1.0.0-beta08 contains these commits.
Bug Fixes
- Initialization should no longer crash when using a Context
that does not return an Application object from
Context.getApplicationContext()
. (I3d3c9, b/160817073)
Camera-Lifecycle Version 1.0.0-beta07
July 22, 2020
androidx.camera:camera-lifecycle:1.0.0-beta07
is released. Version 1.0.0-beta07 contains these commits.
Camera-Lifecycle Version 1.0.0-beta06
June 24, 2020
androidx.camera:camera-lifecycle:1.0.0-beta06
is released. Version 1.0.0-beta06 contains these commits.
API Changes
- CameraX can now be configured with 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)
Camera-Lifecycle Version 1.0.0-beta05
June 10, 2020
androidx.camera:camera-lifecycle:1.0.0-beta05
is released. Version 1.0.0-beta05 contains these commits.
Bug Fixes
- Fix the crash on app startup when initialising CameraX while phone is in Do Not Disturb mode. An
InitializationException
contains aCameraUnavailableException
will be set to theListenableFuture
of the intialization result instead of crashing the application. (I9909a, b/149413835)
Camera-Lifecycle Version 1.0.0-beta04
May 27, 2020
androidx.camera:camera-lifecycle:1.0.0-beta04
is released. Version 1.0.0-beta04 contains these commits.
Camera-Lifecycle Version 1.0.0-beta03
April 15, 2020
androidx.camera:camera-lifecycle:1.0.0-beta03
is released. Version 1.0.0-beta03 contains these commits.
Bug Fixes
- Fixed regression from beta03 where calling
bindToLifecycle()
with zeroUseCase
s would cause a thrown exception. This prevented retrieval of aCamera
without binding aUseCase
. - Fixes to support the release of
camera-core
Camera-Lifecycle Version 1.0.0-beta01
February 26, 2020
androidx.camera:camera-lifecycle:1.0.0-beta01
is released. Version 1.0.0-beta01 contains these commits.
Bug Fixes
- Fixed documentation to note that when obtaining a
ProcessCameraProvider
during initialization, a default configuration is used and that extendingApplication
is optional. (I5e395)
Camera-Lifecycle Version 1.0.0-beta02
April 1, 2020
androidx.camera:camera-lifecycle:1.0.0-beta02
is released. Version 1.0.0-beta02 contains these commits.
Bug Fixes
- Updated to support the bug fixes in the
camera-camera2:1.0.0-beta02
andcamera-core:1.0.0-beta02
artifacts.
Camera-Lifecycle Version 1.0.0-alpha10
February 10, 2020
androidx.camera:camera-lifecycle:1.0.0-alpha10
is released. Version 1.0.0-alpha10 contains these commits.
API Changes
- Added
@MainThread
annotation to BindToLifecycle, unbind and unbindAll methods. (I990d2)
Camera-Lifecycle Version 1.0.0-alpha03
January 22, 2020
androidx.camera:camera-lifecycle:1.0.0-alpha03
is released. Version 1.0.0-alpha03 contains these commits.
Updates
- Various fixes and updates to support Camera Core & Camera2 changes.
Camera-Lifecycle Version 1.0.0-alpha02
December 18, 2019
androidx.camera:camera-lifecycle:1.0.0-alpha02
is released. Version 1.0.0-alpha02 contains these commits.
Dependency changes
- Updated to use
androidx.camera:camera-core:1.0.0-alpha08
.
Camera-Lifecycle Version 1.0.0-alpha01
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
- The camera-lifecycle artifact is added, providing
LifeCycleCameraProvider
interface, and an implementation calledProcessCameraProvider
which provides many of the functions of the previous CameraX class in core and is obtained via agetInstance()
method. - Apps should include the camera-lifecycle library to use CameraX.
- See notes in the camera-core section for how to perform initialization of CameraX using a
ProcessCameraProvider
.
Camera-Extensions and Camera-View Version 1.0.0
Camera Extensions & View Version 1.0.0-alpha23
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
- CameraView is being deprecated. Please use
LifecycleCameraController
instead. See the migration guide (Idac2c) - Added FloatRange annotation to setLinearZoom() (I69971)
Bug Fixes
- Pinned camera-view dependencies to rely on 1.0.0 artifacts. Depending on camera-view will not longer cause gradle's dependency resolution to automatically upgrade camera-core, camera-camera2 and camera-lifecycle to the latest 1.1.0 artifacts, though camera-view is still compatible with those artifacts if they are explicitly set to use 1.1.0. (Ic8fa1, b/181599852)
- Fixed Samsung A3 stretched preview in PreviewView. (Iacb30, b/180121821)
- Fixed the issue where if camera selector cannot be set before camera is initialized. (Ic8bd0)
Camera Extensions & View Version 1.0.0-alpha22
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
- add a CameraInfo getter to CameraController. (Ib8138, b/178251727)
Bug Fixes
- Fixed ExtensionsErrorListener to report errors when only Preview or ImageCapture is bound. (I5ae39)
Camera Extensions & View Version 1.0.0-alpha21
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.
Camera Extensions & View Version 1.0.0-alpha20
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.
Camera-Extensions & Camera-View Version 1.0.0-alpha19
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 withExperimentalVideo
as themarkerClass
. (I6d729)
Camera-Extensions Version 1.0.0-alpha18
October 14, 2020
androidx.camera:camera-extensions:1.0.0-alpha18
is released. Version 1.0.0-alpha18 contains these commits.
Bug Fixes
- Improved the latency of CameraX initialization and bindToLifecycle (I61dc5)
<UseCase>.getTargetRotation()
will returnSurface.ROTATION_0
if called before being attached to a Camera instance unless a targetRotation has been set on the Builder or UseCase. (I80fcd)
Camera-View Version 1.0.0-alpha18
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.
Camera-Extensions Version 1.0.0-alpha17
September 23, 2020
androidx.camera:camera-extensions:1.0.0-alpha17
is released. Version 1.0.0-alpha17 contains these commits.
Bug Fixes
- Release to support Camera-Core 1.0.0-beta10
Camera-View Version 1.0.0-alpha17
September 23, 2020
androidx.camera:camera-view:1.0.0-alpha17
is released. Version 1.0.0-alpha17 contains these commits.
Bug Fixes
- Release to support Camera-Core 1.0.0-beta10
Camera-Extensions Version 1.0.0-alpha16
September 16, 2020
androidx.camera:camera-extensions:1.0.0-alpha16
is released. Version 1.0.0-alpha16 contains these commits.
Bug Fixes
- Added method in
ExtensionsManager
to get anExtensions
object which is used to enable and query extensions on Camera instances (I4fb7e)
Camera-View Version 1.0.0-alpha16
September 16, 2020
androidx.camera:camera-view:1.0.0-alpha16
is released. Version 1.0.0-alpha16 contains these commits.
API Changes
- Removed
PreviewView#setDeviceRotationForRemoteDisplayMode()
andPreviewView#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 withPreview#setTargetRotation()
and the newly addedPreviewView#getViewPort(targetRotation)
. (Ib62cc) - Renamed
createSurfaceProvider()
togetSurfaceProvider()
. The method will always return the same instance of Preview.SurfaceProvider. (Iff83c)
Bug Fixes
- Forced PreviewView to use TextureView if extension effect is enabled and the vendor library implementation needs to do a special process on the output surface. (I0c3cc)
- Allow arbitrary target rotation for Preview. The transformation info is calculated and returned to user on-the-fly via a new
TranformationInfoListener
callback. (I21470)
Known Issues
- In PreviewView,
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. - The MeteringPoint obtained from
PreviewView#getMeteringPointFactory()
may be wrong if ViewPort is used with PreviewView.
Camera-Extensions Version 1.0.0-alpha15
August 19, 2020
androidx.camera:camera-extensions:1.0.0-alpha15
is released. Version 1.0.0-alpha15 contains these commits.
Bug Fixes
- The
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)Camera-View Version 1.0.0-alpha15
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 aCameraInfo
instance instead of aCameraSelector
so there is a direct mapping to which Camera the factory will be generating points for. All classes which useDisplayOrientedMeteringPointFactory
also take in aCameraInfo
instance instead ofCameraSelector
. (I400c1)- Removed
TextureViewMeteringPointFactory
.PreviewView
provides a public API (createMeteringPointFactory()
) to create a metering point factory regardless of whether it's using aTextureView
orSurfaceView
. (Ide693) - rename PreviewView's
SURFACE_VIEW
/TEXTURE_VIEW
implementation modes toPERFORMANCE
/COMPATIBLE
.PERFORMANCE
is the oldSURFACE_VIEW
mode, andCOMPATIBLE
is the oldTEXTURE_VIEW
mode. (I0edc2) - For image capture, overwrite the flip horizontal flag in metadata based on camera direction. (I28499)
Camera-Extensions Version 1.0.0-alpha14
July 22, 2020
androidx.camera:camera-extensions:1.0.0-alpha14
is released. Version 1.0.0-alpha14 contains these commits.
Camera-View Version 1.0.0-alpha14
July 22, 2020
androidx.camera:camera-view:1.0.0-alpha14
is released. Version 1.0.0-alpha14 contains these commits.
Camera-Extensions Version 1.0.0-alpha13
June 24, 2020
androidx.camera:camera-extensions:1.0.0-alpha13
is released. Version 1.0.0-alpha13 contains these commits.
Bug Fixes
- Added experimental interfaces for filtering cameras by camera ID and CameraCharacteristics. (I28f61)
Camera-View Version 1.0.0-alpha13
June 24, 2020
androidx.camera:camera-view:1.0.0-alpha13
is released. Version 1.0.0-alpha13 contains these commits.
Bug Fixes
- CameraView no longer crashes with an IllegalArgumentException when binding to a LifecycleOwner whose Lifecycle transitions to a DESTROYED state shortly after being bound. Binding Lifecycles in a DESTROYED state will not attempt to open the camera. (I7c2b8)
- PreviewView StreamState is now available through CameraView.getPreviewStreamState() (I21a2b)
Camera-Extensions Version 1.0.0-alpha12
June 10, 2020
androidx.camera:camera-extensions:1.0.0-alpha12
is released. Version 1.0.0-alpha12 contains these commits.
Bug Fixes
- Fix the crash on app startup when initialising CameraX while phone is in Do Not Disturb mode. An
InitializationException
contains aCameraUnavailableException
will be set to theListenableFuture
of the intialization result instead of crashing the application. (I9909a, b/149413835)
Camera-View Version 1.0.0-alpha12
June 10, 2020
androidx.camera:camera-view:1.0.0-alpha12
is released. Version 1.0.0-alpha12 contains these commits.
Bug Fixes
- Add
PreviewView#getBitmap()
API which returns a Bitmap representation of the content displayed on the preview surface. (I9b500, b/157659818)
Camera-Extensions Version 1.0.0-alpha11
May 27, 2020
androidx.camera:camera-extensions:1.0.0-alpha11
is released. Version 1.0.0-alpha11 contains these commits.
Camera-View Version 1.0.0-alpha12
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
- Add
PreviewView#getBitmap()
API which returns a Bitmap representation of the content displayed on the preview surface. (I9b500, b/157659818)
Camera-View Version 1.0.0-alpha11
May 27, 2020
androidx.camera:camera-view:1.0.0-alpha11
is released. Version 1.0.0-alpha11 contains these commits.
API Changes
- Add
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) - Added
PreviewView#setDeviceRotationForRemoteDisplayMode()
API to provide device rotation for transform calculations if the application is running in remote display mode. (I59b95, b/153514525)
Bug Fixes
- Fixed the preview distortion issue on
FULL/LIMITED/LEVEL_3
cameras running android 7.0 and below. Forced useImplementationMode#TEXTURE_VIEW
mode when the android version is 7.0 or below. (I83e30, b/155085307) - Removed the
CameraInfo
parameter fromPreviewView#createSurfaceProvider()
,PreviewView
now internally retrieves it from theSurfaceRequest
. (If18f0, b/154652477) - Fixed the VideoCapture's default aspect ratio to be 16:9 in CameraView. (Ie6a7b, b/153237864)
- Fix
PreviewView
black screen issues when swiped outPreview
fragment and then swiped back in ViewPager2. Also fixed the issue whenremoveView(previewview)
and thenaddView(previewView)
. (Iab555, b/149877652, b/147354615) - Update the
CameraView#takePicture()
API to allow saving images toUri
andOutputStream
. Update the test app to useUri
as the canonical example. (Ia2459, b/153607583) - You can set PreviewView's scale type from a XML layout by setting the
ScaleType
attribute. (I08565, b/153015659) CameraView.ScaleType
has been removed. Instead, usePreviewView.ScaleType
to set/get a scale type with CameraView. (Ia8974, b/153014831)- Give
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)
Camera-Extensions Version 1.0.0-alpha10
April 15, 2020
androidx.camera:camera-extensions:1.0.0-alpha10
is released. Version 1.0.0-alpha10 contains these commits.
Bug Fixes
- Fixes to support the release of Camera-Core
Camera-View Version 1.0.0-alpha10
April 15, 2020
androidx.camera:camera-view:1.0.0-alpha010
is released. Version 1.0.0-alpha010 contains these commits.
Bug Fixes
- Fixes a previous known issue where
PreviewView
's surfaceView implementation wasn't working well on certain devices, and would cause the app to crash after resuming preview. (I5ed6b)
Camera-Extensions Version 1.0.0-alpha09
April 1, 2020
androidx.camera:camera-extensions:1.0.0-alpha09
is released. Version 1.0.0-alpha09 contains these commits.
Bug Fixes
- Updated to support the bug fixes in the
camera-camera2:1.0.0-beta02
,camera-core:1.0.0-beta02
, andcamera-lifecycle:1.0.0-beta02
artifacts
Camera-View Version 1.0.0-alpha09
April 1, 2020
androidx.camera:camera-view:1.0.0-alpha09
is released. Version 1.0.0-alpha09 contains these commits.
Known Issues
- Using
ImplementationMode.SURFACE_VIEW
withPreviewView
may not work well on certain devices, this is because theSurfaceView
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 theSurfaceView
's surface is valid again. For now, you should useImplementationMode.TEXTURE_VIEW
.
API Changes
- Renamed
PreviewView.setImplementationMode()
toPreviewView.setPreferredImplementationMode()
. - Renamed
PreviewView.getImplementationMode()
toPreviewView.getPreferredImplementationMode()
. - Replaced
PreviewView.getSurfaceProvider()
byPreviewView.createSurfaceProvider(CameraInfo)
, which takes a nullableCameraInfo
instance used to optimize preview by usingImplementationMode.SURFACE_VIEW
whenever possible. If a null instance is passed, or if you set the preferred implementation mode toImplementationMode.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 toPreviewView.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 inPreviewView.ScaleType
, and defaults toPreviewView.ScaleType.FILL_CENTER
.Added
PreviewView.getScaleType()
.Removed support for setting the implementation mode for
PreviewView
in a XML layout using theimplementationMode
attribute.Add
createMeteringPointFactory()
API to PreviewView to support converting (x, y) inPreviewView
toMeteringPoint
. (Ib36d7)
Bug Fixes
- Fixed cases where an incorrect preview is displayed after
PreviewView
's size changes. (I71101)
Camera-Extensions Version 1.0.0-alpha08
February 26, 2020
androidx.camera:camera-extensions:1.0.0-alpha08
is released. Version 1.0.0-alpha08 contains these commits.
Camera-View Version 1.0.0-alpha08
February 26, 2020
androidx.camera:camera-view:1.0.0-alpha08
is released. Version 1.0.0-alpha08 contains these commits.
Bug Fixes
- Replaced the
ListenableFuture
onSurfaceRequest.provideSurface()
with anExecutor
andCallback
. This simplifies the API by no longer requiring handling of exceptions onprovideSurface()
and enforces that theprovideSurface()
callback cannot be cancelled. This is to prevent crashes on older devices caused by prematurely releasing surfaces. TheSurfaceRequest.Result
object is now used for tracking how aSurfaceRequest
uses the providedSurface
. (I7854b) - Renamed
SurfaceRequest.setSurface(Surface)
toSurfaceRequest.provideSurface(Surface)
andSurfaceRequest.setWillNotComplete()
toSurfaceRequest.willNotProvideSurface()
. (I224fe) - Fixed initialization of app variants with ProGuard enabled by preserving the
flag that sets the default
CameraXConfig
provider. (I2d6c1)
Camera-Extensions Version 1.0.0-alpha07
February 10, 2020
androidx.camera:camera-extensions:1.0.0-alpha07
is released. Version 1.0.0-alpha07 contains these commits.
Bug Fixes
- The arguments that were previously passed in
ImageCapture.OnImageSavedCallback.onError()
andImageCapture.OnImageCapturedCallback.onError()
have now been replaced by a single argumentImageCaptureException
, which still contains all the information that was previously passed. - The file argument previously passed in
ImageCapture.OnImageSavedCallback.onImageSaved()
has been removed. (I750d2)
Camera-View Version 1.0.0-alpha07
February 10, 2020
androidx.camera:camera-view:1.0.0-alpha07
is released. Version 1.0.0-alpha07 contains these commits.
API Changes
PreviewView
'sTextureView
implementation now sets theTextureView
's size to the camera sensor output size before scaling it to fill its parentPreviewView
. If you want the camera preview to fill an entire part of the UI (the whole screen for instance), you should not set thePreviewView
'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 thePreviewView
(if the camera sensor output size is smaller). Instead, you should set thePreviewView
as big as its parent (by using the attribute "match_parent
" for example). (1204869)
Bug Fixes
- Updated
ImageCapture
to allow saving images toUri
andOutputStream
. Combined overloadedtakePicture
methods into one. Updated test app to useUri
as the canonical example. (Ia3bec) Preview.PreviewSurfaceProvider
has been renamed toPreview.SurfaceProvider
.SurfaceProvider
s no longer require developers to create their ownListenableFuture
, and providing aSurface
is now done through a newSurfaceRequest
object. ThePreview.getPreviewSurfaceProvider()
method has been removed due to its potential for misuse whenPreview
is paired with other classes such asPreviewView
. (I20105)- The arguments that were previously passed in
ImageCapture.OnImageSavedCallback.onError()
andImageCapture.OnImageCapturedCallback.onError()
have now been replaced by a single argumentImageCaptureException
, which still contains all the information that was previously passed. - The file argument previously passed in
ImageCapture.OnImageSavedCallback.onImageSaved()
has been removed. (I750d2) - API updated, with
getZoomRatio()
,getMaxZoomRatio()
,getMinZoomRatio()
, andgetLinearZoom()
methods ofCameraInfo
merging intogetZoomState()
which returns aZoomState
instance. (Ib19fe)
Camera-Extensions Version 1.0.0-alpha06
January 22, 2020
androidx.camera:camera-extensions:1.0.0-alpha06
is released. Version 1.0.0-alpha06 contains these commits.
Updates
- Various fixes and updates to support Camera Core & Camera2 changes.
Camera-View Version 1.0.0-alpha06
January 22, 2020
androidx.camera:camera-view:1.0.0-alpha06
is released. Version 1.0.0-alpha06 contains these commits.
Updates
- Various fixes and updates to support Camera Core & Camera2 changes.
Camera-Extensions Version 1.0.0-alpha05
December 18, 2019
androidx.camera:camera-extensions:1.0.0-alpha05
is released. Version 1.0.0-alpha05 contains these commits.
Bug Fixes
- Updated to match the internal Camera Core APIs.
Camera-View Version 1.0.0-alpha05
December 18, 2019
androidx.camera:camera-view:1.0.0-alpha05
is released. Version 1.0.0-alpha05 contains these commits.
Known Issues
- The aspect ratio may be incorrect when using PreviewView (b/146215202).
New Features
- Implemented a new class called
PreviewView.TextureViewImplementation
that syncs the SurfaceTexture's lifecycle with the camera's usage of the TextureView's surface.
Camera-Extensions Version 1.0.0-alpha04
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 sameCameraSelector
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() )
Camera-View Version 1.0.0-alpha04
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
- A
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 aPreviewSurfaceProvider
to easily connect a Preview use casepreview.setPreviewSurfaceProvider(previewView.previewSurfaceProvider)
“
ZoomLevel
” is now “ZoomRatio
” in API-namingSome method parameters have changed nullability
Camera-Extensions and Camera-View Version 1.0.0-alpha03
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
- Added Context initializer for extensions. Extensions version incremented to 1.1.0
Camera-Extensions and Camera-View Version 1.0.0-alpha02
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.
- Added tests to verify
PreviewImageProcessorImpl
has correctly implemented timestamps. - Fix
ExtensionTest
test failure on Nexus 5 (API level 21) and ensure preview is available.
Camera-Extensions and Camera-View Version 1.0.0-alpha01
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
- New library for future Camera Extensions for accessing effects on supported devices. This library is a work in progress.
- New Camera View class. This library is a work in progress.