CameraX

Se agregó CameraX a Jetpack para que sea más fácil agregar funciones de la cámara a tu app. La biblioteca proporciona una serie de correcciones de compatibilidad y soluciones alternativas para ayudar a que la experiencia de los desarrolladores sea coherente en muchos dispositivos.

En esta tabla, se enumeran todos los artefactos del grupo androidx.camera.

Artefacto Versión estable Versión potencial Versión beta Versión alfa
camera-camera2 1.3.2 - - 1.4.0-alpha04
camera-core 1.3.2 - - 1.4.0-alpha04
efectos-de-cámara - - - 1.4.0-alpha04
camera-extensions 1.3.2 - - 1.4.0-alpha04
camera-lifecycle 1.3.2 - - 1.4.0-alpha04
camera-mlkit-vision - - 1.3.0-beta02 1.4.0-alpha04
camera-view 1.3.2 - - 1.4.0-alpha04
cámara-visor - - 1.3.0-beta02 1.4.0-alpha04
camera-video 1.3.2 - - 1.4.0-alpha04
Esta biblioteca se actualizó por última vez el 6 de marzo de 2024.

Prueba de dispositivos

Se probó CameraX en muchos dispositivos de nuestro lab. Si quieres ver una lista de los dispositivos que se encuentran actualmente en el lab, consulta Dispositivos del laboratorio probados con CameraX.

Cómo declarar dependencias

Para agregar una dependencia en CameraX, debes agregar el repositorio de Maven de Google a tu proyecto. Consulta el repositorio de Maven de Google para obtener más información.

Agrega las dependencias de los artefactos que necesites en el archivo build.gradle de tu app o módulo:

Groovy

dependencies {
  // CameraX core library using the camera2 implementation
  def camerax_version = "1.4.0-alpha04"
  // 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}"
}

Kotlin

dependencies {
    // CameraX core library using the camera2 implementation
    val camerax_version = "1.4.0-alpha04"
    // 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}")
}

Comentarios

Tus comentarios ayudan a mejorar Jetpack. Avísanos si descubres nuevos errores o tienes ideas para mejorar esta biblioteca. Consulta los errores existentes de esta biblioteca antes de crear uno nuevo. Puedes agregar tu voto a un error existente haciendo clic en el botón de la estrella.

Crear un error nuevo

Consulta la documentación sobre la Herramienta de seguimiento de errores para obtener más información.

Versión 1.4

Versión 1.4.0-alpha04

24 de enero de 2024

Lanzamiento de androidx.camera:camera-*:1.4.0-alpha04. La versión 1.4.0-alpha04 contiene estas confirmaciones.

Nuevas funciones

  • Nuevo artefacto: Camera-effects: biblioteca para aplicar efectos en tiempo real al resultado de CameraX, que incluye Preview, VideoCapture o ImageCapture. Este artefacto contiene implementaciones de OpenGL de la API de CameraEffect que manipulan la salida de la cámara de manera eficiente.
  • OverlayEffect: Para dibujar superposiciones con la API de Canvas de Android. Esto permite que la app aplique una marca de agua o destaque los objetos detectados en las salidas de la cámara.
  • APIs de DynamicRange para el caso de uso de vista previa: ahora el rango dinámico se puede configurar en el caso de uso de vista previa, independientemente del caso de uso de video. Esto permite rangos dinámicos HDR como HLG10 solo para vista previa. También hay nuevas APIs disponibles en CameraInfo para consultar qué rangos dinámicos admite cada cámara

Cambios en la API

  • Se cambió el nombre de ScreenFlashUiCompleter a ScreenFlashListener y se movió ScreenFlashUiCompleter#getExpirationTimeMillis al parámetro expirationTimeMillis de ScreenFlash#apply (I13944).
  • Se agregaron nuevas APIs para permitir que se configure el rango dinámico en el caso de uso de vista previa y consultar los rangos dinámicos compatibles con cada cámara. Esto permite que los rangos dinámicos HDR, como HLG10, se usen solo con el caso de uso de la versión preliminar, lo que ya no requiere que se vincule un VideoCapture al mismo tiempo. (If25e3).
  • Se cambió el nombre de getMirroring() por isMirroring() (I47063).
  • Se agregó compatibilidad con la estimación de latencia de capturas estáticas en tiempo real en CameraX. Las extensiones de cámara permiten que las aplicaciones usen una API que proporciona una estimación de cuánto tardará una captura. La estimación tiene en cuenta las condiciones del entorno actuales y el estado de la cámara, e incluye el tiempo dedicado a procesar solicitudes de captura de varios fotogramas junto con cualquier tiempo adicional para codificar los búferes procesados, si es necesario. (I05c3a).
  • Se cambió el nombre de ScreenFlashUiControl por ScreenFlash, el de ScreenFlashUiControl#applyScreenFlashUi por ScreenFlash#apply, y el de ScreenFlashUiControl#clearScreenFlashUi por ScreenFlash#clear, y se agregó el método getScreenFlashUiApplyTimeoutSeconds en lugar de exponer SCREEN_FLASH_UI_APPLY_TIMEOUT_SECONDS directamente (Iccdd0).

Correcciones de errores

  • Se corrigió una fuga de memoria que provocaba que no se liberaran actividades o fragmentos cuando se habilitaban las extensiones (I14215).
  • Se solucionó el problema por el que getZoomRatio mostraba de forma incorrecta un valor disminuido cuando se aplicaba una proporción de zoom que aumentaba. (I4aa0d, b/317543616).
  • El evento ImageCapture#ScreenFlash#clear se invoca de inmediato cuando se desvincula ImageCapture o se cierra la cámara. Además, se corrigen algunos errores por los que nunca se invoca debido a que las capturas en estas situaciones no se completan correctamente. (If99f9).
  • Se corrigió la falla que ocurre cuando se detiene el ciclo de vida antes de que se complete la solicitud takePicture (Idf017, b/306202751).
  • Se solucionó el problema por el que la vista previa de la cámara se volvía negra cuando se habilitaban las extensiones en algunos dispositivos (I1ffd0).
  • Se corrigió la duración incorrecta de la grabación de video en dispositivos que usaban el SoC Snapdragon 778G (If6aa7, b/316057919).

Versión 1.4.0-alpha03

13 de diciembre de 2023

Lanzamiento de androidx.camera:camera-*:1.4.0-alpha03. La versión 1.4.0-alpha03 contiene estas confirmaciones.

Nuevas funciones

  • Se agregó CameraInfo.mustPlayShutterSound para proporcionar información sobre si se debe reproducir un sonido del obturador de acuerdo con las restricciones regionales. (Ifda84).
  • Se agregaron OnImageCapturedCallback.onCaptureStarted y OnImageSavedCallback.onCaptureStarted para notificar cuándo la cámara comenzó a exponer un fotograma En este momento, te recomendamos que reproduzcas el sonido del obturador o la animación del obturador. (Ic49b3).
  • Se agregó compatibilidad con la función Screen Flash en CameraX para la captura de imágenes de la cámara frontal. CameraX se encargará del control de la API del lado del framework y sincronizará la sincronización con los cambios de la IU de la aplicación según sea necesario (p.ej., el activador de captura previa de AE después del cambio de color o brillo de la pantalla de la app). Las apps solo deberán agregar sus implementaciones laterales de la IU en la interfaz de ScreenFlashUiControl proporcionada a CameraX. (I8ae84).
  • Se agregó compatibilidad con la implementación de Screen Flash en CameraX. Las apps podrán obtener una implementación básica de ImageCapture.ScreenFlashUiControl desde PreviewView o el ScreenFlashView recién agregado, que agregará una vista superpuesta de monocolor y maximizará el brillo de la pantalla durante la captura de fotos con flash de la pantalla. (I1810e).

Cambios en la API

  • Admite nuevas funciones de extensiones(progreso del proceso de posview y captura): Se agregaron APIs de ImageCapture#getImageCaptureCapabilities() para que las apps consulten las capacidades de la posvista y capturen la devolución de llamada del progreso del proceso Las apps pueden habilitar la vista posterior con la ImageCapture.Builder#setPostviewEnabled(). El tamaño de la vista posterior se puede seleccionar con ImageCapture.Builder#setPostviewResolutionSelector(). Cuando se invoca takePicture(), onPostviewBitmapAvailable y onCaptureProcessProgressed se pueden implementar en OnImageSavedCallback o OnImageCapturedCallback para obtener la notificación de posvisualización y de progreso del proceso, si es compatible. (I5cd88).
  • Se trata de APIs para calcular la transformación de coordenadas del sensor al búfer actual, con una marca que indica si la superficie contiene la información de orientación de la cámara (I59096).
  • Se expuso la API para consultar PreviewCapabitlity en la vista previa de UseCase. (Ie5b6c).
  • Se agregaron APIs para admitir más calidades para VideoCapture. Recorder.Builder#setVideoCapabilitiesSource(int) se puede usar con VIDEO_CAPABILITIES_SOURCE_CODEC_CAPABILITIES para crear una instancia de Recorder que admita más calidades que VIDEO_CAPABILITIES_SOURCE_CAMCORDER_PROFILE. Un caso de uso común es cuando la aplicación se esfuerza por grabar video UHD siempre que sea posible, pero el CamcorderProfile del dispositivo no incluye una configuración de UHD, aunque el códec sea capaz de grabar este tipo de video. (Iedbe2, b/263961771).
  • Se agregó el método get y el método set de formato de salida ImageAnalysis a CameraController. (I9a96c, b/308240643).

Correcciones de errores

  • Desde Cámara 1.3.1: Se mejoró el rendimiento de ProcessCameraProvider#bindToLifecycle(). El cambio principal consiste en optimizar el proceso de identificación de las combinaciones de tamaño más adecuadas para UseCases. Los resultados óptimos varían según las combinaciones específicas de UseCase y la cantidad de tamaños de salida admitidos para los dispositivos de destino. (I454f2).
  • Permite el uso de VideoCapture cuando las extensiones estén habilitadas. (I91f32).
  • Se solucionó el problema de imagen JPEG grande capturada en dispositivos Samsung de las series A71 y M51 Las imágenes JPEG capturadas contienen datos de relleno 0 redundantes en el segmento de datos comprimidos de JFIF. Esto hace que las imágenes capturadas tengan un tamaño de archivo extremo. Se quitarán los datos de padding redundantes (0) para que las imágenes capturadas tengan un tamaño de archivo de imagen normal. (I01afc, b/288828159).
  • Inhabilita la compatibilidad de ImageAnalysis en Pixel para evitar el error en Pixel que devuelve accidentalmente los tamaños admitidos de ImageAnalysis. (I7ec31).
  • Se solucionó un problema de rendimiento por el que la carga de la CPU y el consumo de energía aumentaban cuando las extensiones estaban habilitadas (Ibdccb).
  • Se agregó Snapdragon 480 a CameraUseInconsistentTimebaseQuirk. Esto soluciona un problema en Android 12 para dispositivos que usan este chipset, en el que el audio de las grabaciones se compensa por la cantidad de tiempo que el dispositivo está en estado de suspensión. (I58010).

Versión 1.4.0-alpha02

18 de octubre de 2023

Lanzamiento de androidx.camera:camera-*:1.4.0-alpha02. La versión 1.4.0-alpha02 contiene estas confirmaciones.

Cambios en la API

  • Cambia el nombre de la API a setCameraOpenRetryMaxTimeoutInMillisWhileResuming y el nombre del argumento. (I72370).
  • Se agregaron APIs para consultar la capacidad del dispositivo y habilitar la estabilización de video y vista previa (I87544).
  • Proporciona una API para personalizar el tiempo de espera máximo de reintentos de la cámara abierta (I0c642).
  • Se lanzó ProcessCameraProvider.shutdownAsync como una API de prueba pública para permitir el uso del proveedor de la cámara de procesos en paquetes de pruebas que pueden necesitar inicializar CameraX de diferentes maneras entre las pruebas. (I9eca7).
  • Se agregaron APIs para configurar el rango dinámico, la velocidad de fotogramas y el modo de espejo de video (Ifb8f7).
  • OutputSize dejó de estar disponible y reemplázalo por ResolutionSelector. ResolutionSelector es una forma más completa de seleccionar resoluciones y es coherente con la API de Camera-Core. (I93abd, b/286801438).

Correcciones de errores

  • Se solucionó el problema de la vista previa negra en Samsung Galaxy S23 Ultra 5G cuando las extensiones Bokeh o Retoque facial se habilitaban con ImageAnalysis en la cámara posterior (I2e8b1).
  • Se corrigieron problemas de estiramiento de VideoCapture y vista previa en Moto E5 Play. (73dce2).

Versión 1.4.0-alpha01

20 de septiembre de 2023

Lanzamiento de androidx.camera:camera-*:1.4.0-alpha01. La versión 1.4.0-alpha01 contiene estas confirmaciones.

Cambios en la API

  • Se agregó una nueva API para acceder a información de amplitud de audio durante la grabación. (Id4925).

Correcciones de errores

  • Para mejorar la estabilidad de las extensiones, asegúrate de que los eventos de inicialización y desinicialización se activen en el orden correcto. (Ib3b8e).
  • Se corrigió la falla de configuración de la sesión de captura por exceder la combinación de superficie admitida debido a la adición interna de superficies repetitivas adicionales. (Id718c).
  • Se solucionó el problema de imagen grande JPEG capturada en el dispositivo Vivo S16. Las imágenes JPEG capturadas contienen datos de relleno 0 redundantes en el segmento de datos comprimidos de JFIF. Esto hace que las imágenes capturadas tengan un tamaño de archivo grande. Se quitarán los datos de padding redundantes (0) para que las imágenes capturadas tengan un tamaño de archivo de imagen normal. (I79505, b/299069235).
  • Se solucionó el problema por el que ImageAnalysis no se podía vincular con ImageCapture y la vista previa cuando algunos modos de extensión estaban habilitados en algunos dispositivos La corrección mostrará el valor correcto cuando las apps consulten la disponibilidad de ImageAnalysis a través de ExtensionsManager#isImageAnalysisSupported(). (I7d538).
  • Se actualizó JavaDoc para que coincida con el comportamiento. En lugar de completarse de inmediato, #setZoomRatio, #setLinearZoom y #enableTorch esperan hasta que la cámara esté lista. También se agregó información sobre cómo obtener el campo visual máximo con la API de #takePicture. (I23588).

Versión 1.3

Versión 1.3.2

6 de marzo de 2024

Lanzamiento de androidx.camera:camera-*:1.3.2. La versión 1.3.2 contiene estas confirmaciones.

Correcciones de errores

  • Se solucionó un problema de metadatos de JPEG en dispositivos Samsung A24 CameraX ahora guarda imágenes con precisión, y la función ImageProxy.toBitmap() muestra los objetos del mapa de bits correctos. (I8d6eb, b/309005680).
  • Se quitó la opción de resolución 9280 × 6944 en dispositivos Redmi Note 9 Pro debido a ciertos problemas. (Ia23da).

Versión 1.3.1

13 de diciembre de 2023

Lanzamiento de androidx.camera:camera-*:1.3.1. La versión 1.3.1 contiene estas confirmaciones.

Correcciones de errores

Se mejoró el rendimiento de ProcessCameraProvider#bindToLifecycle(). El cambio principal consiste en optimizar el proceso de identificación de las combinaciones de tamaño más adecuadas para UseCases. Los resultados óptimos varían según las combinaciones específicas de UseCase y la cantidad de tamaños de salida admitidos para los dispositivos de destino. (I454f2).

A continuación, se muestran algunos resultados de referencia para diversas situaciones:

  • Cuatro UseCases: Preview + ImageCapture + ImageAnalysis + VideoCapture

    • Google Pixel 7: Entre 430 ms y 60 ms aproximadamente
    • Samsung Galaxy S23 Ultra: aproximadamente entre 540 ms y 45 ms
    • Samsung A53 5G: Entre 115 ms y 70 ms aproximadamente
  • Tres UseCases: Preview + ImageCapture + ImageAnalysis

    • Google Pixel 7: Entre 9 ms y 7 ms aproximadamente
    • Samsung Galaxy S23 Ultra: aproximadamente entre 6 ms y 5 ms
    • Samsung A53 5G: Entre 32 ms y 12 ms aproximadamente
  • Se agregó Snapdragon 480 a CameraUseInconsistentTimebaseQuirk. Esto soluciona un problema en Android 12 para dispositivos que usan este chipset, en el que el audio de las grabaciones se compensa por la cantidad de tiempo que el dispositivo está en estado de suspensión. (I58010).

Versión 1.3.0

18 de octubre de 2023

Lanzamiento de androidx.camera:camera-*:1.3.0. La versión 1.3.0 contiene estas confirmaciones.

Cambios importantes desde 1.2.0

Versión 1.3.0-rc02

20 de septiembre de 2023

Lanzamiento de androidx.camera:camera-*:1.3.0-rc02. La versión 1.3.0-rc02 contiene estas confirmaciones.

Correcciones de errores

  • Para mejorar la estabilidad de las extensiones, asegúrate de que los eventos de inicialización y desinicialización se activen en el orden correcto. Esto solucionó algunos problemas de vista previa en negro que se producían cuando se cambiaba de modo de extensiones o de cámara. (Iddaac).
  • Se solucionó el problema por el que ImageAnalysis no se podía vincular con ImageCapture y la vista previa cuando algunos modos de extensión estaban habilitados en algunos dispositivos La corrección mostrará el valor correcto cuando las apps consulten la disponibilidad de ImageAnalysis a través de ExtensionsManager#isImageAnalysisSupported(). (I7d538).
  • Se solucionó el problema por el que el audio y el video grabado no estaban sincronizados cuando se habilitaba el modo de duplicación en Xiaomi Poco X3 NFC. (I20b4c).

Versión 1.3.0-rc01

23 de agosto de 2023

Lanzamiento de androidx.camera:camera-*:1.3.0-rc01. La versión 1.3.0-rc01 contiene estas confirmaciones.

Cambios en la API

  • Se agregó PendingRecording.asPersistentRecording para permitir que una grabación se grabe de forma continua mientras que la VideoCapture a la que está conectada su grabadora se rebota. (I517c6).

Correcciones de errores

  • Se corrigió una falla que se producía cuando se compartía una transmisión con VideoCapture y la vista previa También se corrigió una pantalla negra en dispositivos HEREDADOS cuando se habilitaba la función para compartir transmisión.
  • Se corrigió el problema de la imagen JPEG capturada de gran tamaño en dispositivos de la serie Samsung S7 (SM-G930T, SM-G930V). Las imágenes JPEG capturadas contienen datos de relleno 0 redundantes en el segmento de datos comprimidos de JFIF. Esto hace que las imágenes capturadas tengan un tamaño de archivo grande. Se quitarán los datos de padding redundantes (0) para que las imágenes capturadas tengan un tamaño de archivo de imagen normal. (I407b0, b/288828159).
  • Se corrigió el problema de la imagen JPEG capturada de gran tamaño en dispositivos de las series Samsung S22 (SM-S901B, SM-S901B/DS) y S22+ (SM-S906B). Las imágenes JPEG capturadas contienen datos de relleno 0 redundantes en el segmento de datos comprimidos de JFIF. Esto hace que las imágenes capturadas tengan un tamaño de archivo grande, de aproximadamente 13 MB, en el dispositivo SM-S901B/DS S22. Se quitarán los datos de padding redundantes (0) para que las imágenes capturadas tengan un tamaño de archivo de imagen normal. (I73be9, b/288828159).
  • Se solucionó el problema de imagen JPEG grande capturada en dispositivos Samsung de las series A5, A52, A70 y A72 Las imágenes JPEG capturadas contienen datos de relleno 0 redundantes en el segmento de datos comprimidos de JFIF. Esto hace que las imágenes capturadas tengan un tamaño de archivo extremo (por ejemplo, 32 MB o incluso 96 MB). Se quitarán los datos de padding redundantes (0) para que las imágenes capturadas tengan un tamaño de archivo de imagen normal. (I97c4d, b/288828159).
  • Se solucionó la falla por error en código nativo que se producía cuando se tomaban fotos con las extensiones habilitadas (I698f5).

Versión 1.3.0-beta02

26 de julio de 2023

Lanzamiento de androidx.camera:camera-*:1.3.0-beta02. La versión 1.3.0-beta02 contiene estas confirmaciones.

Correcciones de errores

  • Usa la linterna como flash para las variantes del Pixel 4 y 5 para mejorar la calidad de la captura con poca luz (I56ff5, b/280221967).
  • Se solucionó el problema de imagen JPEG grande capturada en dispositivos de la serie Samsung A5 (2017). Las imágenes JPEG capturadas contienen datos de relleno 0 redundantes en el segmento de datos comprimidos de JFIF. Esto hace que las imágenes capturadas tengan un tamaño de archivo de aproximadamente 32 MB. Se quitarán los datos de padding redundantes (0) para que las imágenes capturadas tengan un tamaño de archivo de imagen normal. (I29837, b/288828159).
  • Se corrigió el reintento que no se activaba correctamente en caso de que se fallara la captura en dispositivos problemáticos mencionados en CaptureFailedRetryQuirk. (I7b589).

Versión 1.3.0-beta01

21 de junio de 2023

Lanzamiento de androidx.camera:camera-*:1.3.0-beta01. La versión 1.3.0-beta01 contiene estas confirmaciones.

Cambios en la API

  • Se cambió el nombre de la función ResolutionSelector.Builder#setHighResolutionEnabledFlag(int) a setAllowedResolutionMode y el nombre de las constantes ResolutionSelector#HIGH_RESOLUTION_FLAG_OFF/ON a PREFER_CAPTURE_RATE_OVER_HIGHER_RESOLUTION/PREFER_HIGHER_RESOLUTION_OVER_CAPTURE_RATE (If84e8).
  • Se quitaron las APIs obsoletas de ImageAnalysis.setTargetRotationDegrees(int), ImageCapture.setTargetRotationDegrees(int) y VideoCapture.setTargetRotationDegrees(int) (Id8e77).
  • La clase DynamicRange representa el rango dinámico de imágenes. Se puede usar para seleccionar formatos de alto rango dinámico como resultado de VideoCapture a VideoCapture.Builder#setDynamicRange(). (Ib0377).
  • Se agregó una API de isImageAnalysisSupported a ExtensionsManager, que las apps pueden determinar si se puede vincular un caso de uso de ImageAnalysis junto con la vista previa y ImageCapture cuando se habilitan las extensiones (I1bc63).
  • La nueva clase VideoCapabilities obtenida de Recorder se puede usar para consultar las calidades y los rangos dinámicos admitidos para la grabación de video en el dispositivo. Los métodos getSupportedQualities() y isQualitySupported() de QualitySelector dejarán de estar disponibles. En su lugar, usa los métodos getSupportedQualities() y isQualitySupported() de VideoCapabilities. (I04014).
  • Se cambió el nombre de CameraController#setVideoCaptureTargetQuality() por setVideoCaptureQualitySelector y toma el argumento QualitySelector, lo que proporciona más flexibilidad para la configuración de la calidad de video. CameraController#getVideoCaptureTargetQuality() se cambia a getVideoCaptureQualitySelector según corresponda. (I520ed).
  • Se quitó la anotación experimental para las funciones de video. Las funciones de video ya son estables. (I1a113).

Correcciones de errores

  • Usa la linterna como flash en los modelos Samsung SM-A320 para mejorar la velocidad y la calidad de la imagen capturada con poca luz. (I6a022, b/286190938).
  • Se agregó compatibilidad con el formato ImageFormat.JPEG para ImageProxy.toBitmap(). Si el array de bytes JPEG no se puede decodificar, se arrojará una UnsupportedOperationException. (I81958, b/282057603).

Versión 1.3.0-alpha07

24 de mayo de 2023

Lanzamiento de androidx.camera:camera-*:1.3.0-alpha07. La versión 1.3.0-alpha07 contiene estas confirmaciones.

Nuevas funciones

  • La nueva API de VideoCapture.Builder# setTargetFrameRate(Range) permite capturar grabaciones de video con otras velocidades de fotogramas además de las predeterminadas del dispositivo. Las velocidades de fotogramas disponibles para las grabaciones se pueden consultar a través de la nueva API de CameraInfo#getSupportedFrameRates().

Cambios en la API

  • Se cambió el nombre de las constantes ResolutionSelector#HIGH_RESOLUTION_FLAG_OFF/ON por ALLOWED_RESOLUTIONS_NORMAL/SLOW y el nombre de la función setHighResolutionEnabledFlag del compilador por setAllowedResolutionMode (Iae817).
  • CameraInfo#getSupportedFrameRateRanges() ahora muestra un Set en lugar de un List para representar mejor que los rangos no están ordenados (I02f43).
  • Se agregó un objeto de escucha de errores a CameraEffect para controlar los errores irrecuperables (Ice471).
  • Se agregó un constructor público en ResolutionInfo para mejorar la capacidad de prueba (If6d1c).
  • Se proporcionó una API de UseCase.snapToSurfaceRotation(int) para reemplazar el uso de setTargetRotationDegrees y dar de baja las APIs ImageAnalysis.setTargetRotationDegrees(int), ImageCapture.setTargetRotationDegrees(int) y VideoCapture.setTargetRotationDegrees(int) (Ia9010).
  • Se agregaron nuevas APIs de Preview#getTargetFrameRate y Preview.Builder#setTargetFrameRate para poder establecer y recuperar la velocidad de fotogramas objetivo para el caso de uso de vista previa (If4f22).
  • VideoRecordEvent.Finalize ahora se completará con el código de error ERROR_RECORDING_GARBAGE_COLLECTED cuando se detenga el objeto Recording debido a la recolección de elementos no utilizados (Iba974).

Correcciones de errores

  • Se corrigió NullPointerException cuando los tamaños de salida almacenados en caché en StreamConfigurationMapCompat son nulos. (Idf124, b/282025204).
  • Se solucionó el problema por el que Preview.setSurfaceProvider(null) no pausaba la vista previa en Extensiones (Ia903e).
  • Se solucionó un problema por el que se arrojaba ConcurrentModificationException durante la apertura de la cámara cuando se vinculaba VideoCapture (Ic8ac4).

Versión 1.3.0-alpha06

19 de abril de 2023

Lanzamiento de androidx.camera:camera-*:1.3.0-alpha06. La versión 1.3.0-alpha06 contiene estas confirmaciones.

Nuevas funciones

  • La cámara simultánea es una nueva función que se introdujo a partir de Android 11 y que admite la transmisión simultánea de dispositivos de cámara; por ejemplo, permite que un dispositivo tenga las cámaras frontal y posterior funcionando al mismo tiempo. Actualmente, CameraX solo admite dos cámaras simultáneas, lo que permite que dos cámaras funcionen al mismo tiempo, con un máximo de dos {@link UseCase} vinculados para cada una. La resolución máxima es de 720p o 1440p. Obtén más información en el siguiente vínculo; consulta CameraManager#getConcurrentCameraIds().
  • Presentamos la nueva API de ResolutionSelector, que abarca las siguientes funciones:
    • Las aplicaciones pueden especificar estrategias de relación de aspecto y resolución para seleccionar la mejor resolución para sus necesidades.
    • Todos los tamaños y los parámetros de relación de aspecto se expresan en las coordenadas del sensor del dispositivo de la cámara.
    • Las aplicaciones pueden implementar un filtro de resolución personalizado para organizar los tamaños admitidos en el orden deseado.
    • Las aplicaciones también pueden habilitar la captura de alta resolución para obtener imágenes de mayor resolución. Sin embargo, ten en cuenta que, si usas una resolución alta, es posible que los tiempos de captura sean más lentos.
    • Se agregaron APIs de duplicación VideoCapture. Los videos que grabó VideoCapture no se duplican de forma predeterminada. Sin embargo, la vista previa de la cámara se duplica en la cámara frontal de forma predeterminada. Las APIs de duplicación de VideoCapture permiten alinearse con la vista previa de la cámara cuando se usa la cámara frontal. Hay tres MirrorMode, OFF, ON y ON_FRONT_ONLY. Para alinear la vista previa de la cámara, se recomienda usar ON_FRONT_ONLY, lo que significa que el reflejo no está habilitado para la cámara posterior, pero sí para la cámara frontal.

Cambios en la API

  • Se expuso la API nueva de ResolutionSelector. Las aplicaciones pueden especificar estrategias de relación de aspecto y resolución con reglas de resguardo o un filtro de resolución personalizado para obtener los resultados deseados. Las aplicaciones pueden especificar una marca para habilitar la captura de alta resolución. Esto permitirá que CameraX seleccione resoluciones más altas cuando tomes fotos o grabes videos. Sin embargo, ten en cuenta que, si usas una resolución alta, es posible que los tiempos de captura sean más lentos. (Ibed95).
  • Los rangos de FPS que admite el algoritmo AE ahora se pueden consultar a través de CameraInfo#getSupportedFrameRateRanges(). (Iaa67f).
  • Consolida los nombres de todos los métodos de velocidad de fotogramas en FrameRate. Se corrigió el error de javadoc en VideoCapture#getTargetFrameRate() (I83304).
  • Se dieron de baja las APIs heredadas de setTargetAspectRatio y setTargetResolution. En su lugar, usa la nueva API de ResolutionSelector. (I542c3).
  • Se agregaron APIs públicas para la cámara dual simultánea, incluida la siguiente:
    1. List<List<CameraInfo>> getAvailableConcurrentCameraInfos()
    2. ConcurrentCamera bindToLifecycle(@NonNull ConcurrentCameraConfig concurrentCameraConfig)
    3. boolean isConcurrentCameraModeOn() y ConcurrentCameraConfig, SingleCameraConfig y ConcurrentCamera (Iab1c1)
  • Se convirtió ImageProcessor.Response#getOutputImage en NonNull (Ib9c60).
  • Se agregaron APIs de duplicación de VideoCapture, incluidas VideoCapture.Builder.setMirrorMode(int) y VideoCapture.getMirrorMode(). Las APIs son útiles para las aplicaciones que requieren que la grabación de video sea coherente con el comportamiento común de la vista previa de la cámara; es decir, la vista previa de la cámara posterior no se duplica, pero la vista previa de la cámara frontal sí. (I713b6, b/194634656).
  • Se agregó la API de setTargetFrameRate() en VideoCapture.Builder y la API de getTargetFramerate() en VideoCapture (I109d4).
  • Se hizo que SurfaceOutput extendiera Closable y se oculte el constructor público de SurfaceOutput.Event. (I60ea8).
  • Se agregó Recording.mute para silenciar o activar de forma dinámica una grabación en procesamiento RecordingStats contendrá AudioStats.AUDIO_STATE_MUTED cuando se silencie explícitamente la grabación en procesamiento. (Ie17fc).
  • El parámetro #setEffects() se volvió no nulo. Se agregó una API de #clearEffects() para borrar efectos La app debe llamar a #clearEffects() para quitar efectos. (I4b4d9).
  • Se agregó un segundo constructor para que ViewfinderSurfaceRequest.Builder tome un compilador para el constructor de copias (I621a7).

Correcciones de errores

  • Se solucionó el problema por el que las apps que invocaban la API de Extensions podían fallar al cerrar la cámara (Ib27e5).
  • Se solucionó un problema por el que VideoCapture no podía funcionar con la cámara frontal en algunos dispositivos Por ejemplo, en Samsung Galaxy S23 y Xiaomi 2107113SG. (Ibec7e, b/270656244).
  • Se solucionó el problema por el que la toma de fotos con Archivo en la carpeta pública del almacenamiento externo siempre fallaba en Android 10 o versiones posteriores. Ten en cuenta que, en Android 10, para tomar fotos con un Archivo en la carpeta pública del almacenamiento externo, también debes configurar requestLegacyExternalStorage como verdadero en la etiqueta de la aplicación. (I11b2c).
  • Se corrigió una falla de RejectedExecutionException en DefaultSurfaceProcessor. La falla podría ocurrir cuando VideoCapture está vinculado y la actividad se pausa. (Idb46a, b/273713906).

Versión 1.3.0-alpha05

22 de marzo de 2023

Lanzamiento de androidx.camera:camera-*:1.3.0-alpha05. La versión 1.3.0-alpha05 contiene estas confirmaciones.

Cambios en la API

  • Se agregaron las APIs de rotación de VideoCapture, incluidas VideoCapture.Builder.setTargetRotation(int), VideoCapture.setTargetRotation(int), VideoCapture.setTargetRotationDegrees(int) y VideoCapture.getTargetRotation() Las APIs son útiles para aplicaciones que bloquean la orientación del dispositivo. También se agregaron ImageCapture.setTargetRotationDegrees(int) y ImageAnalysis.setTargetRotationDegrees(int). (Id3ffe, b/205242781).
  • Permitir VIDEO_CAPTURE y PREVIEW|VIDEO_CAPTURE como destino de efectos. Los efectos orientados a VIDEO_CAPTURE se aplicarán al caso de uso de VideoCapture. Los efectos orientados a PREVIEW|VIDEO_CAPTURE se aplicarán a una transmisión compartida antes de copiarla en la vista previa y en transmisión de VideoCapture. (Iee6f3).

Correcciones de errores

  • A partir de Cámara 1.2.2: Se solucionó el problema por el que las extensiones de CameraX no funcionaban correctamente cuando ProGuard estaba habilitado en algunos dispositivos, como Pixel (I90aa2).
  • Se corrigió un error PreviewView que, si la app controla la orientación de la pantalla, la vista previa podría distorsionarse al rotarse Esto solo sucede en algunos dispositivos. Se puede reproducir en Pixel a4, Pixel 5 y Pixel 6a. (I14340, b/223488673).

Versión 1.3.0-alpha04

22 de febrero de 2023

Lanzamiento de androidx.camera:camera-*:1.3.0-alpha04. La versión 1.3.0-alpha04 contiene estas confirmaciones.

Nuevas funciones

Es una función nueva que admite combinaciones de Surface que anteriormente no se admitían, ya que comparte una transmisión con varios UseCases.

  • Anteriormente, cuando se vinculaba "Preview, VideoCapture, ImageAnalysis" en el nivel de hardware de la cámara FULL o inferior, o vinculabas "Preview, VideoCapture, ImageCapture" en el nivel de hardware HEREDADO, CameraX arrojaba IllegalArgumentException.
  • El comportamiento nuevo es que las vinculaciones funcionarán sin arrojar excepciones. En cambio, CameraX usa OpenGL para copiar una transmisión compartida en Preview y VideoCapture.
  • Debido al costo de la copia del búfer, es posible que la app experimente un aumento en la latencia y el consumo de energía.

Cambios en la API

  • Se agregó la API para convertir ImageProxy en Bitmap Los formatos ImageProxy admitidos son ImageFormat.YUV_420_888 y PixelFormat.RGBA_8888. Si el formato no es válido, se arrojará IllegalArgumentException. (Ic7110).
  • Se agregó CoroutineCameraViewfinder para admitir la configuración del visor con funciones de suspensión en Kotlin (I657bc).
  • Se agregó un nuevo constructor público para ViewfinderSurfaceRequest Proporciona flexibilidad cuando el usuario no puede proporcionar CameraCharacteristics. (Ie6549).

Correcciones de errores

  • Se corrigió la falla de las extensiones que se producía en algunos dispositivos Samsung cuando se pausaba o reanudaba la app demasiado rápido (Iaca26).

Versión 1.3.0-alpha03

25 de enero de 2023

Lanzamiento de androidx.camera:camera-*:1.3.0-alpha03. La versión 1.3.0-alpha03 contiene estas confirmaciones.

Cambios en la API

  • Se agregó CameraInfo.getIntrinsicZoomRatio para proporcionar información sobre el ángulo de visión en relación con la cámara predeterminada (Ib300c).
  • Se agregó CameraInfo.getLensFacing para proporcionar información de la lente. Se agregó CameraSelector#LENS_FACING_EXTERNAL como función experimental para seleccionar cámaras externas (Icaf3e).
  • Agrega #setEffect() a CameraController, que permite agregar efectos a la salida de la cámara (I1d21f).
  • Se agregó el método invalidate() a SurfaceRequest. El proveedor de Surface puede notificar que la plataforma proporcionada anteriormente ya no es válida (Idc649).
  • Se agregó una API de ImageProcessor. Esta interfaz es para insertar efectos de posprocesamiento en la canalización de ImageCapture (I575c6).
  • Se agregó la API de Recorder.Builder.setAspectRatio(), que se puede combinar con QualitySelector para admitir más resoluciones de video (I8a082).
  • Se agregó Recorder.Builder#setTargetVideoEncodingBitRate para establecer la BitRate de la codificación del video objetivo y Recorder#getTargetVideoEncodingBitRate para obtener la tasa de bits de la codificación del video objetivo (I5984d).

Correcciones de errores

  • Se corrigió un error de ImageCapture que se producía cuando no había unidades de flash y el modo de flash estaba activado (I9e8b4, b/263391112).
  • Se corrigió el error de corrupción de imágenes JPEG cuando se escribían datos de ubicación EXIF en algunos dispositivos Samsung con Android 12 (Ib7086, b/263747161, b/263289024).
  • Cuando se configura el modo linterna o zoom antes de que se complete la inicialización de la cámara, p. ej., cuando se llama a CameraController#enableTorch, la acción pendiente se almacena en caché y se envía una vez que se completa la inicialización (I11e92, b/264157663).

Versión 1.3.0-alpha02

7 de diciembre de 2022

Lanzamiento de androidx.camera:camera-*:1.3.0-alpha02. La versión 1.3.0-alpha02 contiene estas confirmaciones.

Cambios en la API

  • Se agregó una nueva API para aplicar el efecto de posprocesamiento a la vista previa de salida (Ic17d5).
  • Se cambió el nombre de OutputOptions.getDurationLimit por OutputOptions.getDurationLimitMillis y el de OutputOptions.setDurationLimit por OutputOptions.setDurationLimitMillis (I91f0c).
  • Se agregó la clase AudioConfig para controlar el parámetro de configuración de audio mientras se graba un video. La anotación @RequiresPermission se traslada de las funciones startRecording a AudioConfig para evitar solicitudes de permisos innecesarias para los casos en que no se necesita audio (I28755).
  • Se quitaron las clases OnVideoSavedCallback, OutputFileOptions, OutputFileResults y Metadatos que ya no se usan después de aplicar la nueva API de captura de video (I38cd8).
  • Aplica la nueva API de captura de video. Los métodos getVideoCaptureTargetSize y setVideoCaptureTargetSize se reemplazan por los métodos getVideoCaptureTargetQuality y setVideoCaptureTargetQuality, debido a que setTargetResolution ya no es compatible (I2a1d5).

Correcciones de errores

  • Se quitó la API core.VideoCapture obsoleta (I531e0).
  • Se solucionó el problema por el que no se llamaba a la devolución de llamada onError cuando se tomaban fotos sin el permiso de almacenamiento (I936db, b/244807669).
  • Mejora la calidad y la confiabilidad de las extensiones de cámara. Las extensiones de cámara se inhabilitaron en los dispositivos Motorola que usan la versión 1.1.0 y anteriores debido a problemas con la compatibilidad con Bokeh, la captura de imágenes y la vista previa sin reanudar (Id3ce3).
  • Se corrigió la falla por error en código nativo que se producía cuando se habilitaba el recorte de video mediante ViewPort en dispositivos heredados (I16b8a, b/251357665).

Versión 1.3.0-alpha01

9 de noviembre de 2022

Lanzamiento de androidx.camera:camera-*:1.3.0-alpha01. La versión 1.3.0-alpha01 contiene estas confirmaciones.

Nuevas funciones

  • Camera-viewfinder se publicó oficialmente. Camera-viewfinder proporciona un widget de visor básico que puede mostrar el feed de la cámara de Camera2. Revisa el código de muestra para ver un ejemplo.

Cambios en la API

  • Se agregó OutputOptions.setDurationLimit para permitir la configuración del límite de duración de video. La grabación finalizará automáticamente cuando se exceda el límite de duración especificado. (I902a0)
  • Agrega el estado de error de audio de grabación de video AudioStats.AUDIO_STATE_SOURCE_ERROR. Se envía cuando la configuración de la fuente de audio falla o se produce algún error. (I37410)

Correcciones de errores

  • Agrega la peculiaridad para permitir que algunos dispositivos problemáticos vuelvan a intentar la captura una vez cuando se encuentren fallas. (Id4795)
  • Se solucionó el problema de pantalla negra de la implementación de PreviewView SurfaceView en ViewPager2. Como parte de la corrección, PreviewView volverá a usar su SurfaceView si no se cambia la resolución solicitada. (Ib3f27)
  • Se agregó compatibilidad con el recorte de videos (función WYSIWYG) cuando se usa la API de ViewPort o CameraController. (Ifbba8, b/201085351)
  • Se solucionó el problema por el que el video capturado con la cámara frontal no se podía grabar en Huawei P40 lite. (I87c57, b/250807400)

Versión 1.2

Versión 1.2.3

24 de mayo de 2023

Lanzamiento de androidx.camera:camera-*:1.2.3. La versión 1.2.3 contiene estas confirmaciones.

Correcciones de errores

  • Se solucionó un problema por el que VideoCapture no podía funcionar con la cámara frontal en algunos dispositivos Por ejemplo, en Samsung Galaxy S23 y Xiaomi 2107113SG. (Ibec7e, b/270656244).

Versión 1.2.2

22 de marzo de 2023

Lanzamiento de androidx.camera:camera-*:1.2.2. La versión 1.2.2 contiene estas confirmaciones.

Correcciones de errores

  • Se solucionó el problema por el que las extensiones de CameraX no funcionaban correctamente cuando ProGuard estaba habilitado en algunos dispositivos, como Pixel (I90aa2).

Versión 1.2.1

25 de enero de 2023

Lanzamiento de androidx.camera:camera-*:1.2.1. La versión 1.2.1 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió el error de corrupción de imágenes JPEG cuando se escribían datos de ubicación EXIF en algunos dispositivos Samsung con Android 12 (b/263289024).

Versión 1.2.0

7 de diciembre de 2022

Lanzamiento de androidx.camera:camera-*:1.2.0. La versión 1.2.0 contiene estas confirmaciones.

Cambios importantes desde la versión 1.1.0

  • Nueva biblioteca camera-mlkit-vision. Integra CameraX fácilmente con muchas funciones de MLKit, como escaneo de código de barras, detección de rostro, detección de texto, etc. Se agregó MLKitAnalyzer como APIs nuevas.
  • Nueva API de retraso sin obturador experimental. Optimiza la canalización de captura para tener una mejor latencia mientras mantienes una buena calidad de la imagen. Cuando el modo de captura está configurado en CAPTURE_MODE_ZERO_SHUTTER_LAG, se hace clic en la latencia entre el botón del obturador y se espera que la foto que se toma se minimice, en comparación con otros modos de captura. En los dispositivos que no son compatibles con ZERO_SHUTTER_LAG, se recurrirá a CAPTURE_MODE_MINIMIZE_LATENCY.
  • android.camera.core.VideoCapture dejó de estar disponible.
  • Se agregó setStreamUseCase() como una API pública de Camera2Interop.
  • Se agregó el requisito de nivel de API para setOutputImageRotationEnabled.
  • Se cambió el nombre de ImageAnalysis.Analyzer#getTargetResolutionOverride() a ImageAnalysis.Analyzer#getDefaultTargetResolution().
  • Se agregó la API para configurar metadatos de ubicación en el video guardado.
  • Se corrigió la velocidad de fotogramas baja cuando se aplican los casos de uso de VideoCapture y de vista previa con una relación de aspecto de 16:9.
  • Se solucionó el problema de la vista previa en negro que se producía cuando se habilitaba la extensión BOKEH en algunos dispositivos Samsung y el usuario cambiaba de cámara
  • Se corrigió problema extendido de Preview/VideoCapture en Samsung J7 Prime (SM-G610M) y J7 (SM-J710MN), en dispositivos con el nivel de API 27.
  • Se inhabilitó la solución alternativa para girar horizontalmente la región AF de las cámaras frontales en Samsung y Android T, ya que se solucionó el problema.

Versión 1.2.0-rc01

24 de octubre de 2022

Lanzamiento de androidx.camera:camera-*:1.2.0-rc01. La versión 1.2.0-rc01 contiene estas confirmaciones.

Cambios en la API

  • Se agregó la API de setStreamUseCase para OutputConfiguration. El usuario puede especificar el caso de uso de Stream para la sesión de transmisión y anular las lógicas internas de CameraX que lo eligen, a fin de realizar optimizaciones según sus necesidades (Ib1a95).

Correcciones de errores

  • Se corrigió problema extendido de Preview/VideoCapture en Samsung J7 Prime (SM-G610M) y J7 (SM-J710MN), en dispositivos con el nivel de API 27. La resolución 1920 x 1080 hace que las imágenes Preview/VideoCapture se estiren. Se agregó una solución alternativa a fin de no seleccionar la resolución de 1920 x 1080 para la vista previa o la VideoCapture y así evitar el problema de estiramiento de la imagen (I0e04e).
  • Se corrigió la velocidad de fotogramas baja cuando se aplican los casos de uso de VideoCapture y vista previa con una relación de aspecto de 16:9 en algunos dispositivos Huawei (If8c88, b/223643510).
  • Se corrigió un error que se producía al intentar abrir la cámara cuando no estaba configurado el SurfaceProvider de la vista previa. Como parte de la corrección, la vista previa sin SurfaceProvider establecido ahora no se configurará en la sesión de captura de la cámara (I99681).

