Todos los proyectos
Fuera de la tienda · reconstruida a partir del código fuenteCaso de estudio

Herbarium

Una guía de campo de bolsillo con 500 hierbas y flores silvestres, y un cuaderno para lo que encuentres.

Rol
Diseño y desarrollo, en solitario
Tipo
Proyecto personal, publicado en Google Play
Periodo
2016–2020 (versión 4.2)
Plataforma
Android, Java nativo
  • Java
  • Android SDK
  • SQLite
  • ContentProvider
  • Google Maps
  • GPS
  • Glide

El producto

Herbarium es una guía de campo que cabe en un bolsillo y funciona sin conexión: 500 especies, cada una con foto, descripción, distribución y hábitat en inglés e italiano, todo incluido dentro de la app.

Está construida en torno a la pregunta que de verdad te haces en un prado (¿qué es esta cosa morada que florece en septiembre a cuatrocientos metros?) y la responde filtrando por color de la flor, por lo que está en flor este mes y por la altitud que indica el teléfono. Después hace de cuaderno: cada observación se guarda con su posición, altitud, foto y notas.

500
especies en el catálogo sin conexión
2
idiomas: inglés e italiano
1M
puntos de la malla del geoide incluidos para convertir la altura GPS en altitud
10k
líneas de Java

Recorrido

La app en acción

Elige una grabación o salta directamente a un capítulo.

Explorar el catálogo, primer fotograma
0:00 / 1:28

Grabado con la app real en un emulador de Android. Sin sonido.

Qué hace

De «¿qué flor es esta?» a una entrada con fecha en tu cuaderno

01

Un catálogo que se recorre con la vista

El catálogo es un muro de fotos que se desplaza en horizontal, dimensionado según la pantalla para que siempre quepan cuatro filas. Al escribir parte de un nombre científico, la lista se va acotando; un toque abre la planta.

02

Filtros que se ajustan a cómo encuentras una planta

Rara vez sabes el nombre; sabes qué aspecto tiene y dónde estás. Por eso los filtros son el color de la flor, si la especie está en flor este mes y si crece a tu altitud actual, leída del GPS. Se combinan libremente.

03

Una ficha para cada especie

Nombre común y científico, una foto con su autoría que se puede ampliar, descripción, distribución y hábitat. Un calendario de floración resalta el mes actual y una pequeña montaña muestra el rango de altitud con una línea a tu propia altura. Wikipedia y Wikimedia Commons se abren dentro de la app para saber más.

04

Un cuaderno de campo

Una observación marca el lugar en un mapa satelital y registra coordenadas, fecha y altitud. La altura GPS en bruto se desvía decenas de metros, así que la app promedia varias lecturas y las corrige con un modelo de geoide que lleva incorporado. Con una foto y una nota, la planta pasa a «My herbs», donde se guardan todas las observaciones de una especie.

Por dentro

Cómo se construyó

Offline first

Una base de datos SQLite de 33 MB viene incluida en la app y se descomprime en el primer arranque; después se lee a través de un ContentProvider con contratos tipados. Las actualizaciones de datos llegan como scripts de migración, así que los usuarios de una versión anterior reciben el centenar de especies añadidas más tarde sin perder sus propias observaciones.

La altitud, como es debido

El GPS indica la altura sobre un elipsoide matemático, no sobre el nivel del mar. La base de datos incluye la malla del geoide EGM96 con una resolución de un cuarto de grado (alrededor de un millón de filas) y la app busca la celda en la que se encuentra el usuario para convertir una altura en la otra, tras promediar varias lecturas.

Interfaz a medida, sin framework

Vistas escritas a mano dibujan el gráfico de altitud y dan forma a las fotos; los tamaños de la cuadrícula y de los elementos se calculan a partir de la pantalla para que el diseño se mantenga en teléfonos, tabletas y en horizontal. Google Maps para las observaciones, Glide para la carga de imágenes, consultas en segundo plano para que el desplazamiento sea fluido.

Reconstruir hoy una app Android de 2016

El código no había cambiado. Todo lo que lo rodeaba, sí.

El proyecto ya no compilaba: sus herramientas de compilación estaban obsoletas, el repositorio del que descargaba las bibliotecas había cerrado y una versión de una biblioteca había desaparecido. El código fuente en sí estaba bien.

  1. 1

    Una compilación nueva alrededor del código antiguo

    Un pequeño proyecto envoltorio compila el código fuente original donde está, sin tocarlo, con herramientas de Android actuales y repositorios que todavía existen.

  2. 2

    Firmada como la original

    Google Maps solo responde a una app firmada con el certificado para el que se registró. La app reconstruida se firma igual que la original, así que los mapas satelitales cargan.

  3. 3

    Dos parches, aplicados al compilar

    La cámara del emulador solo ve una sala de estar sintética, así que una cámara sustituta encuadra en su lugar una foto real de una planta. Y Wikipedia retiró sus direcciones móviles, lo que hacía que la página dentro de la app saltara al navegador. Ambos son sustituciones de una línea hechas durante la compilación; los archivos originales se quedan como están.

  4. 4

    Grabada en un emulador, por un script

    Un storyboard encuentra los widgets a través del árbol de accesibilidad de Android, envía eventos táctiles reales a la pantalla táctil del emulador, le proporciona posiciones GPS y graba la pantalla. Cada clip y cada captura de esta página se pueden regenerar con un solo comando.

Las fotos del catálogo se atribuyen a sus autores dentro de la app. La observación que se muestra se inventó para la grabación.

Catálogo

Una app nativa no puede ejecutarse en esta página: las grabaciones de arriba son la propia app, en un emulador.

Todas las pantallas

La colección completa de capturas

  • InicioDos puertas: el catálogo y tus propias hierbas.
  • CatálogoTodas las plantas, en una cuadrícula de fotos con desplazamiento horizontal.
  • Filtrar por color de la florElige uno o más colores: ¿cómo era la flor que viste?
  • En flor ahoraSolo las especies que florecen en el mes actual.
  • Búsqueda por nombreFiltrado en vivo por nombre científico a medida que escribes.
  • Ficha de la plantaNombre común y científico sobre una foto a todo lo ancho.
  • DescripciónAutoría de la foto, descripción, distribución y hábitat.
  • Floración y altitudEl mes actual se resalta en el calendario de floración; la montaña muestra el rango de altitud.
  • Más sobre la plantaWikipedia y Wikimedia Commons, abiertas dentro de la app, y el mapa de tus observaciones.
  • Visor de fotosPellizca para hacer zoom en la foto de la planta.
  • WikipediaLa página de la especie en el idioma del teléfono.
  • Nueva observaciónLa posición del GPS en un mapa satelital, lista para guardarse con la planta.
  • Coordenadas y altitudLa latitud, la longitud y la fecha se registran automáticamente; la altura GPS se promedia y se corrige con un modelo de geoide para obtener la altitud real.
  • Tomar una fotoEn la compilación de la demo, una cámara sustituta encuadra una foto incluida en la app; en un teléfono, es la cámara del sistema.
  • Foto y notas personalesLa foto recién tomada y una nota de texto libre para la observación.
  • My herbsCada especie que has encontrado, con su última nota.
  • Detalles de la observaciónTodas las observaciones de una especie: dónde, cuándo, a qué altitud, con sus fotos.

Siguiente caso de estudio

Automha →