Integración de intents y estados en pantalla mapa con Compose

Clase 17 de 33Curso de Android: Integración de APIs nativas

Resumen

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 Button con 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.