Programmazione Android e le sue componenti fondamentali: realizzazione di un’app che monitora lo stato d’animo dell’utente

I miei studi nella laurea triennale si sono conclusi con lo svolgimento di un tirocinio e conseguentemente la redazione di una tesi riguardante la realizzazione di un’applicazione Android. Come tutti sappiamo, essendo questa l’era degli smartphone, la programmazione Android sta assumendo sempre più un ruolo fondamentale nell’ambito informatico e nell’articolo seguente andremo ad analizzare quali sono stati i passi più importanti da me compiuti nello svolgimento della mia applicazione. In particolare, l’obiettivo era realizzare un’applicazione che sottoponesse l’utente (in particolare il soggetto in età avanzata) ad due quiz, uno di tipo giornaliero, ed uno di tipo settimanale, al fine di valutarne l’umore monitorando la situazione emotiva del soggetto giorno per giorno.

L‘Ambient Assisted Living

Dapprima di entrare nel merito della parte tecnica, mi preme ribadire che l’applicazione realizzata rientra nell’ambito dell’Ambient Assisted Living, ovvero un programma di ricerca europeo basato sull’art. 185 del Trattato sul funzionamento dell’Unione Europea, lanciato nel 2008, come riportato nel sito ufficiale dell’Agenzia nazionale per le nuove tecnologie, l’energia e lo sviluppo economico sostenibile. Lo scopo dell’AAL è la realizzazione di nuove tecnologie per dare la possibilità ad anziani e disabili di migliorare la propria autonomia, facilitandone le attività giornaliere e garantendo altresì buone condizioni di sicurezza. Tali tecnologie potrebbero evitare di ricorrere a strutture quali ospedali o case di riposo, permettendo una miglior qualità della vita della persona.

Con ambiente di vita assistito si definisce un ambiente reso attivo, intelligente e cooperativo attraverso un insieme di soluzioni tecnologiche, rendendo efficace e sostenibile una vita indipendente da parte della persona anziana in questo caso, fornendo sicurezza, facilità e soddisfazione nello svolgimento di qualsiasi attività quotidiana.

L’applicazione cerca di andare proprio in questa direzione, monitorando sia giornalmente sia settimanalmente lo stato d’animo di persone anziane, e pur non fornendo un miglioramento concreto dal punto di vista della qualità della vita dell’utente, attraverso i dati ricevuti da ogni questionario, si potrà constatare quali sono i disturbi fisici più frequenti e lo stato d’animo che la maggior parte degli anziani provano. Ed in tal senso, sarà più semplice realizzare e sviluppare nuove tecnologie atte a migliorare l’autonomia degli stessi, sapendo su quale ambito maggiormente si dovrà andare ad operare.

La programmazione Android

Dopo aver effettuato le dovute premesse, è ora tempo di passare alla parte tecnica del lavoro svolto. Data la vasta mole di utenti che nell’ultimo periodo hanno iniziato a cimentarsi con la programmazione Android, il sito ufficiale per sviluppatori ha redatto una guida ufficiale in cui sono indicate le principali componenti per programmatori utili per realizzare un’applicazione Android.

Innanzitutto, un ruolo fondamentale nella creazione delle applicazioni lo riveste il cosiddetto Android SDK. La sua importanza può essere sottovalutata, in quanto agli occhi del programmatore la sua installazione passa inosservata, dato che viene scaricato insieme ad Android Studio, l’ambiente di sviluppo creato ad hoc per Android. SDK è una sigla che sta per Software Development Kit, ovvero un pacchetto di sviluppo per applicazioni e software. Consiste in molti strumenti, tra cui programmi, emulatori, per lo sviluppo e la documentazione del software, e viene gestito dall’Android SDK Manager, integrato in Android Studio.Spesso in molti fanno confusione a riconoscere quale sia la differenza tra API e SDK; con API, acronimo di Application Programming Interface, si indica l’insieme di risorse disponibili al programmatore, solitamente raggruppate a formare un set di strumenti utili all’espletamento di particolari istruzioni all’interno di un certo programma. Più comunemente col suddetto termine si intendono le librerie software disponibili in un certo linguaggio di programmazione. Si può dire che le API sono insiemi di librerie e metodi per uno scopo specifico, mentre gli SDK sono un set completo che permettono di eseguire le maggiori azioni per la creazione di un’applicazione. In definitiva si può affermare che tutti gli SDK contengono o sono loro stesse delle API, di contro però non tutte le API sono SDK.

Terminata questa doverosa parentesi su SDK e API, si andranno ora a presentare le componenti della programmazione Android che lo sviluppatore utilizza direttamente durante la realizzazione della propria applicazione. Esse possono essere ricondotte a quattro, ossia Activity, Service, Content Provider e Broadcast Receiver. Vi è poi una quinta componente, anch’essa importantissima e diffusa soprattutto con il passare del tempo, che sono i Fragment; anch’essi verranno descritti seguentemente dato che nella realizzazione dell’applicazione ne ho fatto largamente uso.

Le varie componenti che saranno di seguito presentate più dettagliatamente possono comunicare fra di loro attraverso la classe denominata Intent, una forma di messaggistica in cui una componente richiede l’esecuzione di un’azione da parte di un’altra componente.

Le Activity

La prima componente presentata tra le varie elencate sono le activity. Le activity, facilmente traducibili in italiano sotto il nome di attività, sono le interfacce utente dell’applicazione. Concettualmente, è anche il componente più semplice da riconoscere, in quanto è quello con cui l’utente medio è a contatto diretto durante l’uso della propria applicazione; infatti, ogni volta che si fa utilizzo di una particolare applicazione, frequentemente si consultano varie activity in cui immettere un input (che può essere ad esempio il riempimento di una casella di testo o un tap su un bottone) o da cui estrapolare dati. Ogni activity all’interno dell’applicazione in cui risiede ha un proprio ciclo di vita. Il passaggio da uno stato ad un altro, viene notificato attraverso l’invocazione di una funzione di callback. Ad esempio, per rendere utilizzabile l’activity da parte dell’utente quando essa va in esecuzione è necessario invocare tre metodi: onCreate(), onStart() e onResume(). Nel primo metodo l’activity viene creata, e le vengono assegnate le configurazioni base e il layout; nel secondo metodo l’activity diventa visibile, fornendo funzionalità e servizi all’utente; mentre nell’ultimo metodo l’activity diventa destinataria degli input dell’utente. Parallelamente vi sono altri tre metodi di callback, che vengono invocati da Android quando l’utente decide di passare dall’activity corrente ad un’altra activity, sia essa facente parte della stessa applicazione oppure no, e sono rispettivamente onPause(), onStop() e onDestroy(). Il primo metodo non fa altro che notificare la cessata interazione dell’utente con l’activity corrente, onStop() pone fine alla visibilità della stessa mentre onDestroy() la distrugge del tutto. I vari metodi di callback sono concepiti a coppie, e molto frequentemente, il lavoro fatto dalla funzione di avvio (funzionalità attivate e risorse allocate) viene poi annullato dalla funzione di arresto.

I Service

Il lavoro del service può essere inteso come complementare a quello svolto dall’activity. Infatti, il service svolge un lavoro continuo e duraturo, completamente in background, senza il bisogno di interagire con l’utente e senza essere visibile effettivamente allo stesso. Nonostante sia un concetto più lontano dalla pratica rispetto a quello dell’activity, il lavoro del service non deve essere sottovalutato, in quanto molto spesso è lo stesso service ad elaborare ed ottenere i dati e le informazioni che poi l’activity visualizza sul display all’utente. Di solito sono richiamati dalle activity, quando queste hanno bisogno di un determinato servizio, anche se, pur essendone rari i casi, alcune volte è lo stesso utente a poter richiedere un servizio.

I Content Provider

I Content Provider, che possono essere tradotti in italiano sotto il nome di fornitori di contenuti, sono dei contenitori di dati generati dall’applicazione che ne permettono la condivisione con altre applicazioni. I dati presenti in questi contenitori possono essere contenuti sia nel file system, in un database, sul web o in qualsiasi altra locazione di dati. Questi contenitori permettono una condivisione sana dei dati, in cui ogni applicazione può utilizzare i dati condivisi dalle altre ma senza invaderne lo spazio di funzionamento.