Versión 1.2.0-beta02

21 de septiembre de 2022

Lanzamiento de androidx.camera:camera-*:1.2.0-beta02. La versión 1.2.0-beta02 contiene estas confirmaciones.

Cambios en la API

  • Se agregó un requisito de nivel de API para setOutputImageRotationEnabled (I26e3e y b/240993561).

Correcciones de errores

  • Se inhabilitó la solución alternativa para girar horizontalmente la región AF de las cámaras frontales en Samsung y Android T, ya que se solucionó el problema (I05f69).
  • Se solucionó el problema de la vista previa en negro que se producía cuando se habilitaba la extensión BOKEH en algunos dispositivos Samsung y el usuario cambiaba de cámara (If6168).

Versión 1.2.0-beta01

24 de agosto de 2022

Lanzamiento de androidx.camera:camera-*:1.2.0-beta01. La versión 1.2.0-beta01 contiene estas confirmaciones.

Nuevas funciones

  • Nueva biblioteca camera-mlkit-vision. Integra de manera sencilla CameraX con muchas funciones de MLKit, como escaneo de código de barras, detección de rostro, detección de texto, etc. Encuentra el código de muestra aquí.
  • Nueva API de retraso sin obturador experimental. Optimiza la canalización de captura para tener una mejor latencia mientras mantienes una buena calidad de la imagen. Cuando el modo de captura está configurado en CAPTURE_MODE_ZERO_SHUTTER_LAG, se hace clic en la latencia entre el botón del obturador y se espera que la foto que se toma se minimice, en comparación con otros modos de captura. En los dispositivos que no admiten ZERO_SHUTTER_LAG, se recurrirá a CAPTURE_MODE_MINIMIZE_LATENCY.
  • ImageAnalysis.Analyzer y MLKitAnalyzer ahora son APIs oficiales.
  • Se expuso la API para configurar metadatos de ubicación en el video guardado.
  • Se cambió el nombre de ImageAnalysis.Analyzer#getTargetResolutionOverride() por ImageAnalysis.Analyzer#getDefaultTargetResolution().

Correcciones de errores

  • Se corrigió el problema de captura de imágenes de Alps k61v1_basic_ref. Las imágenes JPEG capturadas de la HAL tienen metadatos EXIF incorrectos. Los metadatos EXIF no tienen la etiqueta 0xffd9 ni 0xffda para que ExifInterface analice correctamente los atributos. Se puede capturar las imágenes en formato YUV y, luego, comprimirlas en imágenes JPEG de salida para solucionar este problema (I45abb).

Versión 1.2.0-alpha04

27 de julio de 2022

Lanzamiento de androidx.camera:camera-*:1.2.0-alpha04. La versión 1.2.0-alpha04 contiene estas confirmaciones.

Cambios en la API

  • Se cambió el nombre de ImageAnalysis.Analyzer#getTargetResolutionOverride() por ImageAnalysis.Analyzer#getDefaultTargetResolution(). También se cambió el comportamiento para que el valor de ImageAnalysis#setTargetResolution() pueda anular el valor que muestra este método (If1d36).
  • Se expuso la API para configurar metadatos de ubicación en el video guardado. Se puede configurar un objeto android.location.Location a través de la nueva API androidx.camera.video.OutputOptions.Builder.setLocation(Location) (I313a0, b/204197544).

Correcciones de errores

  • Se corrigió el problema para tomar una foto con la vista previa de desvinculación (Ie70b6, b/235119898).
  • Se corrigió una falla en Recorder que se producía cuando se intentaba grabar mientras la fuente de audio no estaba disponible (I9f652).

Versión 1.2.0-alpha03

29 de junio de 2022

Lanzamiento de androidx.camera:camera-*:1.2.0-alpha03. La versión 1.2.0-alpha03 contiene estas confirmaciones.

Cambios en la API

  • Se quitó la anotación experimental para ImageAnalysis.Analyzer y MLKitAnalyzer (I0ff22).

Correcciones de errores

  • Se agregó un tiempo de espera predeterminado de 5,000 ms para el enfoque automático que completará la parte de AF con isFocusSuccessful como falso si no se cancela FocusMeteringAction y la parte de AF no se converge en la duración (Ibc2e3).
  • Se corrigió el problema para tomar una foto con la vista previa de desvinculación (I1d3a2, b/235119898).
  • Se habilitó la implementación de extensores avanzados y se actualizó la versión de interfaz de extensiones de CameraX a la versión 1.2 (I92256).

Versión 1.2.0-alpha02

1 de junio de 2022

Lanzamiento de androidx.camera:camera-*:1.2.0-alpha02. La versión 1.2.0-alpha02 contiene estas confirmaciones.

Nuevas funciones

  • Se expuso la API de retraso de obturador cero de CameraX como experimental.

Cambios en la API

  • Agrega el nuevo modo de captura CAPTURE_MODE_ZERO_SHUTTER_LAG en ImageCapture y agrega isZslSupported en CameraInfo para consultar la capacidad del dispositivo. El modo CAPTURE_MODE_ZERO_SHUTTER_LAG tiene como objetivo proporcionar la latencia mínima para la captura instantánea. Se implementa en función de un búfer de anillo, que almacena en caché los resultados de captura intermedia para su reprocesamiento posterior cuando el usuario presiona los botones para tomar fotos. Si {@link VideoCapture} está vinculado o el modo del flash no está DESACTIVADO o la extensión del OEM está ACTIVADA, este modo se inhabilitará automáticamente (I9ae74).
  • Se agregó el método ImageAnalysis.getBackgroundExecutor() (Icc945).

Correcciones de errores

  • Se corrigió el método ImageCapture de TakePicture que apaga la linterna en los dispositivos informados (Ib5eb5, b/228272227).
  • Se corrigió un error en el que no se controlaba AssertionError al obtener la característica de CONTROL_ZOOM_RATIO_RANGE (/Ia248a, b/231701345).

Versión 1.2.0-alpha01

18 de mayo de 2022

Lanzamiento de androidx.camera:camera-*:1.2.0-alpha01. La versión 1.2.0-alpha01 contiene estas confirmaciones.

Nuevas funciones

  • Se lanzó la nueva biblioteca camera-mlkit-vision

Correcciones de errores

  • Se corrigió QualitySelector que no graba un video UHD cuando se habilita una estrategia de resguardo. El problema ocurre cuando VideoCapture está vinculado con ImageCapture y la vista previa en una cámara con nivel de hardware COMPLETO o superior. Una estrategia de resguardo de QualitySelector hace que VideoCapture obtenga una resolución FHD de manera incorrecta. La resolución UHD es compatible con esta combinación de casos de uso y debe adoptarse. (I0e788, b/230651237)
  • Se corrigió NullPointerException en ImageCapture.takePicture() (I92366, b/230454568 y b/229766155).
  • Se corrigió el comportamiento de pausa asíncrona de androidx.camera.video.Recorder (Ia8ce8).

Camera-Camera2, Camera-Core, Camera-Lifecycle y Camera-Video versión 1.1.0

Versión 1.1.0

29 de junio de 2022

Lanzamiento de androidx.camera:camera-*:1.1.0. La versión 1.1.0 contiene estas confirmaciones.

Cambios importantes desde 1.0.0

  • Las bibliotecas deLand View, Extension y Video Capture como su primera versión RC. A partir de la versión 1.1.0-beta01, todas las bibliotecas de CameraX se alinearán con el mismo número de versión. Esto permitirá que los desarrolladores puedan hacer un seguimiento de las versiones de manera más sencilla y que se reduzca la complejidad de las matrices cuando se tengan muchas versiones.
  • Se introdujeron nuevas APIs y funciones públicas, incluidas las siguientes:
  • Se agregó la biblioteca oficial de cámara y video a fin de admitir casos de uso de captura de video.
  • Se agregó capacidad de conversión de YUV a RGB y rotación (ImageAnalysis.Builder.setOutputImageRotationEnabled y setOutputImageFormat)
  • Se agregó compatibilidad con el modo multiventana permitiendo que las aplicaciones de CameraX reanuden la cámara cuando la interrumpa otra app y se vuelva a enfocar.
  • Se corrigieron algunos problemas de vista previa para garantizar que CameraX funcione correctamente en dispositivos plegables.
  • Se agregó una API de CameraState que se expondrá a través de CameraInfo.
  • Se agregó una API de ProcessCameraProvider.getAvailableCameraInfos() para recuperar directamente información sobre las cámaras disponibles.
  • Se agregó el formato de salida JPEG para ImageCapture#OnImageCapturedCallback cuando las extensiones están habilitadas.
  • Se agregó una API isFocusMeteringSupported en CameraInfo que permite a las aplicaciones verificar si el FocusMeteringAction determinado es compatible con la cámara actual o no.
  • Se expuso la API de getResolutionInfo a fin de proporcionar la información de resolución para Preview, ImageCapture y ImageAnalysis.
  • Se agregó una nueva API de ImageCapture.Builder#setJpegQuality para permitir el cambio de la calidad de compresión de las imágenes JPEG de salida cuando se toman fotos.
  • Se agregó CameraSelector#filter a la API pública para filtrar una lista de CameraInfos basada en un CameraSelector.
  • Se agregó Camera2CameraControl.clearCaptureRequestOptions para borrar las opciones de solicitud de captura existentes.
  • Se agregó una API experimental para usar CameraController con bibliotecas de procesamiento de imágenes externas (p. ej., MLKit).
  • Se agregó la API experimental de CameraInfo#getCameraSelector(), que muestra un objeto CameraSelector único en su cámara.
  • Se ascendieron varias APIs experimentales a APIs públicas formales.
  • Se reemplazó la anotación @Experimental por @RequiresOptIn para las APIs experimentales. Para llamar a las APIs experimentales, usa androidx.annotation.OptIn en lugar del recurso obsoleto androidx.annotation.experimental.UseExperimental.
  • Se ascendieron las siguientes APIs experimentales a APIs oficiales: CameraXConfig.Builder#setAvailableCamerasLimiter(), CameraXConfig.Builder#setMinimumLoggingLevel(), CameraXconfig.Builder#setSchedulerHandler(), CameraXConfig#getAvailableCamerasLimiter(), CameraXConfig#getMinimumLoggingLevel(), CameraXConfig#getCameraExecutor(), CameraXConfig#getSchedulerHandler(),
  • APIs de @ExperimentalCameraFilter
  • APIs de compensación de exposición experimentales.
  • Se ascendió la API experimental de UseCaseGroup para camera-core, camera-lifecycle y camera-video. Se agregaron ViewPort#getLayoutDirection, ViewPort.Builder#setLayoutDirection y ViewPort.Builder#setScaleType para personalizar viewport.
  • Se ascendió ExperimentalUseCaseGroupLifecycle a API pública formal.
  • Cambios en las APIs existentes
  • Renamed MediaStoreOutputOptions.getCollection para MediaStoreOutputOptions.getCollectionUri.
  • Se cambió el nombre de ActiveRecording a "Recording" para reducir la verbosidad.
  • Se cambió la API de creador de QualitySelector a una API basada en listas.

Correcciones de errores

  • Se solucionó el problema YuvToJpegProcessor EOFException cuando el modo de extensión está habilitado y se configura el modo ImageCapture#CAPTURE_MODE_MAX_QUALITY.
  • Se corrigió la configuración de códec fallida debido a que se cortaba la grabación de video.
  • Se solucionó la vista previa extendida de relación de aspecto del video al grabar en FHD.
  • Se corrigieron la sincronización de audio y video después de pausar y reanudar en algunos dispositivos.
  • Se solucionó el problema por el cual se activaba el flash durante la función Presiona para enfocar (startFocusAndMetering) cuando el modo de flash se establecía en automático o siempre encendido en entornos con poca luz.

Versión 1.1.0-rc02

1 de junio de 2022

Se lanzó androidx.camera:camera-*:1.1.0-rc02. La versión 1.1.0-rc02 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió NullPointerException en ImageCapture.takePicture() (I92366, b/230454568 y b/229766155).
  • Se corrigió un error por el que AssertionError no se controlaba cuando se obtenía la característica CONTROL_ZOOM_RATIO_RANGE (Ia248a, b/231701345).

Versión 1.1.0-rc01

11 de mayo de 2022

Lanzamiento de androidx.camera:camera-*:1.1.0-rc01. La versión 1.1.0-rc01 contiene estas confirmaciones.

Nuevas funciones

  • Lanzamiento de la primera versión de RC para Camera-Video, Camera-View y Camera-Extension

Correcciones de errores

  • Se solucionó un problema en el que no se liberaba el códec de video cuando se desvinculaba VideoCapture<Recorder>, lo que provocaba que los usos posteriores de VideoCapture<Recorder> no se grabaran con MediaCodec.CodecException, especialmente en dispositivos con API 21-22 (Ie7f68).
  • No se borrarán las imágenes capturadas de CameraExtensionsActivity en ImageCaptureTest.

Versión 1.1.0-beta03

6 de abril de 2022

Lanzamiento de androidx.camera:camera-*:1.1.0-beta03. La versión 1.1.0-beta03 contiene estas confirmaciones.

Cambios en la API

  • Se restringió el constructor CaptureRequestOptions (I261b6).
  • Se agregó una API experimental para usar CameraController con bibliotecas de procesamiento de imágenes externas, p. ej., MLKit (I4ea71).

Correcciones de errores

  • Se corrigió el problema por el que la vista previa se volvía lateral en PreviewView cuando la actividad no se reiniciaba después de rotar dispositivos en el modo multiventana (I1ea36, b/223488673).
  • Se corrigió un problema del modo multiventana que cuando el foco vuelve a la app, no se reanuda la cámara cuando (1) otra app de alta prioridad abre una cámara diferente o (2) el dispositivo es un dispositivo Samsung de Android 12 (I7e9f2).
  • Se incluye una solución alternativa para los dispositivos que fallan cuando se verifica la disponibilidad del flash. Estos dispositivos no tendrán una linterna disponible (If26a3, b/216667482).
  • Se corrigió el problema AbstractMethodError que se producía cuando las apps usaban extensiones y habilitaban ProGuard (I7cbaf, b/222726805).
  • Se forzó la inhabilitación del modo de extensión de bokeh en el dispositivo Motorola Razr 5G, lo que generará un problema de pantalla de vista previa en negro (I35d49).
  • Se corrigió el problema por el que el audio o el video no estaban sincronizados después de pausar y reanudar la reproducción en algunos dispositivos Samsung antes de la API 29 (I64622, b/202798609, b/202798572).
  • Se corrigió el audio o el video que no estaban sincronizados después de pausar y reanudar la reproducción en dispositivos Sony G3125 (I2a1a5, b/202799148).
  • Se corrigió una falla que se producía cuando la grabadora encontraba un InvalidConfigException. Sin embargo, esta corrección solo evita que la app falle, pero no resuelve la causa de InvalidConfigException. Si Recorder aún no se puede configurar, las aplicaciones recibirán una devolución de llamada de error cuando comiencen a grabar (I89c29, b/213617227).

Contribución externa

  • Se actualizó la API de :compose:ui:ui-test (updateApi) debido a la migración de test-coroutines-lib (I3366d).

Versión 1.1.0-beta02

23 de febrero de 2022

Lanzamiento de androidx.camera:camera-*:1.1.0-beta02. La versión 1.1.0-beta02 contiene estas confirmaciones.

Cambios en la API

  • Se agregó la capacidad de especificar el ID de la cámara física mediante Camera2Interop (I5aed8).

Correcciones de errores

  • Se corrigió el problema de vista previa extendida en Oppo Find N (I7d004).
  • Se solucionó un problema del Galaxy J7 Prime por el que se veía distorsionada la vista previa (I4c500).
  • Usa la tasa de bits compatible para encontrar el codificador de video (d969052).

Versión 1.1.0-beta01

26 de enero de 2022

Lanzamiento de androidx.camera:camera-*:1.1.0-beta01. La versión 1.1.0-beta01 contiene estas confirmaciones.

Nuevas funciones

  • A partir de la versión 1.1.0-beta01, todas las bibliotecas de CameraX se alinearán con el mismo número de versión. Esto permitirá que los desarrolladores puedan hacer un seguimiento de las versiones mucho más fácil y se reduzca la complejidad de la matriz cuando se tienen muchas versiones.

Cambios en la API

  • Se agregó Camera2CameraControl.clearCaptureRequestOptions para borrar las opciones de solicitud de captura existentes. (Ifa07d)

Correcciones de errores

  • Se solucionó la falla que se producía cuando se grababa video en algunos dispositivos anteriores a Android O (nivel de API 26). (I88fdf, b/212328261)
  • Se corrigió el problema incorrecto de región de AF cuando se usaba cameraControl#startFocusAndMetering() en la cámara frontal del lente en dispositivos Samsung. (Ifbf59, b/210548792)
  • Se usa la linterna en el Pixel 3a o el Pixel 3a XL para mejorar la velocidad y la calidad de la imagen que se captura en la oscuridad. (Ib12b6, b/211474332)
  • Se habilitaron las aplicaciones para reanudar la cámara cuando otra aplicación de mayor prioridad en el modo multiventana la interrumpe y el enfoque vuelve a la aplicación. Ten en cuenta que puede existir alguna latencia (de 1 a 10 segundos o más) entre los cambios de enfoque y la reapertura de la cámara debido a algún problema en el framework. (I4d092)

Versión 1.1.0-alpha12

15 de diciembre de 2021

Lanzamiento de androidx.camera:camera-*:1.1.0-alpha12. La versión 1.1.0-alpha12 contiene estas confirmaciones.

Cambios en la API

  • Se quitaron las anotaciones @RequiresApi(21) innecesarias de las clases y las interfaces internas. (I8e286, b/204917951)
  • Se cambiaron las constantes de calidad y las de estrategia de resguardo de QualitySelector para que se representen con objetos de clase. Por ejemplo, QualitySelector.QUALITY_HD se cambia a Quality.HD, y QualitySelector.FALLBACK_STRATEGY_LOWER se cambia a la instancia que muestra FallbackStrategy.lowerQualityOrHigherThan(Quality). La API que se usó para crear QualitySelector se cambió a una API basada en listas. La nueva API de QualitySelector.fromOrderedList(List<Quality>) hará referencia al orden de la lista de calidad de entrada, en lugar de al orden creado por QualitySelector.Procedure. Se quitó la clase QualitySelector.Procedure. (I43343)
  • Se quitó PendingRecording.withEventListener(), y el objeto de escucha de eventos ahora se debe pasar a PendingRecording.start(). Este requisito del objeto de escucha de eventos tiene el propósito de fomentar el manejo de errores asíncronos que se informan en el evento VideoRecordEvent.Finalize. (I1e71d)
  • Se cambió el nombre de ActiveRecording por Recording para reducir la verbosidad. (I77ceb)

Correcciones de errores

  • Se solucionó el problema por el que las fotos capturadas en modo FLASH_AUTO estaban subexpuestas en condiciones oscuras en Pixel 3a y Pixel 3a XL. (I13f19, b/205373142)
  • Usa siempre el tamaño de pantalla más reciente para determinar la vista previa de Resolution. (I4a694)
  • Se filtraron las cámaras que no tienen REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE. Las cámaras con REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE tienen el conjunto mínimo de capacidades que admiten todos los dispositivos de cámara. Una cámara que no tenga REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE podría ser una que admita una funcionalidad especial y no admita la salida de color estándar. CameraX no admite los casos de uso de Preview, ImageCapture, ImageAnalysis ni VideoCapture para esas cámaras. Por lo tanto, se deberían filtrar para evitar un uso incorrecto. (Ib8cda)
  • CameraSelector#filter ya no arroja una IllegalArgumentException cuando el conjunto de resultados está vacío. (I27804)
  • Ahora se usan heurísticas más inteligentes para seleccionar la configuración del codificador según los perfiles especificados por el OEM. (Iaeef0)
  • Se corrigió la vista previa con líneas de colores entrelazadas después de iniciar la grabación de video UHD en Pixel1. (I833c6, b/205340278)

Versión 1.1.0-alpha11

17 de noviembre de 2021

Lanzamiento de androidx.camera:camera-*:1.1.0-alpha11. La versión 1.1.0-alpha11 contiene estas confirmaciones.

Cambios en la API

  • Se agregó CameraSelector#filter a la API pública para filtrar una lista de CameraInfos que se basa en CameraSelector. (I105d0)
  • Se agregó la API de setOutputImageRotationEnabled para la configuración de ImageAnalysis. El usuario puede habilitar la rotación del búfer de imágenes YUV/RGB. El grado de rotación es relativa y se calcula en función de la rotación del sensor y de destino para mantener la imagen en primer plano.

  • Se agregó la API de setOutputImageRotationEnabled para la configuración de ImageAnalysis. El usuario puede habilitar la rotación del búfer de imágenes YUV/RGB. El grado de rotación es relativa y se calcula en función de la rotación del sensor y de destino para mantener la imagen en primer plano.

    Se agregó la API de getSensorToBufferTransformMatrix en ImageInfo. La matriz que se muestra es una asignación de coordenadas de sensores a coordenadas de búfer, es decir, del valor de CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE a (0, 0, image.getWidth, image.getHeight). La matriz se puede usar para asignar las coordenadas de un {UseCase} a otro. Por ejemplo, asignar a Preview las coordenadas del rostro detectadas con ImageAnalysis. (I9ff1e)

  • Se agregó una nueva API de ImageCapture.Builder#setJpegQuality para permitir cambiar la calidad de compresión de las imágenes JPEG de salida cuando se toma una foto. (I8dcf4)

  • Se cambió el nombre de MediaStoreOutputOptions.getCollection por MediaStoreOutputOptions.getCollectionUri. (I16639)

Correcciones de errores

  • Se solucionó el problema por el cual se activaba el flash durante la función Presiona para enfocar (startFocusAndMetering) cuando el modo de flash se establecía en automático o siempre encendido en entornos con poca luz. (Id4c11)
  • Se inhabilitó HDR+ en Pixel 2 XL y Pixel 3 XL en el modo MINIMIZE_LATENCY para reducir la latencia. (Ib6270, b/203505523)

Contribución externa

Versión 1.1.0-alpha10

13 de octubre de 2021

Lanzamiento de androidx.camera:camera-*:1.1.0-alpha10. La versión 1.1.0-alpha10 contiene estas confirmaciones.

Nuevas funciones

  • Se lanzó, de forma oficial, androidx.camera:camera-video:1.1.0-alpha10 como la primera versión alfa de video. Se deben corregir varios problemas conocidos en las versiones posteriores.

Cambios en la API

  • Se agregó la anotación @RequiresApi(21) a todas las clases de CameraX y se descartó minSdkVersion de AndroidManifest.xml. De esta manera, se permitirá que camera-core se integre con facilidad a las aplicaciones que tienen una versión de minSdkVersion inferior a 21, pero que quieran usar, de manera condicional, rutas de código que se basen en el nivel de API  21 y versiones posteriores. Para cualquier aplicación con minSdkVersion 21 o posterior, este cambio no requiere ninguna acción. (Ie7f2e, b/200599470)

Correcciones de errores

  • Se arroja una InitializationException de modo que la app pueda controlar correctamente el AssertionError que ocurre durante la creación de CameraCharacteristics. (Ibec79)

Versión 1.1.0-alpha09

29 de septiembre de 2021

Lanzamiento de androidx.camera:camera-camera2:1.1.0-alpha09, androidx.camera:camera-core:1.1.0-alpha09 y androidx.camera:camera-lifecycle:1.1.0-alpha09. La versión 1.1.0-alpha09 contiene estas confirmaciones.

Cambios en la API

  • Ahora que las API ya no son experimentales, se quitó la anotación ExperimentalUseCaseGroup. (I01ef5)

Correcciones de errores

  • Se solucionó el problema en el que se desenfocaban las fotos que se capturaban en el modo MAXIMIZE_QUALITY. (I173a9, b/193823892)
  • Se solucionó un problema de Samsung Galaxy J5 por el que la cámara se bloqueaba después de tomar fotos con el flash activado o automático en ambientes oscuros. (I3aab9)
  • Cuando es necesario utilizar un recorte para ImageCapture, se comprime la imagen recortada resultante con el nivel de calidad de JPEG especificado según el modo de captura establecido. Si el modo de captura es CAPTURE_MODE_MINIMIZE_LATENCY, la calidad de compresión JPEG será de 95. Si el modo de captura es CAPTURE_MODE_MAXIMIZE_QUALITY, la calidad de compresión JPEG será de 100. (Ieb37c, b/142856426)

Versión 1.1.0-alpha08

18 de agosto de 2021

Lanzamiento de androidx.camera:camera-camera2:1.1.0-alpha08, androidx.camera:camera-core:1.1.0-alpha08 y androidx.camera:camera-lifecycle:1.1.0-alpha08. La versión 1.1.0-alpha08 contiene estas confirmaciones.

Nuevas funciones

  • Se agregó la API de setOutputImageFormat para configurar el análisis de imágenes. El usuario puede seleccionar ImageAnalysis.OUTPUT_IMAGE_FORMAT_YUV_420_888 o ImageAnalysis.OUTPUT_IMAGE_FORMAT_RGBA_8888. De forma predeterminada, se seleccionará ImageAnalysis.OUTPUT_IMAGE_FORMAT_YUV_420_888. (I7902d)

Cambios en la API

  • Ahora que las API ya no son experimentales, se quitó la anotación ExperimentalUseCaseGroupLifecycle. (I17b85)

Correcciones de errores

  • Se corrigió el brillo de la pantalla de vista previa en el Huawei P20 Lite. Este problema solo ocurre cuando se usan ciertas resoluciones especiales de vista previa junto con un valor de acercamiento grande. (Idefce, b/192129158)
  • Se corrigió un problema por el que el flash no funcionaba en algunos dispositivos cuando se configuraba el modo de flash en FLASH_MODE_ON y, al poco tiempo, se tomaban fotos. (Ieb49b)
  • Se corrigió el problema por el que se detenía la vista previa por un tiempo cuando se tomaban fotos si VideoCapture, ImageCapture y Preview estaban vinculados. (I56197, b/193864120)
  • Se permite que ImageAnalysis seleccione una resolución superior a 1080p. Un dispositivo superior al nivel LIMITED puede admitir una resolución de tamaño RECORD para ImageAnalysis cuando está vinculado junto con Preview y ImageCapture. La compensación es la resolución seleccionada para ImageCapture. También debe ser una resolución de tamaño RECORD. A fin de seleccionar de manera correcta una resolución de tamaño RECORD para ImageAnalysis, se debe establecer una resolución objetivo de tamaño RECORD en ImageCapture y en ImageAnalysis. De esta manera, se indica que la aplicación comprende con claridad la compensación y prefiere que ImageAnalysis tenga una resolución superior en lugar de que ImageCapture tenga una resolución MAXIMUM. Para obtenés más información sobre las definiciones de los tamaños RECORD, MAXIMUM y otros detalles, consulta https://developer.android.com/reference/android/hardware/camera2/CameraDevice#regular-capture. El tamaño RECORD se refiere a la resolución máxima de grabación que admite el dispositivo de cámara, según lo que determina CamcorderProfile. El tamaño MAXIMUM hace referencia a la resolución máxima de salida del dispositivo de cámara para ese formato u objetivo de StreamConfigurationMap.getOutputSizes(int). (I1ee97, b/192911449)
  • Se agregó información sobre Exif a la imagen capturada. (I01ff0, b/193342619)
  • En ImageCapture, se muestra el URI de la imagen guardada si la ubicación en la que se guarda es File. (Ib5b49, b/149241379)
  • Se corrigió un problema por el que las imágenes capturadas con flash se veían oscuras en muchos dispositivos. (I4e510)

Versión 1.1.0-alpha07

21 de julio de 2021

Lanzamiento de androidx.camera:camera-camera2:1.1.0-alpha07, androidx.camera:camera-core:1.1.0-alpha07 y androidx.camera:camera-lifecycle:1.1.0-alpha07. La versión 1.1.0-alpha07 contiene estas confirmaciones.

Correcciones de errores

  • Se solucionó un problema de Samsung Galaxy Note 5 por el que la cámara se atascaba después de tomar fotos con flash activado y automático en un entorno oscuro. (If6871)
  • Se solucionó el problema YuvToJpegProcessor de EOFException cuando el modo de extensión está habilitado y se configura el modo ImageCapture#CAPTURE_MODE_MAX_QUALITY. (I538bd, b/192017012)

Versión 1.1.0-alpha06

30 de junio de 2021

Lanzamiento de androidx.camera:camera-camera2:1.1.0-alpha06, androidx.camera:camera-core:1.1.0-alpha06 y androidx.camera:camera-lifecycle:1.1.0-alpha06. La versión 1.1.0-alpha06 contiene estas confirmaciones.

Cambios en la API

  • Se promocionaron las API experimentales de compensación de exposición para camera-core. (I08ee8)
  • Se agregó una API de isFocusMeteringSupported en CameraInfo que permite que las aplicaciones verifiquen si un elemento FocusMeteringAction determinado es compatible con la cámara actual o no. (Ib45ae, b/188606490)
  • Se expuso la API de getResolutionInfo a fin de brindar la información de la resolución para Preview, ImageCapture e ImageAnalysis. (I2b613, b/188600718)
  • Se promocionaron las siguientes API experimentales para las API oficiales: CameraXConfig.Builder#setAvailableCamerasLimiter(), CameraXConfig.Builder#setMinimumLoggingLevel(), CameraXconfig.Builder#setSchedulerHandler(), CameraXConfig#getAvailableCamerasLimiter(), CameraXConfig#getMinimumLoggingLevel(), CameraXConfig#getCameraExecutor(), CameraXConfig#getSchedulerHandler(). (I2ade2)
  • Se expuso la interfaz CameraProvider para brindar acceso a un conjunto de cámaras. (I1a7b1)
  • Se promocionó la API experimental de UseCaseGroup para camera-core, camera-lifecycle y camera-video. Se agregaron ViewPort#getLayoutDirection, ViewPort.Builder#setLayoutDirection y ViewPort.Builder#setScaleType para personalizar viewport. (I7cee8)

Versión 1.1.0-alpha05

2 de junio de 2021

Lanzamiento de androidx.camera:camera-camera2:1.1.0-alpha05, androidx.camera:camera-core:1.1.0-alpha05 y androidx.camera:camera-lifecycle:1.1.0-alpha05. La versión 1.1.0-alpha05 contiene estas confirmaciones.

Cambios en la API

  • Se quitó la clase Camera2CameraFilter. Sugiere que selecciones la cámara mediante CameraFilter y recupera la información de CameraCharacteristics y otra información relacionada con Camera2CameraInfo si es necesario. (Ib887c)
  • Ya finalizó la etapa experimental de las API de ExperimentalCameraFilter, por lo que ya son formales. Se pueden usar sin el elemento OptIn anotado. (I4bc94)
  • Se agregó la API de estado de la cámara que se expone a través de CameraInfo#getCameraState(). (Ia86b4)
  • Se agregó la API experimental CameraInfo#getCameraSelector(), que muestra un elemento CameraSelector único para su cámara. (I77f9f)

Correcciones de errores

  • Se solucionó el problema por el que ListenableFuture se mostraba en setZoomRatio y setLinearZoom no podía completarse en algunos dispositivos Android 11. (I716d7)
  • Se aceleró el cambio de cámara y se redujo la tasa de error del dispositivo de cámara. (I34c99)
  • Se reemplazó ExperimentalUseCaseGroupLifecycle con ExperimentalUseCaseGroup. (I3b2ef, b/159033688)

Versión 1.1.0-alpha04

21 de abril de 2021

Lanzamiento de androidx.camera:camera-camera2:1.1.0-alpha04, androidx.camera:camera-core:1.1.0-alpha04 y androidx.camera:camera-lifecycle:1.1.0-alpha04. La versión 1.1.0-alpha04 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió una fuga de memoria que causan varios subprocesos que acceden, de manera simultánea, a la misma colección. La fuga de memoria puede causar que el elemento Activity o Fragment sean retenidos por una instancia Preview. (I7b4b8)
  • Se reemplazó la anotación @Experimental por @RequiresOptIn para las APIs experimentales. Para llamar a las API experimentales, usa androidx.annotation.OptIn en lugar del elemento androidx.annotation.experimental.UseExperimental obsoleto. (Iff226)
  • Se corrigió el problema por el que ImageCapture con flash encendido o automático tomaba imágenes que perdían el color en el Samsung Galaxy S7. (I30001)
  • Se agregó una API de CameraState que se expondrá a través de CameraInfo. (I75392)

Versión 1.1.0-alpha03

24 de marzo de 2021

Lanzamiento de androidx.camera:camera-camera2:1.1.0-alpha03, androidx.camera:camera-core:1.1.0-alpha03 y androidx.camera:camera-lifecycle:1.1.0-alpha03. La versión 1.1.0-alpha03 contiene estas confirmaciones.

Correcciones de errores

  • Se agregó el formato de salida JPEG para ImageCapture#OnImageCapturedCallback cuando los modos de extensiones están habilitados. (I0d7b1)
  • Se corrigió el error de inicialización en dispositivos UMIDIGI BISON. (I57d9e, b/180818665)
  • Se corrigió la vista previa extendida de Samsung A3 en PreviewView. (Iacb30, b/180121821)

Versión 1.1.0-alpha02

24 de febrero de 2021

Lanzamiento de androidx.camera:camera-camera2:1.1.0-alpha02, androidx.camera:camera-core:1.1.0-alpha02 y androidx.camera:camera-lifecycle:1.1.0-alpha02. La versión 1.1.0-alpha02 contiene estas confirmaciones.

Cambios en la API

  • Se agregó la API de ProcessCameraProvider.getAvailableCameraInfos() para recuperar de forma directa información sobre las cámaras disponibles, que pueden ser todas las cámaras del dispositivo o las que seleccionó el CameraSelector incluido en CameraXConfig.Builder.setAvailableCamerasLimiter(CameraSelector). (Ieac08)

Correcciones de errores

  • Ahora, CameraX intenta forzar la apertura de la cámara en el primer intento, por lo que es posible que CameraX anule la cámara de otros clientes si la app tiene una prioridad más alta. (Iab069, b/175820568)
  • Se corrigió el error en la prueba de Robolectric cuando se usa setAvailableCamerasLimiter en CameraXConfig. (Ice307)
  • Este cambio detecta la excepción cuando la cola de imagen alcanza su límite en ImageAnalysis, por lo que es posible que otros casos de uso, como la vista previa, se bloqueen o funcionen con lentitud en lugar de generarse una falla. (Ic12da, b/175851631)
  • Se corrigió ExtensionsErrorListener para que informe errores cuando solo Preview o ImageCapture están vinculados. (I5ae39)
  • Se corrigió la regresión de rendimiento de ImageCapture, ya que se quitó la validación de la ubicación de las imágenes guardadas antes de tomar la foto. Después de realizar este cambio, si el destino de almacenamiento no es válido, tardará más tiempo en obtener la respuesta de error porque intentará guardar la imagen luego de tomar la foto. (I1fd4e, b/177061560)
  • Se corrigió la regresión de rendimiento de ImageCapture con el tipo "File" de OutputFileOptions. (I5164a, b/177061560)
  • Se actualizó la documentación a fin de evitar el uso de ProcessCameraProvider.configureInstance(...) desde el código de biblioteca. (Ib8a9f)

Versión 1.1.0-alpha01

27 de enero de 2021

Lanzamiento de androidx.camera:camera-camera2:1.1.0-alpha01, androidx.camera:camera-core:1.1.0-alpha01 y androidx.camera:camera-lifecycle:1.1.0-alpha01. La versión 1.1.0-alpha01 contiene estas confirmaciones.

Correcciones de errores

  • Se incluye una solución alternativa para los datos de imagen corruptos de forma intermitente en JPEG en la cámara trasera del SM-G930T. (I52001, b/159831206)
  • Se corrigió el error IllegalArgumentException que se producía cuando todos los tamaños admitidos de vista previa eran inferiores a 640 x 480 y el tamaño de la pantalla era superior a 640 x 480. (I2a63c, b/150506192)
  • De forma predeterminada, los recursos de las bibliotecas sin recursos públicos declarados de manera explícita (p. ej., a través de public.xml) son privados. (Ia1dcc, b/170882230)

Camera-Camera2, Camera-Core y Camera-Lifecycle Versión 1.0.2

Versión 1.0.2

29 de septiembre de 2021

Lanzamiento de androidx.camera:camera-camera2:1.0.2, androidx.camera:camera-core:1.0.2 y androidx.camera:camera-lifecycle:1.0.2. La versión 1.0.2 contiene estas confirmaciones.

Correcciones de errores

  • Se solucionó el problema en el que se desenfocaban las fotos que se capturaban en el modo MAXIMIZE_QUALITY. (I173a9, b/193823892)
  • Se solucionó un problema en el que la imagen que se capturaba con flash era oscura en muchos dispositivos. (I4e510)

Camera-Camera2, Camera-Core y Camera-Lifecycle Versión 1.0.1

Versión 1.0.1

21 de julio de 2021

Lanzamiento de androidx.camera:camera-camera2:1.0.1, androidx.camera:camera-core:1.0.1 y androidx.camera:camera-lifecycle:1.0.1. La versión 1.0.1 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió el problema por el que el objeto ListenableFuture que se mostraba en setZoomRatio y setLinearZoom no se podía completar en algunos dispositivos Android 11. (I716d7)

  • Se solucionó el problema por el que la cámara se atascaba al cerrar el estado de la cámara en algunos dispositivos y causaba una vista previa en negro. (I34c99)

Camera-Camera2, Camera-Core y Camera-Lifecycle Versión 1.0.0

Versión 1.0.0

5 de mayo de 2021

Lanzamiento de androidx.camera:camera-camera2:1.0.0, androidx.camera:camera-core:1.0.0 y androidx.camera:camera-lifecycle:1.0.0. La versión 1.0.0 contiene estas confirmaciones.

Funciones principales de la versión 1.0.0

  • CameraX admite Vista previa, ImageCapture y Análisis.
  • CameraX administra el ciclo de vida de la cámara en una API fácil de usar.
  • CameraX tiene como objetivo proporcionar una capa de compatibilidad que solucione muchos problemas en el ecosistema de las cámaras de Android.

Errores conocidos

Versión 1.0.0-rc05

21 de abril de 2021

Lanzamiento de androidx.camera:camera-camera2:1.0.0-rc05, androidx.camera:camera-core:1.0.0-rc05 y androidx.camera:camera-lifecycle:1.0.0-rc05. La versión 1.0.0-rc05 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió el problema por el que ImageCapture con flash encendido o automático tomaba imágenes que perdían el color en el Samsung Galaxy S7. (I30001)

Versión 1.0.0-rc04

24 de marzo de 2021

Lanzamiento de androidx.camera:camera-camera2:1.0.0-rc04, androidx.camera:camera-core:1.0.0-rc04 y androidx.camera:camera-lifecycle:1.0.0-rc04. La versión 1.0.0-rc04 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió el error de inicialización en dispositivos UMIDIGI BISON. (I57d9e, b/180818665)

Versión 1.0.0-rc03

24 de febrero de 2021

Lanzamiento de androidx.camera:camera-camera2:1.0.0-rc03, androidx.camera:camera-core:1.0.0-rc03 y androidx.camera:camera-lifecycle:1.0.0-rc03. La versión 1.0.0-rc03 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió el error de formato en el documento de ProcessCameraProvider#getInstance
  • Se corrigió el error en la prueba de Robolectric cuando se usa setAvailableCamerasLimiter en CameraXConfig.
  • Se corrigió la regresión de rendimiento de ImageCapture, ya que se quitó la validación de la ubicación de las imágenes guardadas antes de tomar la foto. Después de realizar este cambio, si el destino de almacenamiento no es válido, tardará más tiempo en obtener la respuesta de error porque intentará guardar la imagen luego de tomar la foto.
  • Este cambio detecta la excepción cuando la cola de imagen alcanza su límite en ImageAnalysis, por lo que es posible que otros casos de uso, como la vista previa, se bloqueen o funcionen con lentitud en lugar de generarse una falla.
  • Se incluye una solución alternativa para los datos de imagen corruptos de forma intermitente en JPEG en la cámara trasera del SM-G930T. (I52001, b/159831206)
  • Este cambio detecta la excepción cuando la cola de imagen alcanza su límite en ImageAnalysis, por lo que es posible que otros casos de uso, como la vista previa, se bloqueen o funcionen con lentitud en lugar de generarse una falla. (Ic12da, b/175851631)
  • Se corrigió el error en la prueba de Robolectric cuando se usa setAvailableCamerasLimiter en CameraXConfig. (Ice307)
  • Se corrigió la regresión de rendimiento de ImageCapture, ya que se quitó la validación de la ubicación de las imágenes guardadas antes de tomar la foto. Después de realizar este cambio, si el destino de almacenamiento no es válido, tardará más tiempo en obtener la respuesta de error porque intentará guardar la imagen luego de tomar la foto. (I1fd4e, b/177061560)
  • Se corrigió la regresión de rendimiento de ImageCapture con el tipo "File" de OutputFileOptions. (I5164a, b/177061560)

Versión 1.0.0-rc02

27 de enero de 2021

Lanzamiento de androidx.camera:camera-camera2:1.0.0-rc02, androidx.camera:camera-core:1.0.0-rc02 y androidx.camera:camera-lifecycle:1.0.0-rc02. La versión 1.0.0-rc02 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió el error IllegalArgumentException que se producía cuando todos los tamaños admitidos de vista previa eran inferiores a 640 x 480 y el tamaño de la pantalla era superior a 640 x 480. (b/150506192)
  • Se limita la cantidad de intentos para que se vuelva a abrir la cámara. Cuando intente recuperarse de ciertos problemas al abrir la cámara, CameraX ya no probará con reabrir la cámara indefinidamente, sino que se detendrá después de reintentar durante 10 segundos. I435d2

  • Se corrigió el error IllegalArgumentException que se producía cuando todos los tamaños admitidos de vista previa eran inferiores a 640 x 480 y el tamaño de la pantalla era superior a 640 x 480. (I2a63c, b/150506192)

Versión 1.0.0-rc01

16 de diciembre de 2020

Lanzamiento de androidx.camera:camera-camera2:1.0.0-rc01, androidx.camera:camera-core:1.0.0-rc01 y androidx.camera:camera-lifecycle:1.0.0-rc01. La versión 1.0.0-rc01 contiene estas confirmaciones.

Cambios en la API

  • Se cambiaron CameraFilter y Camera2Filter para que acepten CameraInfo. (I6883d)
  • Se agregó la clase experimental Camera2CameraControl para permitir la interoperación con API de Camera2 de manera dinámica. (I45cf3)
  • Se cambió el nombre de Camera2CameraInfo#fromCameraInfo a #from. (Ia2bd6)
  • Se agregó una API experimental de setAvailableCamerasLimiter a CameraXConfig para permitir que las apps optimicen la latencia de inicialización evitando inicializar cámaras en desuso. (I6cf88)
  • Se agregó el método experimental CameraXConfig.Builder#setMinimumLoggingLevel() a fin de permitir que se establezca un nivel de registro mínimo para los registros de CameraX. Si no se establece, el valor predeterminado es Log#DEBUG. (Ic3245)

Correcciones de errores

  • Se incluye una solución alternativa para los datos de imagen corruptos de forma intermitente en JPEG en la cámara trasera del SM-G930V. (I5aca5, b/159831206)
  • Se solucionó el problema por el cual en los dispositivos Samsung SM-A716, al momento de tomar fotos, no se obtenían resultados cuando el flash estaba siempre activado y el ambiente era oscuro. (If98b2, b/172036589)
  • Se corrigió el problema por el que no se podía detener el objeto Preview llamando a Preview.setSurfaceProvider(null). (I3ac18)
  • Se corrigió un problema de orientación que se generaba al momento de capturar imágenes 4:3 en algunos dispositivos. (I0e3fb, b/171492111)

Camera Camera2, Core y Lifecycle versión 1.0.0-beta12

11 de noviembre de 2020

Lanzamiento de androidx.camera:camera-camera2:1.0.0-beta12, androidx.camera:camera-core:1.0.0-beta12 y androidx.camera:camera-lifecycle:1.0.0-beta12. La versión 1.0.0-beta12 contiene estas confirmaciones.

Correcciones de errores

  • Se inhabilitó el flash automático en dispositivos Samsung A3 para corregir la falla que se producía cuando se tomaba una foto con el modo AE de flash automático. (Ia5fe3, b/157535165)
  • Se solucionó un problema por el que la vista previa se mostraba expandida en dispositivos Nexus 4 con Android L (niveles de API 21 y 22). (I4d407, b/158749159)
  • La implementación de la clase base OnImageCapturedCallback#onCaptureSuccess ya no cierra la imagen. Eso sucede con el fin de evitar comportamientos inesperados para los desarrolladores. Los desarrolladores no deben depender de super.onCaptureSuccess para cerrar la imagen. (Ifbf9c).
  • La variante de androidx de la anotación Experimental dejó de estar disponible para proporcionar paridad con Kotlin. Se reemplazó por la anotación RequiresOptIn, y se actualizó el linter orientado a Java para brindar compatibilidad con la nueva anotación de Kotlin y la nueva variante androidx. (I52495, b/151331381)

