Integración de intents y estados en pantalla mapa con Compose
Clase 17 de 33 • Curso de Android: Integración de APIs nativas
Contenido del curso
- 7

Emisión controlada de tiempo con Kotlin Flows
12:55 - 8

Simulación de ubicación GPS en emulador y dispositivo Android
05:48 - 9

Modelos de localización personalizados con Clean Architecture en Kotlin
08:36 - 10

Mapeo de datos de localización en Android con Kotlin
14:51 - 11

Inyección de dependencias para observar localización en Android
06:33 - 12

StateFlow para controlar localización en aplicaciones Android
08:47 - 13

State Flows para controlar localización y tiempo en Kotlin
10:00 - 14

Configuración y pruebas de Location Tracker en Android
09:37 quiz de Servicios de Localización
- 15

Integración de ubicación actual en mapas interactivos
06:46 - 16

Creación de polilíneas con datos reales en mapas de Android
04:07 - 17

Integración de intents y estados en pantalla mapa con Compose
08:05 - 18

Implementación del ViewModel para rastreo de localización en Android
14:29 quiz de Integración Maps con Localización
- 19

Gestión de permisos en tiempo de ejecución para aplicaciones Android
08:34 - 20

Creación de diálogos de permisos reutilizables en Android
06:55 - 21

Gestión de permisos de localización y notificaciones en Android
10:18 - 22

Implementación de solicitud de permisos con LaunchedEffect en Compose
09:53 quiz de Manejo de permisos
- 23

Implementación de PhotoHandler para gestión de cámara en Android
11:59 - 24

Conversión de Bitmaps a Byte Arrays con Extension Functions
05:58 - 25

Definición de Intents y estados de UI para cámara en Kotlin
08:41 - 26

Configuración de métodos del ViewModel para gestión de cámara
09:41 - 27

Integración de CameraX con Jetpack Compose en Android
14:23 - 28

Creación de pantalla de previsualización de fotos con Jetpack Compose
08:44 - 29

Integración de galería fotográfica en mapas con Jetpack Compose
11:56 quiz de Integración cámara
La integración efectiva de intents y estados con Jetpack Compose permite a los desarrolladores Android crear aplicaciones más claras y fáciles de mantener. En particular, trabajar con mapas y seguimiento de ubicación requiere un diseño específico en términos de entradas (intencciones o acciones del usuario) y salidas (estado de la pantalla y localizaciones actuales). Aquí aprenderás cómo estructurar correctamente estas interfaces.
¿Qué son los intents y cómo usarlos en la pantalla mapa?
Un intent representa una acción específica del usuario que interactúa directamente con la interfaz. En esta implementación, contamos con tres acciones principales:
- Iniciar rastreo: para arrancar por primera vez el seguimiento.
- Pausar rastreo: permite detener temporalmente el seguimiento.
- Reanudar rastreo: continúa un seguimiento previamente pausado.
Estos intents se definen en una interfaz específica, ayudando así a organizar claramente las diferentes acciones disponibles para los usuarios.
¿Qué información maneja el estado del rastreo en nuestra pantalla?
El estado (state) es representado por una data class llamada tracking location state. Esta clase permite gestionar información diversa, como:
- isTracking: indica si el seguimiento de ubicación está activo (Booleano, inicializado en false).
- isPaused: señala si actualmente está pausado el seguimiento (Booleano, inicializado en false).
- currentLocation: almacena la ubicación actual del usuario (puede iniciar como null).
- selectedLocation: captura la ubicación seleccionada con marca de tiempo para funcionalidades futuras (inicia como null).
- trackingDataSegments: lista de listas que almacenan los segmentos de recorrido en seguimiento (inicialmente vacía).
Mantener esta información organizada y accesible permite que la aplicación responda de manera adecuada a las acciones del usuario y gestione correctamente su estado interno.
¿Cómo construir la pantalla mapa en Jetpack Compose?
Crear la interfaz gráfica implica construir una función composable llamada map screen.
Definición básica del composable
Este composable recibe dos elementos principales:
- Una función lambda
onAction, encargada de enviar las acciones realizadas por el usuario. - Un
tracking location state, representando el estado actual de la pantalla.
Diseño con Scaffold y botones flotantes
El layout se organiza dentro de un Scaffold, facilitando añadir elementos como botones flotantes, barras y espaciados internos:
- Utilizamos un
Floating Action Buttoncon posición central. - Este botón cambia su imagen de acuerdo al estado actual del rastreo:
- Ícono "play" cuando el rastreo está pausado.
- Ícono "pausa" mientras el seguimiento está activo.
Implementación del mapa visual
En un contenedor Box, utilizamos paddingValues para garantizar que los contenidos no interfieran con la barra de notificaciones o navegación. Dentro del Box ubicamos la sección del mapa (mapSection) que refleja:
- La ubicación actual según el estado proporcionado.
- Los segmentos del seguimiento actualmente activos.
El uso del modificador fillMaxSize asegura que el mapa ocupe toda la pantalla disponible, proporcionando así una experiencia óptima a los usuarios.
Comenta tus dudas y comparte cómo aplicas estas implementaciones en tu proyecto actual.