MATEMATICA E INFORMATICAInformaticaAnno accademico 2023/2024
1015195 - PROGRAMMAZIONE MOBILE
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
- Reto Meier, Ian Lake - "Professional Android" 4th Edition - Wrox - ISBN: 978-1-118-94952-8
- Massimo Carli, Android 9 – Apogeo – ISBN: 978-88-503-3472-2
Programmazione del corso
| Argomenti | Riferimenti testi |
1 | Introduzione ad Android | |
2 | Strumenti di sviluppo: Android Studio | |
3 | Componenti principali di un applicazione Android | |
4 | Activity Life cycle | |
5 | Risorse di un Applicazione Android | |
6 | Sviluppare per Android: Activity, Fragment ed Intent | |
7 | View ed interfacce utente | |
8 | Oltre le Activities: Intents ed Intent filter | |
9 | Services: background process | |
10 | Persistenza ed SQL Lite | |
11 | Firebase: Real time database | |
12 | ARCore library | |
Verifica dell'apprendimento
Modalità di 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.
English version