Camera-Camera2 versión 1.0.0-beta11

14 de octubre de 2020

Lanzamiento de androidx.camera:camera-camera2:1.0.0-beta11. La versión 1.0.0-beta11 contiene estas confirmaciones.

Nuevas funciones

  • Admite la API de CONTROL_ZOOM_RATIO de Android 11 para acercar en dispositivos con Android 11 o versiones posteriores que contienen CONTROL_ZOOM_RATIO_RANGE válidos. (I62cc6)

Correcciones de errores

  • Se solucionó el problema de NumberFormatException que se producía cuando el objeto ID de la cámara era un ID de cámara no entero. (Ib2228)
  • Se mejoró la latencia de la inicialización de CameraX y bindToLifecycle. (I61dc5)
  • Crear UseCases no requiere que se complete la inicialización de CameraX. Todas las configuraciones específicas de implementaciones se establecen en UseCase una vez que se adjunta a una instancia de Camera, que para la API pública es ProcessCameraProvider.bindToLifecycle(). (Ia5411)
  • <UseCase>.getTargetRotation() mostrará Surface.ROTATION_0 si se lo llama antes de que se conecte a una instancia de Camera, a menos que se haya establecido una targetRotation en el Builder o el UseCase. (I80fcd)

Camera-Core versión 1.0.0-beta11

14 de octubre de 2020

Lanzamiento de androidx.camera:camera-core:1.0.0-beta11. La versión 1.0.0-beta11 contiene estas confirmaciones.

Nuevas funciones: Se admite la API de CONTROL_ZOOM_RATIO de Android 11 para acercar en dispositivos con Android 11 o versiones posteriores que contienen CONTROL_ZOOM_RATIO_RANGE válidos. (I62cc6)

Correcciones de errores

  • Se solucionó el problema de NumberFormatException que se producía cuando el objeto ID de la cámara era un ID de cámara no entero. (Ib2228)
  • Crear UseCases no requiere que se complete la inicialización de CameraX. Todas las configuraciones específicas de implementaciones se establecen en UseCase una vez que se adjunta a una instancia de Camera, que para la API pública es ProcessCameraProvider.bindToLifecycle(). (Ia5411)
  • <UseCase>.getTargetRotation() mostrará Surface.ROTATION_0 si se lo llama antes de que se conecte a una instancia de Camera, a menos que se haya establecido una targetRotation en el Builder o el UseCase. (I80fcd)

Camera-Core versión 1.0.0-beta10

23 de septiembre de 2020

Lanzamiento de androidx.camera:camera-core:1.0.0-beta10. La versión 1.0.0-beta10 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió el error relacionado con la validación del destino de almacenamiento de archivos para la captura de imágenes (I8c565, b/167697553).

Camera-Camera2 versión 1.0.0-beta10

23 de septiembre de 2020

Lanzamiento de androidx.camera:camera-camera2:1.0.0-beta10. La versión 1.0.0-beta10 contiene estas confirmaciones.

Correcciones de errores

Camera-Camera2 versión 1.0.0-beta09

16 de septiembre de 2020

Lanzamiento de androidx.camera:camera-camera2:1.0.0-beta09. La versión 1.0.0-beta09 contiene estas confirmaciones.

Cambios en la API

  • En lugar de proporcionar métodos estáticos, Camera2CameraInfo toma una instancia de CameraInfo cuando se crea a fin de recuperar información relacionada de Camera2. (I5b844)

Correcciones de errores

  • Se solucionó el problema de relación de aspecto de destino en tablets. Se deberá seleccionar un tamaño de proporción 16:9 cuando la relación de aspecto de destino sea AspectRatio.RATIO_16_9. (Ib7fcf, b/151969438)
  • Se arroja una InitializationException de modo que la app pueda controlar correctamente el AssertionError que ocurre durante la creación de CameraCharacteristics. (I89c8c, b/160524721)
  • Se agregaron interfaces experimentales para ExposureCompensation. (If96c7)

Camera-Core versión 1.0.0-beta09

16 de septiembre de 2020

Lanzamiento de androidx.camera:camera-core:1.0.0-beta09. La versión 1.0.0-beta09 contiene estas confirmaciones.

Cambios en la API

  • Se corrigió el error por el que viewport se marcaba como no nula en UseCaseGroup. Los desarrolladores deberían poder crear una viewport sin configurarla. (Ie3d2e)
  • Se agregaron interfaces experimentales para ExposureCompensation. (If96c7)
  • Se permite la rotación de destino arbitraria en Vista previa. La información de transformación se calcula y se muestra al usuario en el momento mediante una devolución de llamada TranformationInfoListener nueva. (I21470)

Correcciones de errores

  • Se solucionó el problema por el que no se desactivaba el flash en algunos dispositivos. Esto ocurre cuando el modo de flash está configurado como FLASH_MODE_ON para tomar una foto y se cambia a FLASH_MODE_OFF cuando se activa el flash. El síntoma se asemeja a cuando el modo de linterna está habilitado. (Ib4451, b/162568128)
  • Se forzó PreviewView a usar TextureView si el efecto de extensión está habilitado y la implementación de la biblioteca del proveedor debe realizar un proceso especial en la superficie de salida. (I0c3cc)
  • Se corrigió la pérdida en actividades o fragmentos que ocurre cuando se pasa un contexto de estos a ProcessCameraProvider.getInstance(Context).

Errores conocidos

  • Cuando se establece ViewPort, el rectángulo de recorte de ImageCapture podría ser incorrecto en dispositivos que rotan el búfer de imágenes en HAL. Se solucionará este problema en la próxima versión.

Camera-Camera2 versión 1.0.0-beta08

19 de agosto de 2020

Lanzamiento de androidx.camera:camera-camera2:1.0.0-beta08. La versión 1.0.0-beta08 contiene estas confirmaciones.

Correcciones de errores

  • Se optimizó bindToLifecycle para que se ejecute rápidamente en el subproceso principal. (I1d57e)
  • DisplayOrientedMeteringPointFactory toma una instancia de CameraInfo en lugar de CameraSelector, de modo que haya un mapeo directo con el objeto Camera para el cual la fábrica generará puntos. Todas las clases que usan DisplayOrientedMeteringPointFactory también toman una instancia de CameraInfo en lugar de CameraSelector. (I400c1)
  • Se corrigió el error de agrupación por tamaño relacionado con la resolución automática de la relación de aspecto por el cual se seleccionaba un tamaño de dimensiones mod16 de proporción 16:9 (864 x 480) cuando la configuración de resolución objetivo era de 2016 x 1080 y se admitía otro tamaño de 1920 x 1080. (I53167, b/159363774)
  • Se corrigió una condición de carrera en CameraControl que impedía su funcionamiento. (I2279f, b/152333890, b/160714166)

Camera-Core versión 1.0.0-beta08

19 de agosto de 2020

Lanzamiento de androidx.camera:camera-core:1.0.0-beta08. La versión 1.0.0-beta08 contiene estas confirmaciones.

Cambios en la API

  • DisplayOrientedMeteringPointFactory toma una instancia de CameraInfo en lugar de CameraSelector, de modo que haya un mapeo directo con el objeto Camera para el que la fábrica generará puntos. Todas las clases que usan DisplayOrientedMeteringPointFactory también toman una instancia de CameraInfo en lugar de CameraSelector. (I400c1)

Correcciones de errores

  • Para la captura de imágenes, se reemplazó la marca horizontal de giro en los metadatos según la dirección de la cámara. (I28499)
  • La inicialización ya no debería fallar cuando se usa un objeto Context que no muestra un objeto Application de Context.getApplicationContext(). (I3d3c9, b/160817073)

Camera-Camera2 versión 1.0.0-beta07

22 de julio de 2020

Lanzamiento de androidx.camera:camera-camera2:1.0.0-beta07. La versión 1.0.0-beta07 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió el error por el que la vista previa se mostraba expandida en dispositivos heredados con Android 5.0. (I0c03a)
  • Se excluyeron algunos tamaños admitidos de JPEG que causan problemas de WYSIWYG en algunos dispositivos. (Ib5128)

Camera-Core versión 1.0.0-beta07

22 de julio de 2020

Lanzamiento de androidx.camera:camera-core:1.0.0-beta07. La versión 1.0.0-beta07 contiene estas confirmaciones.

Cambios en la API

  • Fusiona el estilo de ajuste de FIT_CENTER, FIT_START y FIT_END con FIT. FIT significa que el recorte que se muestre será el máximo posible para el sensor. (Ia73c3)
  • Viewport configura la vista previa del recorte. Los usuarios finales deberían poder ver solo el área cubierta por el rectángulo de recorte. (I142a4)

Correcciones de errores

  • Se corrigió el error por el que la vista previa se mostraba expandida en dispositivos heredados con Android 5.0. (I0c03a)
  • Se corrigió el error de excepción ConcurrentModificationException que ocurre cuando se desvinculan los casos de uso. (I371c0)

Camera-Camera2 versión 1.0.0-beta06

24 de junio de 2020

Lanzamiento de androidx.camera:camera-camera2:1.0.0-beta06. La versión 1.0.0-beta06 contiene estas confirmaciones.

Cambios en la API

  • Se agregaron interfaces experimentales para filtrar cámaras según el ID de la cámara y CameraCharacteristics. (I28f61).

Correcciones de errores

  • Se solucionó el problema por el que startFocusAndMetering no se enfocaba correctamente en Samsung Galaxy S7. (If3be7 y b/159039233).
  • Se corrigió el problema por el que la cámara no se podía cerrar después de salir de la app. (I7a7b3)
  • Se corrigió el problema por el que el cambio reiterado de cámaras generaba errores de vista previa cuando se usaba la implementación SurfaceView de PreviewView. (I920ce)
  • CameraControl#startFocusAndMetering fallará si ninguno de los elementos MeteringPoint especificados pueden generar rectángulos válidos de medición. (Id53ce).

Camera-Core versión 1.0.0-beta06

24 de junio de 2020

Lanzamiento de androidx.camera:camera-core:1.0.0-beta06. La versión 1.0.0-beta06 contiene estas confirmaciones.

Cambios en la API

  • Se agregaron interfaces experimentales para filtrar cámaras según el ID de la cámara y CameraCharacteristics. (I28f61).

Correcciones de errores

  • Ahora, CameraX se puede configurar con ProcessCameraProvider#configureInstance() antes de llamar a ProcessCameraProvider#getInstance(). Esto permite la personalización de CameraXConfig sin necesidad de implementar CameraXConfig.Provider en la clase Application de la app. (Ia1a8d)
  • CameraControl#startFocusAndMetering fallará si ninguno de los elementos MeteringPoint especificados pueden generar rectángulos válidos de medición. (Id53ce).

Camera-Camera2 versión 1.0.0-beta05

10 de junio de 2020

Lanzamiento de androidx.camera:camera-camera2:1.0.0-beta05. La versión 1.0.0-beta05 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió la falla de inicio de la app que se producía cuando se inicializaba CameraX mientras el teléfono estaba en modo No interrumpir. Una InitializationException contiene una CameraUnavailableException que se configurará como ListenableFuture del resultado de la inicialización en lugar de hacer fallar la aplicación. (I9909a, b/149413835)
  • Se corrigió la falla que se producía cuando se llamaba a startFocusAndMetering en dispositivos en los que CONTROL_AF_STATE era nulo. (Ife55e, b/157084254)

Camera-Core versión 1.0.0-beta05

10 de junio de 2020

Lanzamiento de androidx.camera:camera-core:1.0.0-beta05. La versión 1.0.0-beta05 contiene estas confirmaciones.

Cambios en la API

  • Se corrigió la falla de inicio de la app que se producía cuando se inicializaba CameraX mientras el teléfono estaba en modo No interrumpir. Una InitializationException contiene una CameraUnavailableException que se configurará como ListenableFuture del resultado de la inicialización en lugar de hacer fallar la aplicación. (I9909a, b/149413835)

Correcciones de errores

  • Se actualizaron los javadocs de setTargetResolution y setTargetRotation. (Iae16f)

Camera-Camera2 versión 1.0.0-beta04

27 de mayo de 2020

Lanzamiento de androidx.camera:camera-camera2:1.0.0-beta04. La versión 1.0.0-beta04 contiene estas confirmaciones.

Correcciones de errores

  • Se permitió a las aplicaciones establecer cualquier parámetro de solicitud de captura de camera2 a través de Camera2Interop sin causar una falla. Ten en cuenta que pueden surgir problemas como resultado de la anulación de parámetros. No se garantiza la estabilidad y el comportamiento cuando se anulan parámetros usando Camera2Interop. (Ibe5a1, b/149103700)
  • Se soluciona la inicialización automática cuando se usa una app en un dispositivo que utiliza una pseudoconfiguración regional. (I3bef3, b/154767663)
  • Se convirtió el registro de errores relacionado con el caso práctico desconectado en un registro de depuración en Camera2CameraImpl. (I1a565, b/154422490)
  • Se solucionó el problema por el que se tomaban imágenes demasiado oscuras a pesar de que se activaba el flash. (I5d9fa, b/149729613)
  • Se corrigió el error por el que no se retrocedía el búfer en ImageProxy de ImageCapture. (I0c455, b/153249512)
  • Se solucionaron los problemas relacionados con la vinculación de solo ImageCapture: (1) no se podían tomar fotos con MAX_QUALITY; (2) se generaba una mala calidad de imagen porque la exposición automática no funcionaba. (I17782, b/145326998)
  • Se mejoró la fiabilidad de la reapertura de la cámara cuando otro proceso o ruta de código desconectaba CameraX y anulaba la cámara. (I1fbc3, b/153714651)

Camera-Core versión 1.0.0-beta04

27 de mayo de 2020

Lanzamiento de androidx.camera:camera-core:1.0.0-beta04. La versión 1.0.0-beta04 contiene estas confirmaciones.

Cambios en la API

  • Agrega una API experimental, CameraXConfig.Builder#setSchedulerHandler(), para configurar el controlador que usa internamente la pila de la cámara CameraX. Esta nueva API, junto con CameraXConfig.Builder#setCameraExecutor(), debería permitir el control total de los subprocesos que usa la pila de la cámara CameraX. (I7bf32, b/121160431)

Correcciones de errores

  • Se corrigió una falla en ImageAnalysis por la que se accedía a ImageProxy después de que se cerraba el ImageReaderProxy. Así, todos los elementos ImageProxy recibidos por Analyzer se deben cerrar antes de que se cierre el ImageReaderProxy. (I4b299, b/145956416, b/154155377, b/156357269)
  • Se quitó el parámetro CameraInfo de PreviewView#createSurfaceProvider(); ahora, PreviewView lo recupera internamente desde la SurfaceRequest. (If18f0, b/154652477)
  • Se soluciona la inicialización automática cuando se usa una app en un dispositivo que utiliza una pseudoconfiguración regional. (I3bef3, b/154767663)
  • Se solucionó el problema por el que se tomaban imágenes demasiado oscuras a pesar de que se activaba el flash. (I5d9fa, b/149729613)
  • Se solucionó el problema relacionado con ImageAnalysis por el que, cuando se hacían varias llamadas a setAnalyzer/clearAnalyzer, el analizador no recibía imágenes para analizar. (I6169f, b/151605317, b/153514544)
  • Se corrigió el error por el que no se retrocedía el búfer en ImageProxy de ImageCapture. (I0c455, b/153249512)
  • Se solucionó el problema por el que no siempre se seleccionaba para usar la primera cámara de la lista de dispositivos compatibles de CameraManager. (I4c624, b/153418028)
  • Se corrigió la falla intermitente que se generaba cuando se configuraba Preview.SurfaceProvider para no liberar la superficie solicitada anteriormente. “java.lang.IllegalStateException: Camera surface session should only fail with request cancellation” (I8e4e7, b/155936225)

Camera-Camera2 versión 1.0.0-beta03

15 de abril de 2020

Lanzamiento de androidx.camera:camera-camera2:1.0.0-beta03. La versión 1.0.0-beta03 contiene estas confirmaciones.

Correcciones de errores

  • Se realizaron correcciones para admitir el lanzamiento de camera-core.

Camera-Core versión 1.0.0-beta03

15 de abril de 2020

Lanzamiento de androidx.camera:camera-core:1.0.0-beta03. La versión 1.0.0-beta03 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió la regresión de beta03 por la que, cuando se llamaba a bindToLifecycle() sin un solo UseCase, se generaba una excepción. Esto evitó que se recuperara una instancia de Camera sin vincular un UseCase.

Camera-Camera2 versión 1.0.0-beta02

1 de abril de 2020

Lanzamiento de androidx.camera:camera-camera2:1.0.0-beta02. La versión 1.0.0-beta02 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió el valor de ImageInfo.getRotationDegrees() de ImageProxy producido por ImageCapture a fin de que coincida con el valor de rotación de la orientación de EXIF. (Id4281, b/150802561).
  • Ya no se requiere el orden explícito de las dependencias de CameraX en build.gradle para usar la implementación de CameraX/Camera2 predeterminada. En los casos en los que se requiera declarar dependencias estrictas, ahora se podrán incluir todas las dependencias de CameraX en el archivo de compilación (I46e88).
  • Se solucionó el problema relacionado con IllegalArgumentException que se producía en los dispositivos en los que el tamaño de la pantalla es inferior a 640 x 480. (Ife3f2, b/150506192).
  • Se corrigió bindToLifecycle para que solo modifique el UseCase si se vincula correctamente. Antes, cuando se llamaba a bindToLifecycle para realizar cálculos de resolución, se actualizaba el UseCase. Ahora ya no es necesario actualizar el UseCase para realizar los cálculos (I78d9e).

Camera-Core versión 1.0.0-beta02

1 de abril de 2020

Lanzamiento de androidx.camera:camera-core:1.0.0-beta02. La versión 1.0.0-beta02 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió el valor de ImageInfo.getRotationDegrees() de ImageProxy producido por ImageCapture a fin de que coincida con el valor de rotación de la orientación de EXIF. (Id4281, b/150802561).
  • Se corrigió bindToLifecycle para que solo modifique el UseCase si se vincula correctamente. Antes, cuando se llamaba a bindToLifecycle para realizar cálculos de resolución, se actualizaba el UseCase. Ahora ya no es necesario actualizar el UseCase para realizar los cálculos (I78d9e).
  • Se solucionó un problema por el que la sesión de captura del caso práctico de Preview no se actualizaba cuando la superficie de vista previa cambiaba después de que se llamaba a Preview.setSurfaceProvider() más de una vez.

Camera-Camera2 versión 1.0.0-beta01

26 de febrero de 2020

Lanzamiento de androidx.camera:camera-camera2:1.0.0-beta01. La versión 1.0.0-beta01 contiene estas confirmaciones.

Correcciones de errores

  • Se cambió el nombre de SurfaceRequest.setSurface(Surface) por SurfaceRequest.provideSurface(Surface) y el de SurfaceRequest.setWillNotComplete() por SurfaceRequest.willNotProvideSurface(). (I224fe)
  • Se solucionó un problema por el que la relación de aspecto de una imagen guardada no era correcta después de cambiar el valor de rotación de destino usando ImageCapture.setTargetRotation(). (I474ea, b/148763432)
  • Se corrigió la inicialización de las variantes de apps con ProGuard habilitado conservando la marca que establece el proveedor CameraXConfig predeterminado. (I2d6c1)

Camera-Core versión 1.0.0-beta01

26 de febrero de 2020

Lanzamiento de androidx.camera:camera-core:1.0.0-beta01. La Versión 1.0.0-beta01 contiene estas confirmaciones.

Cambios en la API

  • Se reemplazó el elemento ListenableFuture de SurfaceRequest.provideSurface() por un Executor y una Callback. Esto simplifica la API porque no se requiere el manejo de excepciones en provideSurface() y no se pueda cancelar la devolución de llamada a provideSurface(). De esta forma, se evitan fallas en dispositivos más antiguos causadas por el lanzamiento de superficies de forma anticipada. Ahora se usa el objeto SurfaceRequest.Result para realizar un seguimiento de cómo una SurfaceRequest utiliza la Surface proporcionada (I7854b).
  • Se cambió el nombre de SurfaceRequest.setSurface(Surface) por SurfaceRequest.provideSurface(Surface) y el de SurfaceRequest.setWillNotComplete() por SurfaceRequest.willNotProvideSurface(). (I224fe)

Correcciones de errores

  • Se solucionó un problema por el que la relación de aspecto de una imagen guardada no era correcta después de cambiar el valor de rotación de destino usando ImageCapture.setTargetRotation(). (I474ea, b/148763432)
  • Se corrigió la inicialización de las variantes de apps con ProGuard habilitado conservando la marca que establece el proveedor CameraXConfig predeterminado. (I2d6c1)
  • Se actualizó la documentación de las API del modo de flash para incluir valores posibles. (I4a3ec)

Camera-Camera2 versión 1.0.0-alpha10

10 de febrero de 2020

Lanzamiento de androidx.camera:camera-camera2:1.0.0-alpha10. La versión 1.0.0-alpha10 contiene estas confirmaciones.

Correcciones de errores

  • Se mejoró la estabilidad de los dispositivos INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY. Para ello, se garantizó que los elementos de Surface solo se retengan durante el uso de Camera2. (I9dac2)
  • Se ajustó correctamente CONTROL_AE_TARGET_FPS_RANGE a fin de corregir el problema relacionado con la vista previa subexpuesta en dispositivos HEREDADOS. (1224638)

Camera-Core versión 1.0.0-alpha10

10 de febrero de 2020

Lanzamiento de androidx.camera:camera-core:1.0.0-alpha10. La versión 1.0.0-alpha10 contiene estas confirmaciones.

Cambios en la API

  • Se actualizó ImageCapture para permitir que se guarden imágenes en Uri y OutputStream. Se combinaron los métodos takePicture sobrecargados en uno solo. Se actualizó la app de prueba para usar Uri como ejemplo canónico. (Ia3bec)
  • Se cambió el nombre de Preview.PreviewSurfaceProvider por Preview.SurfaceProvider. Los SurfaceProvider ya no requieren que los desarrolladores creen su propio ListenableFuture y ahora se proporciona la Surface a través de un objeto SurfaceRequest nuevo. Se quitó el método Preview.getPreviewSurfaceProvider() debido a su potencial de uso inadecuado cuando Preview se sincroniza con otras clases, como PreviewView (I20105).
  • Se agregaron getTargetRotation() y getTargetName() a Preview. (Iceee7)
  • Se agregaron getTargetRotation(), getBackpressureStrategy() y getImageQueueDepth() en ImageAnalysis. (I9d6d9)
  • Se agregaron getTargetRotation() y getCaptureMode() en ImageCapture(). (I5bc17)
  • Los argumentos que antes se pasaban en ImageCapture.OnImageSavedCallback.onError() y ImageCapture.OnImageCapturedCallback.onError() ahora se reemplazaron por un solo argumento ImageCaptureException, que aún contiene toda la información que se pasó anteriormente.
  • Se quitó el argumento del archivo que antes se pasaba en ImageCapture.OnImageSavedCallback.onImageSaved(). (I750d2)
  • Ahora se marcan las clases Preview y ImageCapture como finales. (I2500b)
  • Se actualizó la API y se combinaron los métodos getZoomRatio(), getMaxZoomRatio(), getMinZoomRatio() y getLinearZoom() de CameraInfo en getZoomState(), que muestra una instancia de ZoomState. (Ib19fe)
  • Se quitaron los campos de API OPTION_TARGET_CLASS y OPTION_TARGET_NAME de CameraXConfig, ya que están destinados solo para uso interno de bibliotecas. Se quitó el constructor de CameraXConfig.Builder (I96912).
  • Se quitó el requisito por el que la app debía extender Application a fin de inicializar CameraX. Ahora, se inicializará CameraX con una configuración predeterminada de Camera2, siempre que se incluya el artefacto camera-camera2 en el objeto build.gradle de la aplicación (I58ff5) (b/146923574).

Camera-Camera2 versión 1.0.0-alpha09

22 de enero de 2020

Lanzamiento de androidx.camera:camera-camera2:1.0.0-alpha09. La versión 1.0.0-alpha09 contiene estas confirmaciones.

Cambios en la API

  • Agrega la ruta de acceso de interoperabilidad de camera2 para extraer un ID de cámara Camera2. Puedes extraer el ID de la cámara de CameraInfo usando Camera2CameraInfo.extractCameraId(). En la siguiente muestra de código, se explica cómo usarlo:

    Camera camera = provider.bindToLifecycle(...);
    String cameraId =
        Camera2CameraInfo.extractCameraId(camera.getCameraInfo());
    

    La clase Camera2CameraInfo requiere la markerClass ExperimentalCamera2Interop.

Camera-Core versión 1.0.0-alpha09

22 de enero de 2020

Lanzamiento de androidx.camera:camera-core:1.0.0-alpha09. La versión 1.0.0-alpha09 contiene estas confirmaciones.

Cambios en la API

  • Se cambió el nombre del parámetro useCaseForSurface de SurfaceOrientedMeteringPointFactory por useCaseForAspectRatio y se amplió la documentación de referencia.
  • Los constructores FocusMeteringAction.Builder() reemplazan a los métodos FocusMeteringAction.Builder.from().
  • Se quitó DisplayOrientedMeteringPointFactory(android.content.Context, androidx.camera.core.CameraSelector, float, float). Las aplicaciones deben usar el constructor que toma un parámetro Display y pasar la pantalla actual.
  • Se implementaron mejoras en Javadoc para las API de enfoque y medición en relación con las marcas MeteringMode y 3A, y el uso del parámetro Display.
  • Se amplió la documentación de referencia para setZoomRatio y setLinearZoom.

Correcciones de errores

  • Se solucionaron problemas que ocurrían al cerrar y, luego, abrir cámaras, lo que provocaba un error de comprobación de "condición previa".
  • Se corrigió un ConcurrentModificationException que se producía al usar las API de linterna y zoom.
  • Se solucionó un problema para poder seleccionar resoluciones más cercanas a las solicitadas cuando está disponible un tamaño de dimensiones mod16.
  • Las API de startFocusMetering y cancelFocusMetering ahora se comportan como se indica: con los tiempos correctos y mostrando, posiblemente, errores cuando se producen.
  • Se solucionó un problema por el que se solicitaba una resolución de objetivo determinada con una relación de aspecto de recorte en un dispositivo que no admite esos tamaños. Ahora, se selecciona un tamaño no recortado de resolución suficiente que se adecúe a la solicitud original cuando está disponible.

Camera-Camera2 versión 1.0.0-alpha08

18 de diciembre de 2019

Lanzamiento de androidx.camera:camera-camera2:1.0.0-alpha08. La versión 1.0.0-alpha08 contiene estas confirmaciones.

Errores conocidos

  • No todas las opciones para la solicitud de captura de Camera2 funcionan cuando se usa la interoperabilidad de Camera2. Si no se admite la opción solicitada, no se inicia la sesión y se produce un error como este: 09-09 14:04:13.643 10117 26020 26036 E AndroidRuntime: java.lang.IllegalArgumentException: Unsupported session configuration combination.

Correcciones de errores

  • Se solucionó un problema por el que se mostraba una pantalla negra como vista previa después de rotar o cambiar la cámara para las API nivel 21 y 22.

Cambios en la API

  • Experimental: Se agregó una ruta de acceso de interoperabilidad de camera2 para extraer el ID de la cámara.

Camera-Core versión 1.0.0-alpha08

18 de diciembre de 2019

Lanzamiento de androidx.camera:camera-core:1.0.0-alpha08. La versión 1.0.0-alpha08 contiene estas confirmaciones.

Errores conocidos

  • Las apps que usan PreviewView o CameraView pueden tener una vista previa de relación de aspecto incorrecta. Esto ocurre después de pausar o reanudar contenido en algunos dispositivos FULL, como el Pixel 2.

Correcciones de errores

  • Se actualizó la documentación de FocusMeteringAction y CameraControl.
  • Se implementó TorchControl para enableTorch() y getTorchState().

Cambios en la API

  • Se ocultó IntDefs y se quitaron las constantes de IntDef de su definición.
  • Se movió rotationDegrees de la clase OnImageCaptureCallback a ImageInfo.
  • Se movió rotationDegrees de la clase Analyzer a ImageInfo.

Camera-Camera2 versión 1.0.0-alpha07

4 de diciembre de 2019

Lanzamiento de androidx.camera:camera-camera2:1.0.0-alpha07. La versión 1.0.0-alpha07 de camera-camera2 contiene estas confirmaciones.

  • Ahora se puede usar Camera2Config con la inicialización y configuración de una implementación basada en Camera2 para CameraX. Obtén más información sobre cómo usarla durante la inicialización en la sección de Camera-Core de las notas de la versión.
  • La funcionalidad de interoperabilidad de camera2 ahora está marcada como experimental y se movió a un paquete separado: androidx.camera.camera2.interop..

Camera-Core versión 1.0.0-alpha07

4 de diciembre de 2019

Lanzamiento de androidx.camera:camera-core:1.0.0-alpha07. La versión 1.0.0-alpha07 de camera-core contiene estas confirmaciones.

Ten en cuenta que existen algunos cambios importantes en esta versión alfa mientras preparamos la beta. Te recomendamos que revises los cambios y compartas tus comentarios con el grupo de Google de CameraX. A los desarrolladores que usan CameraX en apps de Play Store, les recomendamos esperar la versión Beta oficial antes de actualizar la biblioteca de sus aplicaciones.

Cambios en la API

  • Importante: Cambió la inicialización de CameraX. Las aplicaciones deben implementar CameraXConfig.Provider y usar el objeto Camera2Config predeterminado que proporciona androidx.camera.camera2. El siguiente es un ejemplo de uso típico:

    import androidx.camera.camera2.Camera2Config
    import androidx.camera.core.CameraXConfig
    
    public class MyCameraXApplication : Application(),  CameraXConfig.Provider {
        override fun getCameraXConfig(): CameraXConfig {
                return Camera2Config.defaultConfig(this)
        }
    }
    
  • Se quitó la clase de CameraX. Los elementos bindToLifecycle(), unbind(), unbindAll(), isBound() y hasCamera() que antes proporcionaba la llamada a la clase de CameraX ahora están disponibles a través de ProcessCameraProvider.

  • Se obtiene una instancia por proceso de ProcessCameraProvider de manera asíncrona con el método estático ProcessCameraProvider.getInstance(), que muestra un objeto de escucha futuro, que proporciona el ProcessCameraProvider cuando se completa el proceso. Aquí se muestra un uso típico en onCreate(). Puedes realizar llamadas a getInstance() más tarde en el ciclo de vida de la actividad para posponer la latencia de inicialización (por ejemplo, cuando una acción del usuario abre una IU de la cámara).

    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);
      }
    
  • Se puede agregar un objeto de escucha al ListenableFuture que muestra getInstance(). De este modo, se garantiza que se pueda recuperar el proveedor de la cámara del Future sin bloquear Future.get().

    cameraProviderFuture.addListener(Runnable {
      val cameraProvider = cameraProviderFuture.get()
      cameraProvider.bindToLifecycle(...)
    }, ContextCompat.getMainExecutor(this))
    
  • Ahora se selecciona la cámara mediante un selector de cámara, en lugar de variar según el caso práctico.

    val cameraSelector = CameraSelector.Builder().requireLensFacing(LensFacing.BACK).build()
    
  • CameraProvider.bindToLifecycle recibe el propietario del ciclo de vida, el selector de cámara y los casos prácticos, que luego se vinculan al propietario determinado y se ejecutan para la cámara seleccionada.

    cameraProvider.bindToLifecycle(this as LifecycleOwner,
           cameraSelector, preview, imageAnalysis)
    
  • Se quitaron las clases "Config" de caso práctico. En su lugar, se compilan casos prácticos directamente, y se configuran opciones en cada compilador. Por ejemplo:

    preview = Preview.Builder().setTargetAspectRatio(AspectRatio.RATIO_16_9).build()
    
  • Se actualizó el caso práctico de la vista previa para aceptar una superficie creada y administrada por la aplicación a fin de garantizar que se cumplan las prácticas recomendadas de Android. Te recomendamos usar la clase de vista PreviewView que se proporciona en el paquete de Camera-View.

    preview.setPreviewSurfaceProvider(previewView.previewSurfaceProvider)
    
  • Consulta la documentación sobre cómo adjuntar una superficie administrada por la app. En esos casos, la app administra el ciclo de vida de la superficie.

  • Importante: La implementación del método analizador ImageAnalysis debe llamar a image.close() en las imágenes recibidas cuando se terminan de usar. De lo contrario, es posible que no se reciban imágenes nuevas o que demore en responder la cámara, según la configuración de contrapresión. Consulta los documentos de referencia para obtener más información.

  • Se cambió ImageAnalysis ImageReaderMode a una estrategia de contrapresión intdef.

  • Se marcó ImageProxy.getImage() como experimental. Las aplicaciones deben anotar el uso, por ejemplo, mediante @androidx.camera.core.ExperimentalGetImage.

  • Se quitó el requisito de anotación UIThread para el Analyzer.

  • Se agregó la función ImageAnalysis.clearAnalyzer() para quitar un analizador.

  • Se cambió el nombre de los objetos de escucha con más de 1 método por "Callback":

    • ImageCapture.OnImageCapturedListener ahora es ImageCapture.OnImageCapturedCallback.
    • ImageCapture.OnImageSavedListener ahora es ImageCapture.OnImageSavedCallback.
    • VideoCapture.OnVideoSavedListener ahora es VideoCapture.OnVideoSavedCallback.
  • Las Enumeraciones cambiaron a IntDef.

  • Se agregaron los siguientes controles de zoom:

    • CameraControl.setLinearZoom()
    • CameraControl.setZoomRatio()
    • CameraInfo.getLinearZoom()
    • CameraInfo.getMaxZoomRatio()
    • CameraInfo.getZoomRatio()
  • Se agregó CameraInfo.hasFlashUnit() para determinar si el hardware de flash/linterna está presente.

  • Se quitó CameraInfo.isFlashAvailable(). La linterna anula la funcionalidad del flash. Consulta más detalles en la documentación de referencia.

  • Se reemplazaron los campos ImageCapture.Metadata por los métodos de acceso get/set/is.

  • Ahora, startFocusMetering y cancelFocusMetering muestran ListenableFutures, que representan la operación asíncrona de la llamada.

  • Los elementos MeteringPoints ahora funcionan como controladores para las acciones de medición, y los producen las fábricas. Las apps deben usar las fábricas existentes en lugar de las personalizadas.

Errores corregidos

  • Se solucionó un problema relacionado con la captura de fotos durante una reanudación (luego de una pausa anterior en la que se tomaron fotos antes de que se completara la acción).
  • Error conocido: CameraControl.enableTorch() funciona, pero el objeto ListenableFuture<Void> que se muestra siempre es un elemento complete(success) futuro inmediato, aunque no haya unidades de flash. Este problema se solucionará en las versiones futuras hasta alcanzar el comportamiento final: cuando no haya unidades de flash, enableTorch(true) fallará inmediatamente (no enviará la solicitud a CaptureSession) y TorchState permanecerá desactivado.
  • Error conocido: startFocusAndMetering y cancelFocusAndMetering inician y cancelan la medición de foco, pero muestran un elemento completed (success) futuro inmediato que no representa el comportamiento indicado. El objeto FocusMeteringResult de ListenableFuture<FocusMeteringResult> CameraControl.startFocusAndMetering() es un resultado falso que muestra isFocusSuccessful() y siempre es "falso", lo que difiere del comportamiento previsto y documentado.
  • Error conocido: Se está desarrollando una fábrica de puntos de medición para usarla con eventos táctiles de PreviewView. Por el momento, las apps que conectan superficies administradas y personalizadas pueden usar las fábricas de puntos de medición existentes. De lo contrario, no hay funciones de enfoque táctil disponibles para PreviewView.

Camera-Camera2 y Camera-Core versión 1.0.0-alpha06

9 de octubre de 2019

Lanzamiento de androidx.camera:camera-camera2:1.0.0-alpha06 y androidx.camera:camera-core:1.0.0-alpha06. Estas son las confirmaciones incluidas en camera-camera2:1.0.0-alpha06, y estas las incluidas en camera-core:1.0.0-alpha06.

Nuevas funciones

Cambios en la configuración de las relaciones de aspecto:

  • Se agregó setTargetAspectRatioMode(), y acepta un argumento de enumeración. Esto establece el modo de relación de aspecto con las opciones RATIO_4_3 o RATIO_16_9, en lugar de una arbitraria. Este acercamiento refleja el hecho de que solo se proporcionan ciertas relaciones de aspecto de la cámara, en lugar de cualquier relación arbitraria.
    • Actualmente, las únicas relaciones disponibles son 16:9 y 4:3. En el caso de 1:1, solo ciertos dispositivos la tienen disponible desde la cámara, y también solo en resoluciones limitadas. Las aplicaciones que diseñan una interfaz o procesamiento 1:1 deben usar las opciones 16:9 o 4:3 más flexibles, así como recortar la pantalla o procesar una subregión.
    • Estas relaciones de aspecto están orientadas para usar el área máxima del sensor.
  • Se agregó getTargetAspectRatio() a las API de configuración de casos prácticos y muestra la relación de aspecto a la que se orienta el resultado del caso.
  • Se modificó el método setTargetAspectRatio(Rational aspectRatio) por setTargetAspectRatioCustom(Rational aspectRatio) para ImageCapture. Cuando se establece el resultado de ImageCapture, este se recorta según corresponda.

API de ejecutor

  • Las siguientes funciones aceptan un parámetro ejecutor, que permite a la app controlar en qué ejecutor se ejecuta la función.
    • API de Preview.setOnPreviewOutputUpdateListener(). Si no está presente el ejecutor para esa función, entonces se ejecuta en el subproceso principal.
    • Preview.setOnPreviewOutputUpdateListener
    • FocusMeteringAction.Builder.setAutoFocusCallback
    • ImageAnalysis.setAnalyzer
    • ImageCapture.takePicture
    • CameraView.takePicture
    • CameraView.startRecording
    • VideoCapture.startRecording

Se agregó CameraInfo con API de Check Flash Available y Sensor Rotation.

  • Se agregó CameraInfo y un método getCameraInfo, que permite a las apps verificar si está disponible una lente que apunte a CameraInfo y si hay flash disponible en esa cámara. Por ejemplo:

    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);
    }
    
  • Se agregó CameraInfo.getSensorRotationDegrees(). Proporciona la orientación del sensor de la cámara en relación con la orientación natural del dispositivo, o por conveniencia, en relación con una orientación descrita por una rotación de superficie (que describe una orientación relativa a la orientación natural).

Cambios de API y correcciones de errores

  • Relaciones de aspecto: Para cada caso práctico, las aplicaciones deben llamar a una de estas dos opciones: setTargetResolution() o setTargetAspectRatio(). Si se llama a ambos en el mismo compilador, se muestra un error.
    • Por lo general, se recomienda usar setTargetAspectRatio() según el diseño de la IU de la aplicación. Las resoluciones específicas se basan en el caso práctico. Por ejemplo, la vista previa está cerca de las resoluciones de pantalla y la captura de imágenes proporciona imágenes fijas de alta resolución. Para obtener más información, consulta la tabla de resoluciones automáticas.
    • Usa setTargetResolution() para casos más específicos, como cuando se requieren resoluciones mínimas (para guardar cálculos) o máximas (para detalles de procesamiento).
  • API de ejecutor: Se quitó la llamada a setCallbackHandler() de las API de configuración de casos prácticos. En cambio, las aplicaciones pueden establecer el ejecutor como un parámetro en varias otras API que establezcan una devolución de llamada.
  • Se actualizaron las anotaciones nulas de varias funciones.
  • Se corrigió un problema que causaba que se arrojara java.lang.IllegalStateException at Camera$StateCallback.onError al abrir la cámara.
  • Se solucionó el problema en el que se seleccionaban resoluciones que eran demasiado pequeñas (menos de 640 x 480) cuando la app solicitaba resoluciones más grandes o predeterminadas que generaban una imagen de vista previa bloqueada o borrosa. Las aplicaciones que necesitan específicamente resoluciones más pequeñas pueden solicitarlas de forma explícita.
  • Se solucionó un problema por el cual la cámara mostraba una pantalla negra (no se podía iniciar) después de regresar de un intent que lanzaba otra aplicación de cámara.
  • Se corrigió un error que arrojaba java.lang.IllegalArgumentException: CaptureRequest contains unconfigured Input/Output Surface! cuando se iniciaban o detenían repetidamente algunas apps.
  • Se corrigió el error java.lang.IllegalStateException: maxImages (4) has already been acquired, call #close before acquiring more. que se generaba al inhabilitar ImageAnalysis.
  • Se agregaron pruebas adicionales para el flujo de desconexión de la cámara.
  • Se mejoró la robustez del sistema de pruebas cuando se ejecutan pruebas de cámara consecutivas.

Camera-Camera2 y Camera-Core versión 1.0.0-alpha05

5 de septiembre de 2019

Lanzamiento de androidx.camera:camera-camera2:1.0.0-alpha05 y androidx.camera:camera-core:1.0.0-alpha05. Estas son las confirmaciones incluidas en camera-camera2:1.0.0-alpha05 y camera-core:1.0.0-alpha05.

  • Cambio de API: variables de error en casos prácticos con cambios de nombre:

    • Se cambió el nombre de ImageCapture.UseCaseError por ImageCapture.ImageCaptureError.
    • Se cambió el nombre de VideoCapture.UseCaseError por VideoCapture.VideoCaptureError.
  • Se agregó la API de CameraControl con la de Tap-to-Focus

    • Se agregó una API a fin de obtener un objeto CameraControl de CameraX para una cámara, seleccionado por lentes frontales:

      CameraX.getCameraControl(LensFacing lensFacing)

    • Se agregaron MeteringPointFactory, MeteringPoint, MeteringMode y FocusMeteringAction para ejecutar 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();
      
    • Se agregó una API para CameraControl a fin de iniciar y cancelar la medición de foco:

      getCameraControl(lensFacing).startFocusAndMetering(action); getCameraControl(lensFacing).cancelFocusAndMetering();

    • Se agregaron API para las fábricas de puntos de medición que ayudan a traducir las coordenadas de presión a las coordenadas del sensor, en función de clases de visualización:

      MeteringPointFactory factory = new TextureViewMeteringPointFactory(textureView); MeteringPointFactory factory = new DisplayOrientedMeteringPointFactory(context, lensFacing, viewWidth, viewHeight);

  • Se fuerza la llamada a los siguientes métodos del subproceso principal (de IU), lo que arroja un IllegalStateException cuando no están presentes. Las versiones futuras permitirán el uso en otros subprocesos y garantizarán la serialización.

    • CameraX.bindToLifecycle()
    • CameraX.unbind()
    • CameraX.unbindAll()
    • ImageAnalysis.setAnalyzer()
    • ImageAnalysis.getAnalyzer()
    • ImageAnalysis.removeAnalyzer()
    • Preview.removePreviewOutputListener()
    • Preview.getOnPreviewOutputUpdateListener()
    • Preview.setOnPreviewOutputUpdateListener()
  • Ahora, varios ajustes de configuración aceptan parámetros nulos y los métodos set correspondientes pueden mostrar un valor nulo.

  • Se solucionó el problema que se generaba cuando se probaban emuladores que no eran compatibles con la configuración de AF/AE/AWB.

  • Se corrigió un error de bloqueo en la rotación mientras se analizaba la imagen.

  • Se corrigió un error en el que la vista previa se veía negra al inicio (sin datos de la cámara), después de la rotación o al alternar entre las cámaras frontal y posterior.

  • Se quitaron las pruebas de varios casos prácticos de análisis simultáneos de imágenes. Para garantizar la compatibilidad, las aplicaciones solo deben adjuntar un único caso práctico de análisis de imágenes.

  • Se agregaron pruebas roboeléctricas iniciales para cámaras falsas en el conjunto de pruebas de cámara (WIP).

  • Se quitó la prueba Camera2Inititalizer, ya que su cobertura era confusa o engañosa.

Camera-Camera2 y Camera-Core versión 1.0.0-alpha04

7 de agosto de 2019

Lanzamiento de androidx.camera:camera-camera2:1.0.0-alpha04 y androidx.camera:camera-core:1.0.0-alpha04. La versión 1.0.0-alpha04 contiene estas confirmaciones.

Nuevas funciones

Cambios en la selección de relación de aspecto y resolución

El objetivo de CameraX es inicializar con éxito una sesión de la cámara. Esto significa que CameraX compromete las relaciones de resolución/aspecto en función de la capacidad del dispositivo, a fin de iniciar una sesión de captura como su primer objetivo, por lo que es posible que no se cumplan las solicitudes exactas. Esto puede deberse a lo siguiente:

  • Dispositivos que no admiten la resolución solicitada
  • Problemas de compatibilidad, como en dispositivos HEREDADOS donde se deben usar ciertas resoluciones para que funcionen correctamente
  • En algunos dispositivos, ciertos formatos solo están disponibles en algunas relaciones de aspecto
  • Preferencia por un "mod16 más cercano" para JPEG o codificación de video Consulta CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP.

Aunque CameraX crea y administra la sesión, siempre debes verificar en el código los tamaños de imagen que se muestran en los resultados del caso práctico y ajustarlos en consecuencia.