I Broadcast Receiver

I Broadcast Receiver, traducibili in italiano sotto il nome di ricevitori di trasmissioni diffuse, sono componenti che permettono all’applicazione di ricevere un messaggio inviato a livello di sistema, in broadcast. Con l’invio di questi messaggi, molto importanti per gestire in modo istantaneo delle situazioni particolari, Android può consentire la condivisione di dati oppure notificare segnali di servizio, uno dei più famosi dei quali risulta essere l’avviso di batteria scarica. Nonostante i Broadcast Receiver non siano di base componenti che utilizzano l’interfaccia utente, possono tuttavia far apparire sullo schermo messaggi informativi, quali ad esempio i toast o le notifiche a tendina, che si sovrappongono al layout dell’activity.

I Fragment

Nonostante non siano presenti dalla prima versione di Android, ma introdotti solo a partire dalla release 3.0, il ruolo dei Fragment è divenuto via via sempre più importante, tanto da renderli una delle maggiori risorse a disposizione dei programmatori Android.

Possiamo definire un Fragment, frammento la sua traduzione in italiano, come la porzione di codice che gestisce la parte grafica dell’applicazione, in relazione al dispositivo su cui essa è installata. Il Fragment può essere considerato come una sub-activity, con un ciclo di vita proprio e con il compito esclusivo di gestire la visualizzazione del layout, lasciando all’activity di riferimento le altre azioni funzionali.

Generalmente, vengono creati più fragment che si avvicendano nel layout, mentre di activity in teoria ne basterebbe soltanto una. Il loro utilizzo rende l’applicazione molto più leggera e anche ordinata a livello di codice, ad esempio rifacendosi al quiz da me realizzato la sequenza di domande che vengono proposte all’utente sono tutte istanze dello stesso fragment, in cui ogni volta la stringa della domanda viene aggiornata. Pensare di realizzare quella successione di domande con altrettante activity diverse sarebbe stato più oneroso a livello di peso dell’applicazione e anche sbagliato concettualmente, in quanto realizzare una nuova activity solo per cambiare il testo di una stringa comporterebbe uno spreco di risorse.

Oltre a ciò, i Fragment hanno un’altra caratteristica molto utile, ossia permettono l’adattamento del layout allo schermo del device su cui è in esecuzione l’applicazione. Ad esempio, confrontando lo schermo di un tablet con quello di un cellulare, si nota all’istante che il primo ha uno schermo di dimensioni ben maggiori. Tramite l’utilizzo dei frammenti è possibile in un tablet visualizzare contemporaneamente più fragment della stessa activity, mentre in uno smartphone, dallo schermo decisamente più piccolo, questi fragment verranno mostrati alternativamente, come riportato nella figura seguente, tratta dalla documentazione ufficiale sviluppatori Android. I Fragment sono in grado di gestire automaticamente tutto ciò, risparmiando al programmatore la creazione di differenti applicazioni in base al device su cui verrebbero installate.

Senzanome

È utile poi ricordare che i Fragment hanno un ciclo di vita proprio, indipendente dal ciclo di vita dell’activity in cui vengono contenuti, anche se il rapporto fra le due componenti è fortemente collegato.

Con la presentazione dei fragment si conclude questo articolo, in cui ho cercato di evidenziare i punti principali oggetto della mia tesi di laurea, sia dal punto di vista concettuale (AAL e la sua importanza nell’ambito tecnologico) che dal punto di vista tecnico (programmazione Android).

Realizzare quest’applicazione mi ha aiutato molto a capire il mondo Android, dato che non vi ero mai stato a stretto contatto, e notando come al giorno d’oggi sia più diffuso che mai credo sia utile per qualsiasi persona, che sia vicina all’informatica o meno, la conoscenza del funzionamento di strumenti che utilizziamo tutti i giorni per più volte al giorno.

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *