PROGRAMMAZIONE MOBILE
Anno accademico 2021/2022 - 3° anno - Curriculum Sistemi e ApplicazioniCrediti: 6
Organizzazione didattica: 150 ore d'impegno totale, 102 di studio individuale, 24 di lezione frontale, 24 di esercitazione
Semestre: 2°
Obiettivi formativi
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
- Hello Android.
- Introduzione
- Uno sguardo al passato ... e al futuro
- Cosa Android non è...
- Cosa allora è...
- Applicazioni Android Native
- Funzionalità di Android SDK
- Android Software Stack
- Architettura di una applicazione Android
- Sviluppare per Dispositivi Mobili e per Android
- Per Iniziare
- Iniziamo l'installazione
- Prima applicazione
- Codice Hello World
- Tipi di Applicazione Android
- Sviluppare per dispositivi mobili
- Esempio TO-DO List
- Android Development Tools
- Creazione di applicazioni ed attività
- Componenti di una applicazione
- Application Manifest
- Ciclo di Vita di una applicazione
- Le Activities
- Ciclo di Vita di una Activity
- Esternalizzazione delle Risorse
- Utilizzo delle Risorse
- Risorse per lingue ed hardware differenti
- Creazione di una Interfaccia Utente
- Progettazione Android UI
- Android Widget
- Layout Managers
- Nuove Views
- Modifica di View Esistenti
- Customizzazione TODO List
- Creare Controlli Compositi
- Creare Controlli e View Custom
- Creazione ed Utilizzo di menu
- Activity menu
- Principali opzioni di menu
- Aggiornamento dinamico e gestione della selezione
- Sottomenu e menu di contesto
- Menu con file XML
- Oltre le attività: Intents, Broadcast Receivers, Services
- Intents
- Intents per lanciare Activity
- Valori di ritorno delle activity
- Azioni Native Android
- Intents Filter
- Intent Resolution
- Utilizzo dell'intent dall'interno di una activity
- Altro utilizzo degli intent filter
- Usare gli Intent per il broadcast di eventi
- Services
- Creazione di Services
- Start e stop di un Service
- Service e priorità
- Thread e Background
- Broadcast Receivers (SMS Manager)
- Memorizzazione, gestione e condivisione di dati
- Database ed SQLite
- Content Provider
- Servizi basati sulla "Location"
- Accesso all'hardware di Android
- Accelerometro
- Giroscopio
- Magnetometro
- Google Cloud Messaging
- Remote and local Notification
- Firebase platform: Firebase cloud messaging, Firebase realtime database
- 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 | Hello world | |
2 | Sviluppare per Dispositivi Mobili e per Android | |
3 | Creazione di applicazioni ed attività | |
4 | Creazione di una Interfaccia Utente | |
5 | Oltre le attività: Intents, Broadcast Receivers, Services | |
6 | Memorizzazione, gestione e condivisione di dati | |
7 | Servizi basati sulla “Location” | |
8 | Accesso all’hardware di Android | |
9 | Google Cloud Messaging | |
10 | Remote and local Notification | |
11 | Firebase:FCM , Real time database | |
12 | ARCore 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 dovrà utilizzare oltre a rete e sistema di persistenza almeno due "sensi" dello smartphone target. L'app realizzata, accompagnata da una relazione finale, sarà argomento di colloquio orale che completerà l'esame. 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