PROGRAMMAZIONE MOBILE

Anno accademico 2022/2023 - Docente: Massimo Orazio SPATA

Risultati di apprendimento attesi

Obiettivo principale del corso è quello di mettere gli studenti nelle condizioni di progettare ed implementare un'applicazione nativa Android ottimizzata per dispositivi mobile, quindi, che tiene in considerazione le caratteristiche peculiari e i limiti hardware di tali dispositivi, In particolare si cercherà di prepare gli studenti a sfruttare tutte le potenzialità che Android offre ed, utilizzando l'ambiente di sviluppo Android Studio, a costruire un app che sfrutti sia l'hardware del dispositivo che le potenzialità del framework/sistema operativo nel suo complesso.

Modalità di svolgimento dell'insegnamento

Il corso consisterà di una serie di lezioni frontali partecipate durante le quali verranno presentati gli argomenti; le stesse saranno supportate dalle presentazione di applicazioni ed esempi. Gli studenti saranno chiamati, inoltre, a svolgere delle esercitazioni di laboratorio individuali e/o di gruppo.

Prerequisiti richiesti

Conoscenza del linguaggio di programmazione Java e della programmazione orientata agli oggetti.

Frequenza lezioni

La frequenza alle lezione è auspicabile. Verrano proposte ed eseguite esercitazioni pratiche utili per la risoluzione di problemi legati all'utilizzo dell'SDK, dei framework di supporto e dell'IDE.

Contenuti del corso

  • Per iniziare
  • Piattaforme per dispositivi mobili
  • Un pò di storia
  • Il futuro delle applicazioni mobile
  • Cosa Android non è...
  • Cosa allora è...
  • Applicazioni Android Native e di terze parti
  • Java: breve sintesi
  • Android Run Time
  • Architettura di Android
  • Strumenti di sviluppo per Android: Android Studio
  • Gradle
  • Prima applicazione
  • Codice Hello World
  • Layout di un app Android
  • Il simulatore di device Android
  • Componenti di un applicazione Android
  • Sviluppare per dispositivi mobili
  • Esempio TO-DO List
  • Android Development Tools
  • Creazione di applicazioni ed attività
  • Componenti di una applicazione
  • Activity: foreground e background activity
  • Fattori da considerare per la realizzazione di una app efficiente, reattiva e sicura
  • Ciclo di vita di un Activity
  • Stato di un Activity
  • Android memory manager
  • Risorse di un applicazione Android
  • Esternalizzazione delle risorse
  • Tipi di risorse
  • Fragment
  • View, ViewGroup
  • Creazione di una Interfaccia Utente: i Layout
  • I menù
  • Oltre le Activity: gli Intents
  • Intent: impliciti ed espliciti
  • Accoppiamento di Intents con applicazioni native
  • Intents per lanciare Activity
  • Intents Filter
  • Intent Resolution
  • Utilizzo dell'Intent dall'interno di una activity
  • Activity Intents
  • Oltre gli intents: Intent filter e Broadcast receiver
  • Tag per registrare un app ad un Intent
  • Activity ed Intent resolution
  • Broadcast receiver
  • Intent broadcast
  • Services: background process
  • Toast e notification
  • Controllo di un Service
  • Registrazione di un service
  • Start e stop di un Service
  • Service e priorità
  • Foreground e background
  • Thread e task asincroni
  • Persistenza ed SQLite Content Provider
  • Content providers  
  • Cursor
  • Query, insert, update, delete
  • Firebase
  • Connessione ad un db Firebase
  • Creazione di un progetto con Firebase
  • ARCore library
  • Cosa è ARCore?
  • Funzionalità di ARCore
  • Dispositivi supportati
  • Come funziona ARCore?
  • ARCore per Android
  • Configura il tuo ambiente di sviluppo
  • Come usare il posizionamento istantaneo

Testi di riferimento

  1. Reto Meier, Ian Lake - "Professional Android" 4th Edition - Wrox - ISBN: 978-1-118-94952-8
  2. Massimo Carli, Android 9 – Apogeo – ISBN: 978-88-503-3472-2

Programmazione del corso

 ArgomentiRiferimenti testi
1Introduzione ad Android
2Strumenti di sviluppo: Android Studio
3Componenti principali di un applicazione Android
4Activity Life cycle
5Risorse di un Applicazione Android
6Sviluppare per Android: Activity, Fragment ed Intent
7View ed interfacce utente
8Oltre le Activities: Intents ed Intent filter
9Services: background process
10Persistenza ed SQL Lite
11Firebase: Real time database
12ARCore library

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

L'esame finale consisterà nella progettazione e realizzazione di un'app Android a partire da una serie di specifiche assegnate/concordate. 

L'app realizzata, accompagnata da una relazione finale, sarà argomento di un colloquio orale che completerà l'esame. 

Durante il colloquio orale potrà essere chiesto uno o più argomenti svolti durante l'anno accademico. 

Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus. La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.

Esempi di domande e/o esercizi frequenti

Esempi di progetti assegnati:

  • "Scaffometro": app che permette di monitorare e memorizzare lo stato delle strade geolocalizzando
  • "Stream Annotation": possibilità di inserire durante le riprese video annotazioni di tipo testuale e/o di altra natura
  • "Light chat": app di comunicazione tra 2 smartphone che sfrutta camera e flash per scambiare messaggi con codice morse
  • "Vetrina prodotti": app che attraverso accesso ad un db come Firebase o SQLite permette di gestire la vetrina prodotti di una attività commerciale.