Generalidades

Utilice Jetpack Compose, CameraX y Coroutines para crear una aplicación fotográfica sencilla Parte 4: Selección de galería | Autor: David Pisoni | Septiembre de 2021

Utilice Jetpack Compose, CameraX y corrutinas para crear una aplicación fotográfica sencilla Parte 4: Selección de galería

1* eOzIwKBl6OvEfRola4eMw

Esta es la cuarta lección de la serie. Utilice las corrutinas Jetpack Compose, CameraX y Kotlin para crear una aplicación fotográfica sencillaSi acaba de unirse a nosotros y desea comenzar desde el principio, vaya al Paso 1: Utilice Acompañante en Jetpack Compose para solicitar permisos de dispositivo. De lo contrario, este artículo solo contendrá ejemplos; para ejecutar el código, debe construirse sobre el código de las lecciones anteriores.

El resto de esta serie es:

  1. Utilice el acompañamiento para solicitar permisos de dispositivo en Jetpack Compose
  2. Utilice las corrutinas Jetpack Compose, CameraX y Kotlin para la vista previa de la cámara
  3. Tome fotos con Jetpack Compose, CameraX y Coroutine de Kotlin
  4. Utilice Jetpack Compose para seleccionar fotos de la biblioteca multimedia (este artículo)

al final En el artículo anterior, tenemos una aplicación disponible que proporciona captura de imágenes de la cámara «apuntar y disparar», y luego muestra la imagen capturada en la pantalla. En esta lección, proporcionaremos otra fuente de imágenes, la biblioteca multimedia del dispositivo.

Si crea esta aplicación conmigo, solo tenemos que hacer algunas tareas domésticas primero … MainContent Y extraer emptyImageUri Al valor de todo el archivo para que podamos compartirlo:

sigue adelante……

Galería de arte

Si desea obtener más información sobre cómo utilizar la biblioteca multimedia de Android para acceder a varios tipos de archivos multimedia, consulte la guía. Acceda a archivos multimedia desde el almacenamiento compartido.

Ahora veamos cómo leer imágenes de la biblioteca de medios del dispositivo.Primero, necesitamos agregar otro permiso AndroidManifest.xml:

Ahora construyamos nuestro Composable Se utiliza para iniciar el selector de imágenes de Android. primer paso:

expliqué CompositionLocal Objeto, donde LocalContext Es un ejemplo en parte 2 De esta serie.

onImageUri Es como mejoramos el resultado para Composable Esta función se llama.El usuario solo puede elegir una imagen, por lo que solo una Uri Debería ser devuelto.

rememberLauncherForActivityResult() ¿Es Jetpack Compose y el antiguo análogo? onRequestPermissionsResult()O es una implementación más nueva: registerForActivityResult().

También vale la pena señalar que si el usuario sale sin seleccionar una imagen (por ejemplo, realizar una acción de «regresar»), entonces uri Estará vacío, por lo que debemos establecerlo en el marcador de posición que establecimos anteriormente, EMPTY_IMAGE_URI.

Pero estos códigos aún no han comenzado nada, así que continuemos construyendo GallerySelect:

Ahora nosotros launch() esta launcher Lo creamos arriba.Pero debido a que esto causará el efecto secundario de iniciar otro Activity, Tenemos que terminar SideEffect¡Si no hacemos esto, esto realmente fallará! Más detalles sobre esto en Jetpack Compose Side Effects.

Este código es adecuado para versiones de Android anteriores a Android 10, pero no para Android 10 y superior, porque necesitamos solicitar permiso para acceder a la biblioteca multimedia desde nuestra aplicación. Afortunadamente, Hemos escrito un Permission Un contenedor para nuestra aplicación, para que podamos reutilizarlo aquí. (¿No está contento de que lo hayamos escrito para su reutilización? ¡De nada!) Este es el código completo GallerySelect:

Si lo omite, escribimos Permission Composable En la primera parte de esta serie, Utilice el acompañamiento para solicitar permisos de dispositivo en Jetpack Compose.

Solo otros lugares notables tienen un botón adicional para forzar la llamada onImageUri(), Esto indicará que el lanzador está completo.

Atar la cuerda

Finalmente, necesitamos fusionarlo en nuestro MainContent. Decidí simplemente agregar un botón que se superponga a la vista previa de la cámara, al presionar este botón agregará GallerySelect Ir a la vista actual.Así que ahora nuestro principal else Evitar MainContent Se parece a esto:

El código para este ejercicio se puede encontrar en GitHub.

Así que envolvemos CameraCapture en un Box Entonces podemos agregar Button encima de eso.Apretar Button Cambió nuestra suspensión showGallerySelect llegar true. Dado que el estado de este valor es remembered, cerrado Composable Cuando el valor cambia, se vuelve a dibujar a sí mismo, lo que hace que la vista cambie a GallerySelect Composable Lo creamos antes.

Corredor cansado "Demasiados pasos, demasiado código"

¡Eso es todo! La aplicación que creamos no es muy útil por sí sola: cree una capa de repositorio y conéctela a una base de datos, en realidad puede usar esta aplicación como una galería. O puede usar MLKit Vision para el análisis de imágenes para identificar varios objetos en la foto. ¡Aquí hay muchas posibilidades!

Espero que estos artículos le hayan resultado útiles. Traté de mantenerlos breves y concentrados. Publique cualquier comentario o sugerencia en la sección de comentarios; me encantaría escuchar sus opiniones.

LEER  Emulador de PC Megadrive - Consejos prácticos

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba