Visor de la cámara
En esta tabla, se enumeran todos los artefactos del grupo androidx.camera-viewfinder
.
Artefacto | Versión estable | Versión potencial | Versión beta | Versión alfa |
---|---|---|---|---|
viewfinder-compose | 1.5.0 | - | - | 1.4.0-alpha13 |
viewfinder-core | 1.5.0 | - | - | 1.4.0-alpha13 |
viewfinder-view | 1.5.0 | - | - | 1.4.0-alpha13 |
Cómo declarar dependencias
Para agregar una dependencia en camera-viewfinder, 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 { // Use to implement camera viewfinders implementation "androidx.camera.viewfinder:viewfinder-view:1.5.0" implementation "androidx.camera.viewfinder:viewfinder-compose:1.5.0" implementation "androidx.camera.viewfinder:viewfinder-core:1.5.0" }
Kotlin
dependencies { // Use to implement camera viewfinders implementation("androidx.camera.viewfinder:viewfinder-view:1.5.0") implementation("androidx.camera.viewfinder:viewfinder-core:1.5.0") implementation("androidx.camera.viewfinder:viewfinder-compose:1.5.0") }
Para obtener más información sobre las dependencias, consulta Cómo agregar dependencias de compilación.
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.
Consulta la documentación sobre la Herramienta de seguimiento de errores para obtener más información.
Versión 1.5
Versión 1.5.0
10 de septiembre de 2025
Lanzamiento de androidx.camera.viewfinder:viewfinder-compose:1.5.0
, androidx.camera.viewfinder:viewfinder-core:1.5.0
y androidx.camera.viewfinder:viewfinder-view:1.5.0
. La versión 1.5.0 contiene estas confirmaciones.
Cambios importantes desde la versión 1.4.0:
Esta es la primera versión estable de la biblioteca de Camera Viewfinder, que proporciona APIs robustas, basadas en View y Compose, que tienen en cuenta el ciclo de vida y son fáciles de usar. Estos componentes están diseñados para funcionar como visor de la cámara y se pueden integrar directamente con Camera2.
Esta versión también establece la base para el nuevo artefacto androidx.camera:camera-compose
, que introduce CameraXViewfinder
, un visor idiomático de Compose que se integra sin problemas con los SurfaceRequest
de CameraX, de manera similar a como funciona PreviewView
para los diseños basados en vistas. Algunos de los cambios más importantes incluyen los siguientes:
- Reubicación de artefactos: Para mejorar la modularidad, los artefactos de Viewfinder se movieron a su propio grupo de bibliotecas. Los desarrolladores que antes usaban dependencias de
androidx.camera:camera-viewfinder*
deben migrar aandroidx.camera.viewfinder:viewfinder-*
. - Estabilización y perfeccionamiento de la API: Se pulió la superficie de la API para esta versión estable. Esto incluye cambiar el nombre de
CameraViewfinder
aViewfinderView
para reflejar mejor su versatilidad, reorganizar los paquetes para mayor claridad y convertirViewfinderSurfaceRequest
en un tipo de datos inmutable para una administración de estados más predecible. - Actualizaciones de la API de Compose: La API de
Viewfinder
de Compose ahora admiteContentScale
yAlignment
para un control detallado sobre cómo se muestra la transmisión de la cámara dentro de su contenedor, lo que refleja el comportamiento del elementoandroidx.compose.foundation.Image
componible estándar. - Administración del ciclo de vida de la superficie: Ahora,
ViewfinderSurfaceSession
se mantiene activo durante los cambios de configuración y los eventos del ciclo de vida en la API 29 y versiones posteriores. Este cambio está diseñado para reducir la cantidad de fotogramas descartados y proporcionar una experiencia del usuario más fluida. - Configuración predeterminada del modo de implementación: Ahora,
Viewfinder
se establece de forma predeterminada en unImplementationMode
inteligente que selecciona automáticamente la mejor implementación subyacente. Prioriza elSurfaceView
de alto rendimiento (modoEXTERNAL
) y recurre de forma correcta alTextureView
más compatible (modoEMBEDDED
) en niveles de API anteriores o dispositivos con problemas de compatibilidad conocidos. Este comportamiento se puede anular para que el desarrollador tenga el control total.
Correcciones de errores
- El elemento
Viewfinder
componible ahora funciona correctamente dentro dePager
de Compose y conmovableContentOf()
, lo que garantiza que la superficie se restablezca y administre correctamente en situaciones complejas de la IU. (I0d9be, I79432) - Se solucionó un problema en Android 10 y 11 por el que el
Viewfinder
basado enSurfaceView
podía aparecer expandido cuando se aplicaban transformaciones. (Icc77c)
Versión 1.5.0-rc01
13 de agosto de 2025
Lanzamiento de androidx.camera.viewfinder:viewfinder-compose:1.5.0-rc01
, androidx.camera.viewfinder:viewfinder-core:1.5.0-rc01
y androidx.camera.viewfinder:viewfinder-view:1.5.0-rc01
. La versión 1.5.0-rc01 contiene estas confirmaciones.
Correcciones de errores
- Se trasladó el
minSdk
predeterminado de la API 21 a la API 23 (Ibdfca, b/380448311, b/435705964, b/435705223).
Versión 1.5.0-beta03
16 de julio de 2025
Lanzamiento de androidx.camera.viewfinder:viewfinder-compose:1.5.0-beta03
, androidx.camera.viewfinder:viewfinder-core:1.5.0-beta03
y androidx.camera.viewfinder:viewfinder-view:1.5.0-beta03
. La versión 1.5.0-beta03 contiene estas confirmaciones.
Correcciones de errores
- El
ImplementationMode
predeterminado paraViewfinder
(tanto para Compose como para las basadas en View) ahora selecciona de forma inteligente entreEXTERNAL
(para el rendimiento) yEMBEDDED
(para la compatibilidad en APIs anteriores o dispositivos poco comunes). Este comportamiento se puede anular con parámetros de configuración explícitos enViewfinderSurfaceRequest
o atributos XML (en la API basada en View). (Iecd3a) - Se mejoró la administración de sesiones de Surface permitiendo que
ViewfinderSurfaceSession
se mantenga activo durante los ciclos de vida de creación y destrucción de superficies cuando se usa TextureView o SurfaceView en la API 29 y versiones posteriores. (I112d9) - El
Viewfinder
ahora garantiza que las Surfaces se liberen en el momento adecuado, solo cuando la sesión ya no las use, en lugar de liberarlas siempre cuando se descarta el elemento Composable. En el caso deEXTERNAL
(SurfaceView
), este comportamiento solo está disponible en el nivel de API 29 y versiones posteriores. En el caso deEMBEDDED
(TextureView
), este comportamiento está presente en todos los niveles de API. (I9a03f) - El
Viewfinder
ahora controla correctamente el reemplazo de superficies en situaciones como cuando un visor deEXTERNAL
en el nivel de API 28 o inferior se mueve fuera de la pantalla o si unViewfinder
(con cualquierImplementationMode
) forma parte demoveableContentOf()
. (I79432) - El elemento
Viewfinder
componible ahora funciona correctamente con el elementoPager
de Compose. Este cambio garantiza que el elemento Composable se pueda restablecer correctamente implementando la devolución de llamadaonReset
deAndroidView
, lo que admite implementaciones deEMBEDDED
yEXTERNAL
. (I0d9be) - Se solucionó un problema en Android 10 y 11 por el que el
EXTERNAL
Viewfinder
podía aparecer estirado o incorrecto debido a que las operaciones de transformación (como escalar o trasladar) se aplicaban demasiado pronto. Ahora, el sistema espera a que se cree la Surface antes de aplicar estas transformaciones en la fase de diseño, lo que garantiza una salida correcta. (Icc77c)
Versión 1.5.0-beta02
4 de junio de 2025
Lanzamiento de androidx.camera.viewfinder:viewfinder-compose:1.5.0-beta02
, androidx.camera.viewfinder:viewfinder-core:1.5.0-beta02
y androidx.camera.viewfinder:viewfinder-view:1.5.0-beta02
. La versión 1.5.0-beta02 contiene estas confirmaciones.
Versión 1.5.0-beta01
7 de mayo de 2025
Lanzamiento de androidx.camera.viewfinder:viewfinder-compose:1.5.0-beta01
, androidx.camera.viewfinder:viewfinder-core:1.5.0-beta01
y androidx.camera.viewfinder:viewfinder-view:1.5.0-beta01
. La versión 1.5.0-beta01 contiene estas confirmaciones.
- Esta es la primera versión beta oficial de los visores basados en vistas y en Compose, que son lo suficientemente flexibles como para usarse con Camera2. Si buscas un elemento View o componible para usar con CameraX, consulta
PreviewView
yCameraXViewfinder
.
Nuevas funciones
- Ahora se pueden usar
ContentScale
yAlignment
en el visor basado en Compose para escalar y colocar la superficie mostrada dentro de su contenedor, de manera similar a como se comportaandroidx.compose.foundation.Image
. (Ibcea3)
Cambios en la API
TransformationInfo
ahora tiene valores predeterminados para todos los argumentos. Esto permitirá que se creen los visores sin ningúnTransformationInfo
, que se establecerá de forma predeterminada en una rotación de la fuente de 0, sin duplicación de la fuente y sin un rectángulo de recorte. (I2b1b2)- El visor componible ahora toma una expresión lambda final para recibir una sesión de Surface, de manera similar a
AndroidExternalSurface
. La expresión lambda proporcionada usaViewfinderInitScope
como receptor, lo que permite instalar una devolución de llamada para recibir nuevas sesiones de Surface. Estas sesiones de superficie liberan automáticamente los recursos que mantiene el Buscador cuando salen del alcance. (Ib2b0d) ViewfinderSurfaceRequest.Builder.populateFromCharacteristics
se quitó y se reemplazó por un conjunto equivalente de APIs estáticas que se pueden usar para generarTransformationInfo
, que producirá la misma transformación quepopulateFromCharacteristics
. Estos métodos estáticos se agregan a la claseCamera2TransformationInfo
. (Idc6af)ViewfinderSurfaceRequest
ya no incluye APIs asíncronas para recuperar la superficie. Ahora es un tipo de datos inmutable. Las APIs para recuperar la Surface ahora se trasladaron al visor. (I30127)- Se cambió el nombre de
CameraViewfinder
porViewfinderView
para que coincida con el nombre del elemento componible Viewfinder y para indicar que se puede usar con más fuentes que solo las de la cámara. (Id9e6b) - Las clases de
viewfinder-view
se movieron al subpaqueteandroidx.camera.viewfinder.view
desde el paqueteandroidx.camera.viewfinder
. (I6cb44) - Se agregaron nuevas APIs al visor basado en vistas que permiten establecer la rotación, la duplicación y el rectángulo de recorte de la fuente. Esta clase
TransformationInfo
es la misma que usa el Viewfinder basado en Compose. (I907c3) - El Visor basado en vistas ahora usa nuevas APIs de
ViewfinderSurfaceRequest
que ya no controlan internamente la respuesta de Surface. En lugar de devolverListenableFuture<Surface>
, las APIs derequestSurfaceSession()
ahora devuelvenListenableFuture<ViewfinderSurfaceSession>
, que devuelve una claseAutoCloseable
que, cuando se cierra, se comporta de la misma manera que cuando se llama a la API anterior deViewfinderSurfaceRequest.markSurfaceSafeToRelease()
. Esto proporciona una separación más clara de las responsabilidades entre la solicitud y la respuesta de la superficie. (I19041)
Versión 1.4
Versión 1.4.0-alpha13
26 de febrero de 2025
Lanzamiento de androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha13
, androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha13
y androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha13
. La versión 1.4.0-alpha13 contiene estas confirmaciones.
Versión 1.4.0-alpha12
15 de enero de 2025
Lanzamiento de androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha12
, androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha12
y androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha12
. La versión 1.4.0-alpha12 contiene estas confirmaciones.
Nuevas funciones
- Se actualizó
compileSdk
a 35 para usar la API relacionada con Android 15. Las apps que usan bibliotecas de CameraX también deberán actualizar su parámetro de configuración decompileSdk
. (Ic80cd) - Esta biblioteca ahora usa anotaciones de nulabilidad de JSpecify, que son de uso de tipo. Los desarrolladores de Kotlin deberían usar el siguiente argumento del compilador para aplicar el uso correcto:
-Xjspecify-annotations=strict
(este es el valor predeterminado a partir de la versión 2.1.0 del compilador de Kotlin). (I7bcd7, b/326456246)
Versión 1.4.0-alpha11
11 de diciembre de 2024
Lanzamiento de androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha11
, androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha11
y androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha11
. La versión 1.4.0-alpha11 contiene estas confirmaciones.
Cambios en la API
- Las clases
viewfinder-core
se movieron a paquetes que son coherentes con la biblioteca a la que pertenecen. (I431c6) - Se movió
CameraViewfinder.ScaleType
aviewfinder-core
para que se pueda reutilizar con Compose (I87ef1). - Se quitaron las clases
CameraViewfinder
obsoletas. Usa las nuevas APIs que proporcionan una funcionalidad equivalente. (I6e59a)
Versión 1.4.0-alpha10
30 de octubre de 2024
Lanzamiento de androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha10
, androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha10
y androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha10
. La versión 1.4.0-alpha10 contiene estas confirmaciones.
Versión 1.4.0-alpha09
2 de octubre de 2024
Lanzamiento de androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha09
, androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha09
y androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha09
. La versión 1.4.0-alpha09 contiene estas confirmaciones.
Versión 1.4.0-alpha08
4 de septiembre de 2024
Lanzamiento de androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha08
, androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha08
y androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha08
. La versión 1.4.0-alpha08 contiene estas confirmaciones.
Nuevas funciones
Con la actualización a la versión 1.4.0-alpha08, el artefacto del visor de CameraX se movió a su propio grupo de bibliotecas. Este cambio es necesario para mejorar la modularidad y el mantenimiento de la biblioteca de CameraX.
Si antes dependías de androidx.camera:camera-viewfinder
, androidx.camera:camera-viewfinder-compose
o androidx.camera:camera-viewfinder-core
, deberás migrar tus dependencias a lo siguiente:
androidx.camera:camera-viewfinder
->androidx.camera.viewfinder:viewfinder-view
androidx.camera:camera-viewfinder-compose
->androidx.camera.viewfinder:viewfinder-compose
androidx.camera:camera-viewfinder-core
->androidx.camera.viewfinder:viewfinder-core
No se deberían requerir cambios en el código para realizar esta transición. Las coordenadas de Maven del antiguo Viewfinder ya no recibirán actualizaciones.
Además, si usas Compose con CameraX, ahora hay disponible una nueva biblioteca que prioriza Compose en versión alfa: androidx.camera:camera-compose
. Esto proporciona el elemento CameraXViewfinder
componible, que es un visor idiomático de Compose que adapta el elemento SurfaceRequest
de CameraX a Compose, de manera similar a como funciona PreviewView
para las vistas.