Tutti i progetti
Non più sullo store · ricompilata dai sorgentiCaso di studio

Herbarium

Una guida da campo tascabile a 500 erbe e fiori spontanei, con un taccuino per ciò che trovi.

Ruolo
Design e sviluppo, da solo
Tipo
Progetto personale, pubblicato su Google Play
Periodo
2016–2020 (versione 4.2)
Piattaforma
Android, Java nativo
  • Java
  • Android SDK
  • SQLite
  • ContentProvider
  • Google Maps
  • GPS
  • Glide

Il prodotto

Herbarium è una guida da campo che sta in tasca e funziona senza connessione: 500 specie, ognuna con foto, descrizione, distribuzione e habitat in inglese e in italiano, tutto incluso nell’app.

È costruita attorno alla domanda che ti fai davvero in mezzo a un prato (cos’è questa cosa viola, che fiorisce a settembre, a quattrocento metri?) e risponde filtrando per colore del fiore, per ciò che è in fiore questo mese e per l’altitudine indicata dal telefono. Poi tiene un taccuino: ogni ritrovamento viene salvato con posizione, altitudine, foto e note.

500
specie nel catalogo offline
2
lingue: inglese e italiano
1M
punti della griglia del geoide inclusi nell’app per trasformare la quota GPS in altitudine
10k
righe di Java

Tour guidato

L’app in azione

Scegli una registrazione, o salta direttamente a un capitolo.

Sfogliare il catalogo, primo fotogramma
0:00 / 1:28

Registrate dall’app vera su un emulatore Android. Senza audio.

Cosa fa

Da “che fiore è?” a una voce datata nel tuo taccuino

01

Un catalogo da sfogliare con gli occhi

Il catalogo è una parete di foto che scorre di lato, dimensionata sullo schermo in modo che ci stiano sempre quattro righe. Basta digitare parte di un nome scientifico perché l’elenco si restringa mentre scrivi; un tocco apre la pianta.

02

Filtri che rispecchiano come si incontra una pianta

Il nome lo si conosce di rado; si sa che aspetto ha la pianta e dove ci si trova. Per questo i filtri sono il colore del fiore, se la specie è in fiore questo mese e se cresce alla quota in cui sei, letta dal GPS. Si possono combinare liberamente.

03

Una scheda per ogni specie

Nome comune e scientifico, una foto con i crediti dell’autore che si può ingrandire, descrizione, distribuzione e habitat. Un calendario delle fioriture evidenzia il mese corrente e una piccola montagna mostra la fascia altimetrica, con una linea alla tua quota. Per approfondire, Wikipedia e Wikimedia Commons si aprono dentro l’app.

04

Un taccuino da campo

Un ritrovamento fissa il punto su una mappa satellitare e registra coordinate, data e altitudine. La quota GPS grezza sbaglia di decine di metri, quindi l’app fa la media di alcune letture e le corregge con un modello del geoide che porta con sé. Aggiungi una foto e una nota, e la pianta entra in “My Herbs”, dove sono conservati tutti i ritrovamenti di ogni specie.

Sotto il cofano

Come è stato realizzato

Offline first

Un database SQLite da 33 MB è incluso nell’app e scompattato al primo avvio, poi letto tramite un ContentProvider con contratti tipizzati. Gli aggiornamenti dei dati arrivano come script di migrazione, così chi aveva una versione precedente riceve le cento specie aggiunte in seguito senza perdere i propri ritrovamenti.

L’altitudine, fatta come si deve

Il GPS fornisce l’altezza rispetto a un ellissoide matematico, non sul livello del mare. Il database include la griglia del geoide EGM96 con risoluzione di un quarto di grado (circa un milione di righe) e l’app cerca la cella in cui si trova l’utente per convertire l’una nell’altra, dopo aver fatto la media di più rilevazioni.

UI su misura, senza framework

