Vai al contenuto
Leo

Parte V — Fare cose vere

Capitolo 18 — App per Android

Leo non vive solo sul computer. Con l'app Leo per Android puoi scrivere ed eseguire programmi direttamente sul telefono, disegnare app con le finestre toccando lo schermo e trasformarle in app vere da installare. E non è una versione ridotta: è lo stesso interprete, la stessa libreria, lo stesso linguaggio. Un progetto fatto sul PC gira sul telefono, e viceversa.

Lo stesso linguaggio, un nuovo mondo

Tutto quello che hai imparato finora vale identico sul telefono. Un progetto con finestre ha lo stesso formato di Leo Studio — progetto.toml, i file .maschera, i file .leo — quindi puoi cominciare un'app sul computer e rifinirla sul telefono, o il contrario. La differenza non è nel linguaggio: è in ciò che il telefono ha in più. Un computer non ha una bussola, un accelerometro, un GPS, una torcia. Un telefono sì, e Leo ti ci fa parlare con la stessa naturalezza con cui, sul PC, parli a un pulsante.

💡 L'idea — Un computer con i sensi

Uno smartphone è un piccolo computer tascabile dotato di sensi: la fotocamera sono i suoi occhi, il microfono le orecchie, il GPS il senso dell'orientamento, l'accelerometro l'equilibrio dell'orecchio interno. Programmarlo significa dargli istruzioni su come usare questi sensi. Leo ti lascia parlare a ciascuno di essi con la stessa naturalezza con cui, sul computer, parli a un pulsante.

L'hardware a portata di quando

I sensori e i dispositivi del telefono sono controlli come gli altri, con le loro proprietà e i loro eventi. Vibrazione, torcia, batteria, bussola, livella, posizione, condivisione: ognuno è un mattone pronto. Ecco, per esempio, un programma che calcola quanto sei lontano da un punto noto usando il GPS (è codice reale dalla documentazione dell'app):

Leo
quando PulsanteDove.clic fai
    Posizione1.avvia()
fine

quando Posizione1.cambio fai
    variabile km = arrotonda(Posizione1.distanza_da(41.8902, 12.4922) / 1000, 1)
    Etichetta1.testo = "Sei a {km} km dal Colosseo"
fine

quando Posizione1.errore fai
    Etichetta1.testo = evento["messaggio"]
fine

Riconosci la struttura: al clic avvii il GPS; quando la posizione cambia, calcoli la distanza e aggiorni un'etichetta; se qualcosa va storto (permesso negato, segnale assente), l'evento errore ti dà un messaggio da mostrare. È lo stesso schema a eventi del capitolo scorso, applicato all'hardware.

Oppure un piccolo «pappagallo» che ascolta e ripete, usando dettatura, voce e vibrazione:

Leo
quando Microfono.frase_riconosciuta fai
    Stato.testo = "Hai detto: {evento["testo"]}"
    VoceTelefono.leggi(evento["testo"])
fine

quando VoceTelefono.fine_lettura fai
    Vibrazione1.vibra(60)
fine

La prima volta che un programma usa la fotocamera, il microfono o la posizione, il telefono chiede il permesso. Se l'utente rifiuta, Leo lo scrive in italiano e il programma prosegue senza andare in crisi. I permessi si chiedono solo quando servono davvero, e l'app non ha account, pubblicità né tracciamento.

Cosa c'è e cosa no

Quasi tutto funziona uguale, ma qualche controllo è legato al mondo del PC e sul telefono non c'è (ancora): i giochi con la fisica (Scena, Sprite), l'hardware da banco (SchedaPico, PortaSeriale), il server web. Quando un programma li incontra sul telefono, al loro posto compare un riquadro «non disponibile» e l'esecuzione continua. Viceversa, molte cose funzionano su entrambi: video, mappe disegnate senza Internet, cruscotti, grafici dal vivo e tutti i sensori del telefono. La tabella completa, controllo per controllo, è nella scheda CONTROLLI.md; la scheda TELEFONO.md è la guida dedicata all'app.

Dall'idea all'APK

Quando l'app è pronta, diventa un file .apk — il formato delle applicazioni Android — che puoi installare sul tuo telefono e passare ad altri. L'app Leo per Android stessa è un unico APK che gira su tutti i telefoni dalla versione 7.0 in su. La costruzione dell'APK si fa sul computer; i passi dettagliati sono nelle schede TELEFONO.md e android/LEGGIMI.md, e torneremo sul tema della distribuzione nel prossimo... anzi, tra due capitoli, quando parleremo di come consegnare i programmi a chi non ha Leo.

🦁 Curiosità — Cosa c'è dentro un APK

Un'app Android non è altro che un file con estensione .apk: in pratica un pacchetto compresso, parente stretto di uno zip, che contiene tutto il necessario per installarla — codice, immagini, suoni e istruzioni. Quando tocchi «installa», il telefono apre il pacchetto e monta l'app al posto giusto. È un po' come ricevere un mobile in scatola: tutti i pezzi sono lì dentro, pronti per essere montati.

Il punto da portare a casa è questo: l'italiano, la semplicità e la libreria completa di Leo non restano chiusi in un terminale. Lo stesso programma che hai scritto per imparare può diventare un'app che porti in tasca, che usa la bussola e il GPS, e che regali a un amico con un file solo.

Prova tu

Questi esercizi richiedono l'app Leo per Android installata sul telefono.

  1. Crea un'app con un pulsante che, al clic, fa vibrare il telefono e accende la torcia; un secondo pulsante la spegne.
  2. Fai un'app «bussola» che mostra in un'etichetta il punto cardinale verso cui sei rivolto, usando l'evento cambio del controllo Bussola.
  3. Riprendi un progetto a finestre che hai fatto sul PC (il «Saluto», per esempio), copialo sul telefono e verificalo: gira senza modifiche?