Se realizaron algunos cambios para establecer resoluciones y relaciones de aspecto, con el objetivo de que la API sea más clara:

  • Ahora se considera que el caso práctico de vista previa tiene una relación de aspecto predeterminada de 4:3 cuando no se establece ninguna.
  • Cuando CameraX considera internamente los cambios en las resoluciones solicitadas y las relaciones de aspecto en función de la capacidad del dispositivo, primero intenta mantener la misma relación de aspecto (según lo determinado por cualquiera de las llamadas de setTargetAspectRatioo setTargetResolution).
  • Una versión de "resolución 16 más cercana" de la resolución se considera como la misma relación de aspecto.

Modo ImageAnalysis sin bloqueo

  • El comportamiento de ImageReaderMode.ACQUIRE_LATEST_IMAGE ahora no incluye bloqueos. Adquiere la última imagen en la cola, pero descarta continuamente las imágenes no utilizadas para permitir que la canalización de la cámara evite el bloqueo.
  • El analizador puede contener una sola imagen de manera indefinida sin detener la canalización.
  • Si la aplicación proporciona un ejecutor que luego bloquea, se bloquea el caso práctico de ImageAnalysis.
  • El ejecutor predeterminado establecido internamente se comporta como un ejecutor sin bloqueo.

Correcciones de errores

  • Se corrigieron los problemas relacionados con el tiempo de espera de convergencia de 3A cuando se capturan imágenes en dispositivos sin enfoque, exposición ni balance de blancos automático.
  • Se solucionó el problema que se producía cuando se tomaban fotos rápidamente con ImageCapture. Se corrigió el error java.lang.IllegalStateException: maxImages (2) has already been acquired.
  • Se solucionó el problema que se producía cuando no se llamaba a setLensFacing para un caso práctico, lo que generaba java.lang.IllegalArgumentException: Unable to get camera ID for use case.
  • Se solucionó el problema por el que el dispositivo HEREDADO requería una relación de aspecto específica como resolución JPEG máxima.
  • Se solucionó un problema que se producía al colocar en segundo plano la app mientras se abría la cámara.
  • Se solucionó el problema en la API de niveles inferiores a 25, lo que quitó el error checkAndUpdateEglState: invalid current EGLDisplay.
  • Se solucionó el problema relacionado con la desvinculación de la vista previa después de habilitar e iniciar extensiones.
  • Los artefactos de compilación para la vista y las extensiones de la cámara ahora se publican como versiones Alfa.

Camera-Camera2 y Camera-Core versión 1.0.0-alpha03

2 julio de 2019

Lanzamiento de androidx.camera:camera-core:1.0.0-alpha03 y androidx.camera:camera-camera2:1.0.0-alpha03. La versión 1.0.0-alpha03 contiene estas confirmaciones.

Cambios en la API

  • Se agregó una aclaración de javadoc para "target" en las llamadas de configuración de setTarget.

Camera-Core

  • Se corrigió la falla en la superficie de entrada/salida no configurada para apertura/cierre o vinculación/desvinculación rápidos.
  • Cambio a nuevas implementaciones de Futures.
  • Se corrigieron pruebas para que sean más sólidas.
  • La prueba de integración principal ahora muestra el tiempo de captura de fotos.
  • Se desarrolló la clase de compatibilidad interna para ejecutores.
  • Las capturas de la app de prueba de sincronización esperan a que se completen las anteriores para mejorar la estabilidad.

Extensions

  • Se agregaron verificaciones de control de versiones.
  • Cobertura de prueba adicional: devoluciones de llamadas de eventos de extensión.
  • Mejoras para imágenes y metadatos internamente correspondientes.
  • Se implementaron correcciones en el cambio de modo en la app de prueba.

Camera-Camera2 y Camera-Core versión 1.0.0-alpha02

5 de junio de 2019

Lanzamiento de androidx.camera:camera-core:1.0.0-alpha02 y androidx.camera:camera-camera2:1.0.0-alpha02. La versión 1.0.0-alpha02 contiene estas confirmaciones.

Correcciones de errores

  • Se solucionó el problema relacionado con la división por cero cuando se usa el emulador.
  • Se corrigió el error NullPointerException/Surface Abandoned que se producía en algunos dispositivos cuando se tomaban fotos rápidamente mientras se desvinculaban y volvían a vincular con rapidez los casos prácticos.
  • Se corrigió un problema interno para garantizar que las actualizaciones de la solicitud de captura afecten a todas las superficies de manera coherente.
  • Se implementaron mejoras de estabilidad al reiniciar casos prácticos en nuevas instancias de apps.
  • Se hicieron cambios en la arquitectura interna con el objetivo de prepararla para ejecutores de compatibilidad en la API.
  • Se hicieron aclaraciones adicionales de Javadoc sobre la clase CameraX y la administración del ciclo de vida.
  • Se agregaron pruebas instrumentadas para la aplicación de prueba de rendimiento Antelope.
  • Se quitó la necesidad de "-keepattributes Signature" en la configuración de ProGuard de la app.

Camera-Camera2 y Camera-Core 1.0.0-alpha01

7 de mayo de 2019

Lanzamiento de androidx.camera:camera-core:1.0.0-alpha01 y androidx.camera:camera-camera2:1.0.0-alpha01. La versión 1.0.0-alpha01 contiene estas confirmaciones.

Camera-Lifecycle versión 1.0.0-beta11

14 de octubre de 2020

Lanzamiento de androidx.camera:camera-lifecycle:1.0.0-beta11. La versión 1.0.0-beta11 contiene estas confirmaciones.

Correcciones de errores

  • <UseCase>.getTargetRotation() mostrará Surface.ROTATION_0 si se lo llama antes de que se conecte a una instancia de Camera, a menos que se haya establecido una targetRotation en el Builder o el UseCase. (I80fcd)

Camera-Lifecycle versión 1.0.0-beta10

23 de septiembre de 2020

Lanzamiento de androidx.camera:camera-lifecycle:1.0.0-beta10. La versión 1.0.0-beta10 contiene estas confirmaciones.

Correcciones de errores

Camera-Lifecycle versión 1.0.0-beta09

16 de septiembre de 2020

Lanzamiento de androidx.camera:camera-lifecycle:1.0.0-beta09. La versión 1.0.0-beta09 contiene estas confirmaciones.

Camera-Lifecycle versión 1.0.0-beta08

19 de agosto de 2020

Lanzamiento de androidx.camera:camera-lifecycle:1.0.0-beta08. La versión 1.0.0-beta08 contiene estas confirmaciones.

Correcciones de errores

  • La inicialización ya no debería fallar cuando se usa un objeto Context que no muestra un objeto Application de Context.getApplicationContext(). (I3d3c9, b/160817073)

Camera-Lifecycle versión 1.0.0-beta07

22 de julio de 2020

Lanzamiento de androidx.camera:camera-lifecycle:1.0.0-beta07. La versión 1.0.0-beta07 contiene estas confirmaciones.

Camera-Lifecycle versión 1.0.0-beta06

24 de junio de 2020

Lanzamiento de androidx.camera:camera-lifecycle:1.0.0-beta06. La versión 1.0.0-beta06 contiene estas confirmaciones.

Cambios en la API

  • Ahora, CameraX se puede configurar con ProcessCameraProvider#configureInstance() antes de llamar a ProcessCameraProvider#getInstance(). Esto permite la personalización de CameraXConfig sin necesidad de implementar CameraXConfig.Provider en la clase Application de la app. (Ia1a8d)

Camera-Lifecycle versión 1.0.0-beta05

10 de junio de 2020

Lanzamiento de androidx.camera:camera-lifecycle:1.0.0-beta05. La versión 1.0.0-beta05 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió la falla de inicio de la app que se producía cuando se inicializaba CameraX mientras el teléfono estaba en modo No interrumpir. Una InitializationException contiene una CameraUnavailableException que se configurará como ListenableFuture del resultado de la inicialización en lugar de hacer fallar la aplicación. (I9909a, b/149413835)

Camera-Lifecycle versión 1.0.0-beta04

27 de mayo de 2020

Lanzamiento de androidx.camera:camera-lifecycle:1.0.0-beta04. La versión 1.0.0-beta04 contiene estas confirmaciones.

Camera-Lifecycle versión 1.0.0-beta03

15 de abril de 2020

Lanzamiento de androidx.camera:camera-lifecycle:1.0.0-beta03. La versión 1.0.0-beta03 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió la regresión de beta03 por la que, cuando se llamaba a bindToLifecycle() sin un solo UseCase, se generaba una excepción. Esto evitó que se recuperara una instancia de Camera sin vincular un UseCase.
  • Se realizaron correcciones para admitir el lanzamiento de camera-core.

Camera-Lifecycle versión 1.0.0-beta01

26 de febrero de 2020

Lanzamiento de androidx.camera:camera-lifecycle:1.0.0-beta01. La versión 1.0.0-beta01 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió la documentación para indicar que, cuando se obtiene un objeto ProcessCameraProvider durante la inicialización, se usa una configuración predeterminada y que la extensión Application es opcional. (I5e395)

Camera-Lifecycle versión 1.0.0-beta02

1 de abril de 2020

Lanzamiento de androidx.camera:camera-lifecycle:1.0.0-beta02. La versión 1.0.0-beta02 contiene estas confirmaciones.

Correcciones de errores

  • Se realizó una actualización para admitir las correcciones de errores en los artefactos camera-camera2:1.0.0-beta02 y camera-core:1.0.0-beta02.

Camera-Lifecycle versión 1.0.0-alpha10

10 de febrero de 2020

Lanzamiento de androidx.camera:camera-lifecycle:1.0.0-alpha10. La versión 1.0.0-alpha10 contiene estas confirmaciones.

Cambios en la API

  • Se agregó la anotación @MainThread a los métodos BindToLifecycle, unbind y unbindAll. (I990d2)

Camera-Lifecycle versión 1.0.0-alpha03

22 de enero de 2020

Lanzamiento de androidx.camera:camera-lifecycle:1.0.0-alpha03. La versión 1.0.0-alpha03 contiene estas confirmaciones.

Actualizaciones

  • Se implementaron varias correcciones y actualizaciones para admitir los cambios de Camera Core y Camera2.

Camera-Lifecycle versión 1.0.0-alpha02

18 de diciembre de 2019

Lanzamiento de androidx.camera:camera-lifecycle:1.0.0-alpha02. La versión 1.0.0-alpha02 contiene estas confirmaciones.

Cambios de dependencia

  • Se actualizó para poder usar androidx.camera:camera-core:1.0.0-alpha08.

Camera-Lifecycle versión 1.0.0-alpha01

4 de diciembre de 2019

Lanzamiento de androidx.camera:camera-lifecycle:1.0.0-alpha01. La versión 1.0.0-alpha01 de camera-lifecycle contiene estas confirmaciones.

Notas sobre la API

  • Se agrega el artefacto de camera-lifecycle, que proporciona una interfaz LifeCycleCameraProvider y una implementación llamada ProcessCameraProvider, la que proporciona muchas de las funciones de la clase CameraX anterior en Core y se obtiene mediante un método getInstance().
  • Las apps deben incluir la biblioteca de camera-lifecycle para usar CameraX.
  • Consulta las notas en la sección camera-core sobre cómo realizar la inicialización de CameraX con un elemento ProcessCameraProvider.

Camera-Extensions y Camera-View versión 1.0.0

Versión 1.0.0-alpha32

15 de diciembre de 2021

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha32 y androidx.camera:camera-view:1.0.0-alpha32. La versión 1.0.0-alpha32 contiene estas confirmaciones.

Cambios en la API

  • Se quitaron las anotaciones @RequiresApi(21) innecesarias de las clases y las interfaces internas. (I8e286, b/204917951)
  • Se actualizaron los archivos de API para el artefacto de extensiones de cámara. (If683a, b/161377155)

Correcciones de errores

  • No se permite que la app habilite los modos de extensión cuando se vincule VideoCapture. Las extensiones de CameraX solo admiten ImageCapture y Preview. Aún no se admite VideoCapture. Si la app vincula VideoCapture y habilita cualquier modo de extensión, se generará una IllegalArgumentException. (I0d87b)
  • CameraSelector#filter ya no arroja una IllegalArgumentException cuando el conjunto de resultados está vacío. (I27804)
  • Se cambió el nombre de la API de ExtensionsManager#getInstance por getInstanceAsync porque muestra ListenableFuture. El sufijo asíncrono del nombre de la función puede presentar claramente que es una función asíncrona. (I279d2)
  • Quita el parámetro de resolución de la API de ExtensionsManager#getEstimatedCaptureLatencyRange, ya que los usuarios no pueden saber qué tamaños son compatibles con el caso de uso de ImageCapture y no pueden distinguir si la información de latencia que se muestra es para el tamaño máximo de salida de captura o el parámetro de resolución de entrada. (I74bb2)
  • Mueve el parámetro CameraProvider de las funciones ExtensionsManager a la API getInstance() para que los usuarios no necesiten ingresar el parámetro CameraProvider cada vez que llaman a las funciones ExtensionsManager. (Ic7e48)

Versión 1.0.0-alpha31

17 de noviembre de 2021

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha31 y androidx.camera:camera-view:1.0.0-alpha31. La versión 1.0.0-alpha31 contiene estas confirmaciones.

Cambios en la API

  • Se agregó CameraSelector#filter a la API pública para filtrar una lista de CameraInfos que se basa en CameraSelector. (I105d0)

Correcciones de errores

  • Se corrigió una falla que se producía cuando se cambiaba, de manera rápida, el modo de extensiones en ciertos dispositivos. (Iebbef)

Versión 1.0.0-alpha30

13 de octubre de 2021

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha30 y androidx.camera:camera-view:1.0.0-alpha30. La versión 1.0.0-alpha30 contiene estas confirmaciones.

Cambios en la API

  • Se agregó la anotación @RequiresApi(21) a todas las clases de CameraX, y se descartó minSdkVersion de AndroidManifest.xml. De esta manera, se permitirá que camera-core se integre con facilidad a las aplicaciones que tienen una versión de minSdkVersion inferior a 21, pero que quieran usar, de manera condicional, rutas de código que se basen en el nivel de API  21 y versiones posteriores. Para cualquier aplicación con minSdkVersion 21 o posterior, este cambio no requiere ninguna acción. (Ie7f2e, b/200599470)

Correcciones de errores

  • Se corrigió el error AbstractMethodError que se produce cuando ProGuard esté habilitado. (Iae468, b/201177844)

Versión 1.0.0-alpha29

29 de septiembre de 2021

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha29 y androidx.camera:camera-view:1.0.0-alpha29. La versión 1.0.0-alpha29 contiene estas confirmaciones.

Cambios en la API

  • Ahora que las API ya no son experimentales, se quitó la anotación ExperimentalUseCaseGroup. (I01ef5)
  • Se quitó RotationProvider#removeAllListeners(). En su lugar, utiliza RotationProvider#removeListener(...). (Id9d4a)
  • Se actualizó la clase RotationReceiver: set/clear Listener cambió a add/remove/removeAll. Además, se quitó la variante setListener que usaba el subproceso principal de manera predeterminada y se agregó la anotación de métodos. (Ib1669)

Correcciones de errores

  • Se cambió el nombre de ExtensionMode#BEAUTY a FACE_RETOUCH para presentar correctamente lo que hace el modo de extensión. (I61f54, b/198515274)
  • Se solucionó el problema por el cual la cámara se cerraba inesperadamente cuando se usaban varios CameraController y PreviewView en un objeto Activity. (Ibfd18, b/197539358)

Versión 1.0.0-alpha28

18 de agosto de 2021

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha28 y androidx.camera:camera-view:1.0.0-alpha28. La versión 1.0.0-alpha28 contiene estas confirmaciones.

Cambios en la API

  • Ahora que las API ya no son experimentales, se quitó la anotación ExperimentalUseCaseGroupLifecycle. (I17b85)
  • Se refactorizó RotationListener y se cambió su nombre por RotationProvider. Continúa ofreciendo la misma función con una API un poco distinta. (Idffc5)
  • Se cambió el nombre de TAP_TO_FOCUS_UNSUCCESSFUL por TAP_TO_FOCUS_NOT_FOCUSED y el de TAP_TO_FOCUS_SUCCESSFUL por TAP_TO_FOCUS_FOCUSED. Se realizó la versión definitiva de OutputSize. (I099fa)

Correcciones de errores

  • Se quitaron las clases <EffectName><UseCase>Extender obsoletas, ExtensionsErrorListener y las API de ExtensionsManager relacionadas. (I3b8c3)

Versión 1.0.0-alpha27

21 de julio de 2021

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha27 y androidx.camera:camera-view:1.0.0-alpha27. La versión 1.0.0-alpha27 contiene estas confirmaciones.

Cambios en la API

  • La API de viewport pasó a ser experimental. Se quitó la anotación experimental de la API. (I717ea)
  • Se cambió el nombre de CoordinateTransform#getTransform por CoordinateTransform#transform y se actualizó JavaDoc. (I864ae)

Correcciones de errores

  • Se solucionó el problema del modo estirado de PreviewView PERFORMANCE cuando se usaba con la IU de Compose. (Ie1137, b/183864890)

Versión 1.0.0-alpha26

30 de junio de 2021

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha26 y androidx.camera:camera-view:1.0.0-alpha26. La versión 1.0.0-alpha26 contiene estas confirmaciones.

Cambios en la API

  • Agrega un nuevo método CameraController#getTapToFocusState() que expone el último resultado de tap-to-focus. (Iaccb0)
  • Agrega más funciones de camera-core a CameraController: métodos get y métodos set para la relación de aspecto de destino, la resolución objetivo, el modo de captura, CameraControl y los ejecutores personalizados. (Iea8f2)
  • Agrega una clase de RotationReceiver que recibe cambios en la rotación de la superficie. Se puede usar para configurar la rotación objetivo cuando el dispositivo se encuentre en modo fijo de paisaje o retrato. (Ib278f)
  • Se expusieron las nuevas API públicas de getEstimatedCaptureLatencyRange en la clase de ExtensionsManager. (I6a8ec)
  • ExtensionsErrorListener dejó de estar disponible. Actualmente, esta interfaz solo se utiliza para supervisar si faltan Preview o ImageCapture cuando se habilitan los modos de extensión. CameraX agregará automáticamente Preview o ImageCapture adicionales para que las funciones de la extensión funcionen bien. Después de eso, no se informará ningún error mediante esta interfaz. (I47d9e)
  • Se expusieron las API nuevas de ExtensionsManager getInstance, isExtensionAvailable y getExtensionEnabledCameraSelector, y las clases obsoletas de <EffectName><UseCase>Extender y las API relacionadas. (I329e6)

Versión 1.0.0-alpha25

2 de junio de 2021

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha25 y androidx.camera:camera-view:1.0.0-alpha25. La versión 1.0.0-alpha25 contiene estas confirmaciones.

Cambios en la API

  • Ya finalizó la etapa experimental de las API de ExperimentalCameraFilter, por lo que ya son formales. Se pueden usar sin el elemento OptIn anotado. (I4bc94)
  • Se agregó una utilidad que transforma las coordenadas entre casos de uso. Ejemplo de uso: transformación de las coordenadas detectadas en el caso de uso de ImageAnalysis y destacado del objeto detectado en la vista previa. (I63ab1, b/137515129)
  • Se quitó CameraView. CameraView se reemplazó con CameraController. Consulta la guía de migración para saber cómo realizar el proceso: (Id5005)

Correcciones de errores

  • Se reemplazó ExperimentalUseCaseGroupLifecycle con ExperimentalUseCaseGroup. (I3b2ef, b/159033688)

Versión 1.0.0-alpha24

21 de abril de 2021

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha24 y androidx.camera:camera-view:1.0.0-alpha24. La versión 1.0.0-alpha24 contiene estas confirmaciones.

Correcciones de errores

  • Se reemplazó la anotación @Experimental por @RequiresOptIn para las APIs experimentales. Para llamar a las API experimentales, usa androidx.annotation.OptIn en lugar del elemento androidx.annotation.experimental.UseExperimental obsoleto. (Iff226)
  • Se corrigió el problema extendido de PreviewView en Samsung J5 Prime (Ib10b6).

Camera Extensions y View versión 1.0.0-alpha23

24 de marzo de 2021

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha23 y androidx.camera:camera-view:1.0.0-alpha23. La versión 1.0.0-alpha23 contiene estas confirmaciones.

Cambios en la API

  • CameraView dejará de estar disponible. En su lugar, utiliza LifecycleCameraController. Ver la guía de migración. (Idac2c)
  • Se agregó la anotación FloatRange para setLinearZoom(). (I69971)

Correcciones de errores

  • Se fijaron las dependencias de camera-view para confiar en artefactos 1.0.0. La dependencia de camera-view ya no hará que la resolución de la dependencia de Gradle actualice automáticamente camera-core, camera-camera2 y camera-lifecycle a los artefactos 1.1.0 más recientes, aunque camera-view siga siendo compatible con esos artefactos si están configurados explícitamente para usar 1.1.0. (Ic8fa1, b/181599852)
  • Se corrigió la vista previa extendida de Samsung A3 en PreviewView. (Iacb30, b/180121821)
  • Se solucionó el problema por el cual no se podía establecer el selector de cámara antes de esta se inicialice. (Ic8bd0)

Camera Extensions y View versión 1.0.0-alpha22

24 de febrero de 2021

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha22 y androidx.camera:camera-view:1.0.0-alpha22. La versión 1.0.0-alpha22 contiene estas confirmaciones.

Cambios en la API

Correcciones de errores

  • Se corrigió ExtensionsErrorListener para que informe errores cuando solo Preview o ImageCapture están vinculados. (I5ae39)

Camera Extensions y View versión 1.0.0-alpha21

27 de enero de 2021

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha21 y androidx.camera:camera-view:1.0.0-alpha21. La versión 1.0.0-alpha21 contiene estas confirmaciones.

Lanzamiento para admitir otros artefactos de la biblioteca de cámara.

Camera Extensions y View versión 1.0.0-alpha20

16 de diciembre de 2020

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha20 y androidx.camera:camera-view:1.0.0-alpha20. La versión 1.0.0-alpha20 contiene estas confirmaciones.

Lanzamiento para admitir otros artefactos de la biblioteca de cámara.

Camera-Extensions y Camera-View versión 1.0.0-alpha19

11 de noviembre de 2020

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha19 y androidx.camera:camera-view:1.0.0-alpha19. La versión 1.0.0-alpha19 contiene estas confirmaciones.

Correcciones de errores

  • Se introdujo la anotación @ExperimentalVideo a camera-view. Esta anotación marca las API que exponen las funciones experimentales de video que están sujetas a cambios a medida que las funciones se desarrollan completamente. Cualquier método que use estas API deberá usar la anotación @UseExperimental con ExperimentalVideo como markerClass. (I6d729)

Camera-Extensions versión 1.0.0-alpha18

14 de octubre de 2020

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha18. La versión 1.0.0-alpha18 contiene estas confirmaciones.

Correcciones de errores

  • Se mejoró la latencia de la inicialización de CameraX y bindToLifecycle. (I61dc5)
  • <UseCase>.getTargetRotation() mostrará Surface.ROTATION_0 si se lo llama antes de que se conecte a una instancia de Camera, a menos que se haya establecido una targetRotation en el Builder o el UseCase. (I80fcd)

Camera-View versión 1.0.0-alpha18

14 de octubre de 2020

Lanzamiento de androidx.camera:camera-view:1.0.0-alpha18. La versión 1.0.0-alpha18 contiene estas confirmaciones.

Lanzamiento para admitir otros artefactos de la biblioteca de cámara.

Camera-Extensions versión 1.0.0-alpha17

23 de septiembre de 2020

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha17. La versión 1.0.0-alpha17 contiene estas confirmaciones.

Correcciones de errores

Camera-View versión 1.0.0-alpha17

23 de septiembre de 2020

Lanzamiento de androidx.camera:camera-view:1.0.0-alpha17. La versión 1.0.0-alpha17 contiene estas confirmaciones.

Correcciones de errores

Camera-Extensions versión 1.0.0-alpha16

16 de septiembre de 2020

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha16. La versión 1.0.0-alpha16 contiene estas confirmaciones.

Correcciones de errores

  • Se agregó un método en ExtensionsManager a fin de obtener un objeto Extensions que se usa para habilitar y buscar extensiones en instancias de Camera. (I4fb7e)

Camera-View versión 1.0.0-alpha16

16 de septiembre de 2020

Lanzamiento de androidx.camera:camera-view:1.0.0-alpha16. La versión 1.0.0-alpha16 contiene estas confirmaciones.

Cambios en la API

  • Se quitaron PreviewView#setDeviceRotationForRemoteDisplayMode() y PreviewView#getDeviceRotationForRemoteDisplayMode(). Los dos métodos se utilizan para personalizar la rotación de la vista previa cuando la rotación deseada no es la de la pantalla, p. ej., en la pantalla remota. A fin de controlar la rotación de vista previa que no es de visualización, establece la rotación deseada con Preview#setTargetRotation() y el elemento PreviewView#getViewPort(targetRotation) agregado recientemente. (Ib62cc)
  • Se cambió el nombre de createSurfaceProvider() a getSurfaceProvider(). El método siempre mostrará la misma instancia de Preview.SurfaceProvider. (Iff83c)

Correcciones de errores

  • Se forzó PreviewView a usar TextureView si el efecto de extensión está habilitado y la implementación de la biblioteca del proveedor debe realizar un proceso especial en la superficie de salida. (I0c3cc)
  • Se permite la rotación de destino arbitraria en Vista previa. La información de transformación se calcula y se muestra al usuario en el momento mediante una devolución de llamada TranformationInfoListener nueva. (I21470)

Errores conocidos

  • En PreviewView, no se invoca OnClickListener#onClick() cuando el usuario final hace clic en PreviewView. PreviewView#onTouchEvent() consume el evento táctil por error. El problema se corregirá en la próxima versión.
  • El MeteringPoint obtenido de PreviewView#getMeteringPointFactory() puede ser incorrecto si se usa ViewPort con PreviewView.

Camera-Extensions versión 1.0.0-alpha15

19 de agosto de 2020

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha15. La versión 1.0.0-alpha15 contiene estas confirmaciones.

Correcciones de errores

  • El método ExtensionsManager.init() ahora toma un objeto Context como parámetro en lugar de tener 0 argumentos. (Ife754)
  • La inicialización ya no debería fallar cuando se usa un objeto Context que no muestra un objeto Application de Context.getApplicationContext(). (I3d3c9, b/160817073)

    Camera-View versión 1.0.0-alpha15

    19 de agosto de 2020

Lanzamiento de androidx.camera:camera-view:1.0.0-alpha15. La versión 1.0.0-alpha15 contiene estas confirmaciones.

Correcciones de errores

  • DisplayOrientedMeteringPointFactory toma una instancia de CameraInfo en lugar de CameraSelector, de modo que haya un mapeo directo con el objeto Camera para el que la fábrica generará puntos. Todas las clases que usan DisplayOrientedMeteringPointFactory también toman una instancia de CameraInfo en lugar de CameraSelector. (I400c1)
  • Se quitó TextureViewMeteringPointFactory. PreviewView proporciona una API pública (createMeteringPointFactory()) para crear una fábrica de puntos de medición independientemente de si usa un TextureView o un SurfaceView. (Ide693)
  • Se cambió el nombre de los modos de implementación SURFACE_VIEW/TEXTURE_VIEW de PreviewView a PERFORMANCE/COMPATIBLE. PERFORMANCE es el modo SURFACE_VIEW anterior y COMPATIBLE es el modo TEXTURE_VIEW anterior. (I0edc2)
  • Para la captura de imágenes, se reemplazó la marca horizontal de giro en los metadatos según la dirección de la cámara. (I28499)

Camera-Extensions versión 1.0.0-alpha14

22 de julio de 2020

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha14. La versión 1.0.0-alpha14 contiene estas confirmaciones.

Camera-View versión 1.0.0-alpha14

22 de julio de 2020

Lanzamiento de androidx.camera:camera-view:1.0.0-alpha14. La versión 1.0.0-alpha14 contiene estas confirmaciones.

Camera-Extensions versión 1.0.0-alpha13

24 de junio de 2020

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha13. La versión 1.0.0-alpha13 contiene estas confirmaciones.

Correcciones de errores

  • Se agregaron interfaces experimentales para filtrar cámaras según el ID de la cámara y CameraCharacteristics. (I28f61).

Camera-View versión 1.0.0-alpha13

24 de junio de 2020

Lanzamiento de androidx.camera:camera-view:1.0.0-alpha13. La versión 1.0.0-alpha13 contiene estas confirmaciones.

Correcciones de errores

  • CameraView ya no falla con una IllegalArgumentException cuando se vincula a un LifecycleOwner cuyo ciclo de vida pasa a un estado DESTROYED poco después de vincularse. La vinculación de ciclos de vida en un estado DESTROYED no intentará abrir la cámara (I7c2b8).
  • PreviewView StreamState ahora está disponible mediante CameraView.getPreviewStreamState(). (I21a2b)

Camera-Extensions versión 1.0.0-alpha12

10 de junio de 2020

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha12. La versión 1.0.0-alpha12 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió la falla de inicio de la app que se producía cuando se inicializaba CameraX mientras el teléfono estaba en modo No interrumpir. Una InitializationException contiene una CameraUnavailableException que se configurará como ListenableFuture del resultado de la inicialización en lugar de hacer fallar la aplicación. (I9909a, b/149413835)

Camera-View versión 1.0.0-alpha12

10 de junio de 2020

Lanzamiento de androidx.camera:camera-view:1.0.0-alpha12. La versión 1.0.0-alpha12 contiene estas confirmaciones.

Correcciones de errores

  • Agrega la API de PreviewView#getBitmap(), que muestra una representación en mapa de bits del contenido que se muestra en la superficie de vista previa. (I9b500, b/157659818)

Camera-Extensions versión 1.0.0-alpha11

27 de mayo de 2020

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha11. La versión 1.0.0-alpha11 contiene estas confirmaciones.

Camera-View versión 1.0.0-alpha12

10 de junio de 2020

Lanzamiento de androidx.camera:camera-view:1.0.0-alpha12. La versión 1.0.0-alpha12 contiene estas confirmaciones.

Nuevas funciones

Cambios en la API

Correcciones de errores

  • Agrega la API de PreviewView#getBitmap(), que muestra una representación en mapa de bits del contenido que se muestra en la superficie de vista previa. (I9b500, b/157659818)

Camera-View versión 1.0.0-alpha11

27 de mayo de 2020

Lanzamiento de androidx.camera:camera-view:1.0.0-alpha11. La versión 1.0.0-alpha11 contiene estas confirmaciones.

Cambios en la API

  • Se agregó la API de PreviewView#getPreviewStreamState que permite a las apps observar si la vista previa se transmite o no. Cuando la PreviewView está en modo TEXTure_VIEW, el estado STREAMING también garantiza que la imagen de vista previa sea visible. (Ic0906, b/154652477)
  • Se agregó la API de PreviewView#setDeviceRotationForRemoteDisplayMode() a fin de proporcionar la rotación del dispositivo para cálculos de transformación si la aplicación se ejecuta en modo de visualización remota. (I59b95, b/153514525)

Correcciones de errores

  • Se solucionó el problema relacionado con la distorsión de la vista previa en cámaras FULL/LIMITED/LEVEL_3 con Android 7.0 y versiones anteriores. Se forzó el uso del modo ImplementationMode#TEXTURE_VIEW cuando la versión de Android es 7.0 o anterior. (I83e30, b/155085307)
  • Se quitó el parámetro CameraInfo de PreviewView#createSurfaceProvider(); ahora, PreviewView lo recupera internamente desde la SurfaceRequest. (If18f0, b/154652477)
  • Se corrigió la relación de aspecto predeterminada de VideoCapture y se estableció en 16:9 en CameraView. (Ie6a7b, b/153237864)
  • Se corrigieron los problemas relacionados con la pantalla negra de PreviewView cuando se deslizaba el fragmento fuera de Preview y, luego, se deslizaba hacia atrás en ViewPager2. También se corrigió el problema en removeView(previewview) y luego en addView(previewView). (Iab555, b/149877652, b/147354615)
  • Se actualizó la API de CameraView#takePicture() para permitir guardar imágenes en Uri y OutputStream. Se actualizó la app de prueba para usar Uri como ejemplo canónico. (Ia2459, b/153607583)
  • Puedes establecer el tipo de escala de PreviewView desde un diseño XML configurando el atributo ScaleType. (I08565, b/153015659)
  • Se quitó CameraView.ScaleType. En su lugar, usa PreviewView.ScaleType para establecer/obtener un tipo de escala con CameraView. (Ia8974, b/153014831)
  • Otórgale a PreviewView un color de fondo predeterminado si aún no tiene ninguno. Esto evita que el contenido que está detrás de este objeto sea visible antes de que comience la vista previa de la transmisión. (I09fad)

Camera-Extensions versión 1.0.0-alpha10

15 de abril de 2020

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha10. La versión 1.0.0-alpha10 contiene estas confirmaciones.

Correcciones de errores

  • Se realizaron correcciones para admitir el lanzamiento de Camera-Core

Camera-View versión 1.0.0-alpha10

15 de abril de 2020

Lanzamiento de androidx.camera:camera-view:1.0.0-alpha010. La versión 1.0.0-alpha010 contiene estas confirmaciones.

Correcciones de errores

  • Se solucionó un problema conocido anterior por el que la implementación de SurfaceView de PreviewView no funcionaba correctamente en algunos dispositivos y hacía que la aplicación fallara después de reanudar la vista previa. (I5ed6b)

Camera-Extensions versión 1.0.0-alpha09

1 de abril de 2020

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha09. La versión 1.0.0-alpha09 contiene estas confirmaciones.

Correcciones de errores

  • Se realizó una actualización para admitir correcciones de errores en los artefactos camera-camera2:1.0.0-beta02, camera-core:1.0.0-beta02 y camera-lifecycle:1.0.0-beta02.

Camera-View versión 1.0.0-alpha09

1 de abril de 2020 Lanzamiento de androidx.camera:camera-view:1.0.0-alpha09. La versión 1.0.0-alpha09 contiene estas confirmaciones.

Errores conocidos

  • Es posible que el uso de ImplementationMode.SURFACE_VIEW con PreviewView no funcione bien en algunos dispositivos, ya que la SurfaceView que se usa para la vista previa invalida su superficie cuando se detiene el ciclo de vida de la ventana en la que se encuentra. Cuando se reinicia, la cámara se vuelve a abrir y puede intentar reanudar la vista previa antes de que la superficie de SurfaceView vuelva a ser válida. Por ahora, debes usar ImplementationMode.TEXTURE_VIEW.

Cambios en la API

  • Se cambió el nombre de PreviewView.setImplementationMode() por PreviewView.setPreferredImplementationMode().
  • Se cambió el nombre de PreviewView.getImplementationMode() por PreviewView.getPreferredImplementationMode().
  • Se reemplazó PreviewView.getSurfaceProvider() por PreviewView.createSurfaceProvider(CameraInfo), que toma una instancia de CameraInfo anulable que se usa para optimizar la vista previa mediante ImplementationMode.SURFACE_VIEW siempre que sea posible. Si se pasa una instancia nula o si configuras el modo de implementación preferido como ImplementationMode.TEXTURE_VIEW, se usa internamente ImplementationMode.TEXTURE_VIEW.
  • En la siguiente muestra de código, se indica cómo se usaban antes los casos prácticos de vista previa con PreviewView.

    preview.setSurfaceProvider(previewView.previewSurfaceProvider)
    cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview)
    

    Ahora, puedes escribir lo siguiente:

    val camera = cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview)
    previewView.preferredImplementationMode = ImplementationMode.TEXTURE_VIEW
    preview.setSurfaceProvider(previewView.createSurfaceProvider(camera.cameraInfo))
    
  • Se agregó la anotación @UiThread a PreviewView.getSurfaceProvider(), lo que significa que se debe invocar desde el subproceso principal (I192f3).

  • Se agregó PreviewView.setScaleType(), lo que permite establecer el tipo de escala de la vista previa. Acepta uno de los valores de PreviewView.ScaleType y el valor predeterminado es PreviewView.ScaleType.FILL_CENTER.

  • Se agregó PreviewView.getScaleType().

  • Se quitó la compatibilidad con la configuración del modo de implementación de PreviewView en un diseño XML con el atributo implementationMode.

  • Se agregó la API de createMeteringPointFactory() a PreviewView para admitir la conversión (x, y) en PreviewView a MeteringPoint. (Ib36d7)

Correcciones de errores

  • Se corrigieron casos en los que se mostraba una vista previa incorrecta después de que se cambiaba el tamaño de PreviewView. (I71101)

Camera-Extensions versión 1.0.0-alpha08

26 de febrero de 2020

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha08. La versión 1.0.0-alpha08 contiene estas confirmaciones.

Camera-View versión 1.0.0-alpha08

26 de febrero de 2020

Lanzamiento de androidx.camera:camera-view:1.0.0-alpha08. La versión 1.0.0-alpha08 contiene estas confirmaciones.

Correcciones de errores

  • Se reemplazó el elemento ListenableFuture de SurfaceRequest.provideSurface() por un Executor y una Callback. Esto simplifica la API porque no se requiere el manejo de excepciones en provideSurface() y no se pueda cancelar la devolución de llamada a provideSurface(). De esta forma, se evitan fallas en dispositivos más antiguos causadas por el lanzamiento de superficies de forma anticipada. Ahora se usa el objeto SurfaceRequest.Result para realizar un seguimiento de cómo una SurfaceRequest utiliza la Surface proporcionada (I7854b).
  • Se cambió el nombre de SurfaceRequest.setSurface(Surface) por SurfaceRequest.provideSurface(Surface) y el de SurfaceRequest.setWillNotComplete() por SurfaceRequest.willNotProvideSurface(). (I224fe)
  • Se corrigió la inicialización de las variantes de apps con ProGuard habilitado conservando la marca que establece el proveedor CameraXConfig predeterminado. (I2d6c1)

Camera-Extensions versión 1.0.0-alpha07

10 de febrero de 2020

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha07. La versión 1.0.0-alpha07 contiene estas confirmaciones.

Correcciones de errores

  • Los argumentos que antes se pasaban en ImageCapture.OnImageSavedCallback.onError() y ImageCapture.OnImageCapturedCallback.onError() ahora se reemplazaron por un solo argumento ImageCaptureException, que aún contiene toda la información que se pasó anteriormente.
  • Se quitó el argumento del archivo que antes se pasaba en ImageCapture.OnImageSavedCallback.onImageSaved(). (I750d2)

Camera-View versión 1.0.0-alpha07

10 de febrero de 2020

Lanzamiento de androidx.camera:camera-view:1.0.0-alpha07. La versión 1.0.0-alpha07 contiene estas confirmaciones.

Cambios en la API

  • La implementación TextureView de PreviewView ahora establece el tamaño de TextureView como el tamaño de salida del sensor de la cámara antes de escalarlo para llenar su PreviewView superior. Si quieres que la vista previa de la cámara llene toda una parte de la IU (por ejemplo, toda la pantalla), no debes establecer el tamaño de la PreviewView como un valor fijo ni unir su contenido (por ejemplo, usando el atributo "wrap_content"), ya que esto puede hacer que la vista previa de la cámara solo llene parte de la PreviewView (si el tamaño de salida del sensor de la cámara es menor). En cambio, debes configurar la PreviewView de modo que sea tan grande como el elemento superior (por ejemplo, mediante el atributo "match_parent") (1204869).

Correcciones de errores

  • Se actualizó ImageCapture para permitir que se guarden imágenes en Uri y OutputStream. Se combinaron los métodos takePicture sobrecargados en uno solo. Se actualizó la app de prueba para usar Uri como ejemplo canónico. (Ia3bec)
  • Se cambió el nombre de Preview.PreviewSurfaceProvider por Preview.SurfaceProvider. Los SurfaceProvider ya no requieren que los desarrolladores creen su propio ListenableFuture y ahora se proporciona la Surface a través de un objeto SurfaceRequest nuevo. Se quitó el método Preview.getPreviewSurfaceProvider() debido a su potencial de uso inadecuado cuando Preview se sincroniza con otras clases, como PreviewView (I20105).
  • Los argumentos que antes se pasaban en ImageCapture.OnImageSavedCallback.onError() y ImageCapture.OnImageCapturedCallback.onError() ahora se reemplazaron por un solo argumento ImageCaptureException, que aún contiene toda la información que se pasó anteriormente.
  • Se quitó el argumento del archivo que antes se pasaba en ImageCapture.OnImageSavedCallback.onImageSaved(). (I750d2)
  • Se actualizó la API y se combinaron los métodos getZoomRatio(), getMaxZoomRatio(), getMinZoomRatio() y getLinearZoom() de CameraInfo en getZoomState(), que muestra una instancia de ZoomState. (Ib19fe)

Camera-Extensions versión 1.0.0-alpha06

22 de enero de 2020

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha06. La versión 1.0.0-alpha06 contiene estas confirmaciones.

Actualizaciones

  • Se implementaron varias correcciones y actualizaciones para admitir los cambios de Camera Core y Camera2.

Camera-View versión 1.0.0-alpha06

22 de enero de 2020

Lanzamiento de androidx.camera:camera-view:1.0.0-alpha06. La versión 1.0.0-alpha06 contiene estas confirmaciones.

Actualizaciones

  • Se implementaron varias correcciones y actualizaciones para admitir los cambios de Camera Core y Camera2.

Camera-Extensions versión 1.0.0-alpha05

18 de diciembre de 2019

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha05. La versión 1.0.0-alpha05 contiene estas confirmaciones.

Correcciones de errores

  • Se actualizó para que coincida con las API internas de Camera Core.

Camera-View versión 1.0.0-alpha05

18 de diciembre de 2019

Lanzamiento de androidx.camera:camera-view:1.0.0-alpha05. La versión 1.0.0-alpha05 contiene estas confirmaciones.

Errores conocidos

  • Es posible que la relación de aspecto sea incorrecta al usar PreviewView. (b/146215202)

Nuevas funciones

  • Se implementó una nueva clase llamada PreviewView.TextureViewImplementation que sincroniza el ciclo de vida de SurfaceTexture con el uso que hace la cámara de la superficie de TextureView.

Camera-Extensions versión 1.0.0-alpha04

4 de diciembre de 2019

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha04. La versión 1.0.0-alpha04 de camera-extensions contiene estas confirmaciones.

Cambios en la API

  • Ahora, la verificación de la disponibilidad y habilitación de una extensión toma un objeto CameraSelector como parámetro de entrada. Este debe ser el mismo elemento CameraSelector que se usa para vincular el caso práctico.

    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)
    
  • Antes de usar la biblioteca de extensiones, debes inicializar las extensiones.

    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 versión 1.0.0-alpha04

4 de diciembre de 2019

Lanzamiento de androidx.camera:camera-view:1.0.0-alpha04. La versión 1.0.0-alpha04 de la camera-view contiene estas confirmaciones.

Cambios en la API

  • Se proporciona una clase PreviewView para mostrar fácilmente el resultado del caso práctico de vista previa en una aplicación.
  • Se puede incluir PreviewView en el diseño:

    <androidx.camera.view.PreviewView
      android:id="@+id/preview_view"
      … />
    
  • PreviewView proporciona un elemento PreviewSurfaceProvider para conectar fácilmente un caso práctico de vista previa.

    preview.setPreviewSurfaceProvider(previewView.previewSurfaceProvider)
    
  • "ZoomLevel" ahora es "ZoomRatio" en la denominación de API.

  • Se cambió la nulidad de algunos parámetros del método.

Camera-Extensions y Camera-View versión 1.0.0-alpha03

9 de octubre de 2019

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha03 y androidx.camera:camera-view:1.0.0-alpha03. Estas son las confirmaciones incluidas en camera-extensions:1.0.0-alpha03, y estas las incluidas en camera-view:1.0.0-alpha03.

Nuevas funciones

  • Se agregó el inicializador de Context para extensiones. Se actualizó la versión de Extensions a 1.1.0.

Camera-Extensions y Camera-View versión 1.0.0-alpha02

5 de septiembre de 2019

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha02 y androidx.camera:camera-view:1.0.0-alpha02. Estas son las confirmaciones incluidas en camera-extensions:1.0.0-alpha02 y camera-view:1.0.0-alpha02.

  • Se agregaron pruebas para verificar que PreviewImageProcessorImpl haya implementado las marcas de tiempo de forma correcta.
  • Se solucionó el error de prueba ExtensionTest en Nexus 5 (API nivel 21) y se garantizó que la vista previa estuviera disponible.

Camera-Extensions y Camera-View versión 1.0.0-alpha01

7 de agosto de 2019

Lanzamiento de androidx.camera:camera-extensions:1.0.0-alpha01 y androidx.camera:camera-view:1.0.0-alpha01. Estas son las confirmaciones incluidas en camera-extensions:1.0.0-alpha01 y camera-view:1.0.0-alpha01.

  • Nueva biblioteca para futuras extensiones de cámara a fin de acceder a efectos en dispositivos compatibles. Aún estamos trabajando en esta biblioteca.
  • Nueva clase de Camera View. Aún estamos trabajando en esta biblioteca.