View scritte a mano disegnano il grafico dell’altitudine e danno forma alle foto; le dimensioni della griglia e degli elementi sono calcolate in base al display, così il layout regge su telefoni, tablet e in orizzontale. Google Maps per i ritrovamenti, Glide per la gestione delle immagini, query in background per uno scorrimento fluido.

Ricompilare oggi un’app Android del 2016

Il codice non era cambiato. Tutto il resto sì.

Il progetto non compilava più: gli strumenti di build erano obsoleti, il repository da cui scaricava le librerie aveva chiuso e la versione di una libreria era sparita. I sorgenti, invece, erano a posto.

  1. 1

    Una nuova build attorno al vecchio codice

    Un piccolo progetto contenitore compila i sorgenti originali lì dove si trovano, senza toccarli, con una toolchain Android attuale e repository che esistono ancora.

  2. 2

    Firmata come l’originale

    Google Maps risponde solo a un’app firmata con il certificato per cui è stata registrata. L’app ricompilata è firmata come l’originale, così le mappe satellitari si caricano.

  3. 3

    Due patch, applicate in fase di build

    La fotocamera dell’emulatore vede solo un salotto sintetico, quindi una fotocamera sostitutiva inquadra al suo posto la foto di una pianta vera. E Wikipedia ha dismesso i suoi indirizzi mobile, il che faceva saltare al browser la pagina aperta nell’app. Sono entrambe sostituzioni di una riga fatte durante la build; i file originali restano come sono.

  4. 4

    Registrata su un emulatore, da uno script

    Uno storyboard trova i widget attraverso l’albero di accessibilità di Android, invia veri eventi touch al touchscreen dell’emulatore, gli fornisce posizioni GPS e registra lo schermo. Ogni clip e ogni screenshot di questa pagina si possono rigenerare con un solo comando.

Le foto del catalogo sono accreditate ai loro autori all’interno dell’app. Il ritrovamento mostrato è stato inventato per la registrazione.

Catalogo

Un’app nativa non può girare in questa pagina: le registrazioni qui sopra sono l’app vera e propria, su un emulatore.

Ogni schermata

La raccolta completa degli screenshot

  • HomeDue porte: il catalogo e le tue erbe.
  • CatalogoTutte le piante, in una griglia di foto che scorre in orizzontale.
  • Filtro per colore del fioreScegli uno o più colori: com’era il fiore che hai visto?
  • In fiore adessoSolo le specie che fioriscono nel mese corrente.
  • Ricerca per nomeFiltro in tempo reale sul nome scientifico, mentre si digita.
  • Scheda piantaNome comune e nome scientifico sopra una foto a tutta larghezza.
  • DescrizioneCrediti della foto, descrizione, distribuzione e habitat.
  • Fioritura e altitudineIl mese corrente è evidenziato nel calendario delle fioriture; la montagna mostra la fascia altimetrica.
  • Per saperne di piùWikipedia e Wikimedia Commons, aperti dentro l’app, e la mappa dei tuoi ritrovamenti.
  • Visualizzatore di fotoZoom con due dita sulla foto della pianta.
  • WikipediaLa pagina della specie nella lingua del telefono.
  • Nuovo ritrovamentoLa posizione GPS su una mappa satellitare, pronta per essere salvata con la pianta.
  • Coordinate e altitudineLatitudine, longitudine e data vengono registrate automaticamente; la quota GPS viene mediata e corretta con un modello del geoide per ottenere l’altitudine reale.
  • Scattare una fotoNella build della demo una fotocamera sostitutiva inquadra una foto inclusa nell’app; su un telefono qui c’è la fotocamera di sistema.
  • Foto e note personaliLa foto appena scattata e una nota libera sul ritrovamento.
  • My HerbsTutte le specie che hai trovato, con la nota più recente.
  • Dettagli dei ritrovamentiTutti i ritrovamenti di una specie: dove, quando, a che quota, con le loro foto.

Prossimo caso di studio

Automha →