PROGRAMMAZIONE MOBILE

Anno accademico 2021/2022 - 3° anno - Curriculum Sistemi e Applicazioni
Docente: Massimo Orazio SPATA
Crediti: 6
SSD: INF/01 - Informatica
Organizzazione didattica: 150 ore d'impegno totale, 102 di studio individuale, 24 di lezione frontale, 24 di esercitazione
Semestre:

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

  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
1Hello world 
2Sviluppare per Dispositivi Mobili e per Android 
3Creazione di applicazioni ed attività 
4Creazione di una Interfaccia Utente 
5Oltre le attività: Intents, Broadcast Receivers, Services 
6Memorizzazione, gestione e condivisione di dati 
7Servizi basati sulla “Location” 
8Accesso all’hardware di Android 
9Google Cloud Messaging 
10Remote and local Notification 
11Firebase:FCM , 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 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