Android 
Introduzione al sistema operativo Android! 
Valentina Pelliccia, Emanuel Di Nardo 
GDG Campania
Introduzione
Outline 
● Introduzione al SO 
● Architettura di sistema 
● SDK e Strumenti di sviluppo 
● Elementi principali 
● Gestione della risorse 
● Demo
Piattaforme per dispositivi mobili 
Un dispositivo mobile rispetto ad un dispositivo desktop: 
● Limitatezza delle risorse 
● Alimentazione a batteria 
● Differenti protocolli di trasferimento dati 
● Ridotte dimensioni del display 
3%1% 
2% 
42% 
52% 
ANDROID IOS 
BLACKBERRY WINDOWS PHONE 
OTHERS 
Perché Android: 
● Radici ben salde nel mondo dell’open - source 
● Forte riscontro di pubblico 
Nielsen : dati relativi alla diffusione e distribuzione dei principali sistemi operativi mobile e brand nel mercato Americano (2014).
Che cos’è Android? 
Android è un sistema operativo open-source basato su kernel Linux e progettato per 
dispositivi mobili come smartphone e tablet. 
Il progetto Open Source Android guidato da Google dispone di una vasta comunità di 
sviluppatori divenendo in pochi anni uno dei leader nel mercato mobile. 
! 
! 
! 
1.5 1.6 2.0/2.1 2.2 2.3 3.0/3.1 4.0 4.1 4.4 5 Lollipop 
● 2003: L’azienda Android della Silicon Valley sviluppa il SO Android 
● 2005: L’azienda viene acquisita da Google 
● 2007: Google fonda il consorzio Open Handset Alliance OHA 
● 2009: Viene rilasciata la versione 1.5 denominata “Cupcake” 
… 3/11/2014
Android OS
Architettura di sistema 
● Application 
● Application Framework 
● Android Runtime 
● Libraries 
● Kernel Linux
Application 
Android dispone di base di un 
insieme di applicazioni: 
! 
● Client eMail 
● Agenda 
● Rubrica 
● Mappe 
● Browser Web 
● …. 
Application Framework 
API di alto livello 
L’Application Framework fornisce 
alle applicazioni i seguenti servizi: 
! 
● View 
● Content Provider 
● Resource Manager 
● Notification Manager 
● Activity Manager 
● …. 
Librerie Native 
Librerie in C/C++ che 
rappresentano il core di Android 
Le più importanti sono: 
! 
● Standard C Library 
● Media Framework 
● Surface Manager 
● Webkit 
● Librerie FreeType 
● SQLITE 
● SSL (Secure Socket 
Layer)
Android Runtime 
● Linguaggio di programmazione JAVA 
● Core Libraries 
● Dalvik Virtual Machine 
● Ottimizzata per dispositivi 
Embedded 
● Esegue un bytecode (Dalvik 
executable .dex) 
● Register Based 
Kernel Linux 
● Gestione dei driver HW 
(videocamera, display, scheda 
wireless…) 
● Sicurezza 
● Gestione della memoria 
● Stack di rete 
● Gestione dei processi 
Il kernel funge da livello di astrazione tra 
l’hardware e il resto dello stack 
software. 
ART
Software Development Kit 
Software Development Kit 
● Completo 
● Gratuito 
● Versione per tutti i SO desktop 
● Unico requisito: JDK 
● Android Virtual Device 
! 
! 
Download 
● SDK: http://developer.android.com/sdk/index.html 
● Android Studio: http://developer.android.com/sdk/installing/studio.html 
● Android Developer Tools: http://developer.android.com/tools/help/adt.html
Sviluppo di un’applicazione 
Le caratteristiche di un’App Android 
1. Ogni app gira in un proprio processo Linux 
2. Ogni processo ha una propria VM 
3. Ogni app può utilizzare componenti di altre App 
4. Pacchetti APK 
! 
! 
! 
! 
! 
Gli elementi di base per lo sviluppo di un’App Andoid 
1. Activity 
2. Intent 
3. Broadcast Receiver 
4. Service 
5. Content Provider 
! 
! 
! 
! 
!
Componenti di base
Activity 
L’Activity è una finestra che contiene l’interfaccia 
dell’applicazione, il suo scopo è gestire 
l’interazione tra l’utente e l’app. 
● Interazione con l’utente 
● Concetto di Schermata 
● Interfaccia Utente composto da View 
● Ciclo di vita di un’activity 
● Acitivity stack 
● Deriva dalla classe base android.app.Activity 
!
Fragment 
Simile al concetto di Activity, ma permette la 
visualizzazione di elementi grafici totalmente differenti 
● Hanno un proprio gestore 
● Vengono inserite all’interno delle activity 
● Fragment stack 
● Possono essere presenti più fragment 
contemporaneamente 
● Possono essere etichettati per riutilizzi futuri 
● Possono accede all’activity in cui risiedono 
! 
!
Intent 
Un Intent descrive un’azione all’interno dell’applicazione. 
Rappresenta un messaggio in grado di attivare i tre componenti base di un’applicazione: Activity, 
Service, Broadcast Receiver 
! 
! 
! 
La struttura dati dell’Intent si compone dell’azione da effettuare e dei dati su cui agire. 
Un intent può essere 
● Esplicito 
● Implicito 
A ciascun intent è possibile associare informazioni che vengono trasportate al componente di 
destinazione (metodi PUT e GET)
Intent-Filter 
Aiutano il sistema a scegliere la componente giusta da assegnare ad un’azione 
(Intent). 
Una componente viene scelta solo se supera la verifica delle componenti del filtro 
! 
● Azione 
● Categoria (non obbligatoria) 
! 
!
Broadcast Receiver 
La classe BroadcastReceiver viene utilizzata quando si vuole intercettare e gestire 
un messaggio inviato a tutta l’applicazione. 
I messaggi vengono smistati attraverso gli intent-filter. 
● I messaggi vengono smistati attraverso gli intent-filter 
● I receiver devono essere registrati (e rimossi) 
manualmente dalla componente che ne fa uso 
● Non hanno interfaccia grafica
Service 
Permettono di eseguire operazioni in background, anche quando l’utente non sta interagendo 
direttamente con essa. 
● Non hanno interfaccia grafica 
● Elaborazione in background 
● Ciclo di vita di un service 
! 
! 
! 
● Quando usare un service? 
● Operazioni bloccanti o lunghi! (Aggiungere un thread) 
● Task continui utilizzati da più componenti contemporaneamente 
● Senza interazione utente
Content Provider 
Un Content Provider è una classe che implementa un insieme di metodi che 
permette all’applicazione di salvare e recuperare in modo permanente i dati. 
! 
! 
! 
! 
! 
! 
Solitamente tali dati vengono memorizzati all’interno del file-system oppure in un 
database SQLite.Inoltre, possono essere condivisi con le altre applicazioni.
Android Studio 
● Ambiente di sviluppo specifico per Android 
● Basato su IntelliJ e sviluppato da Jetbrains 
● Include tool grafici (UI Designer, Nine-Patch Editor, etc…) 
● Adopera Gradle come sistema di building 
● Si può utilizzare il maven central repository per aggiungere le librerie di 
supporto.
Gestione delle risorse 
● File di tipo XML 
● Non ricompilazione del codice a valle di modifiche 
alle risorse 
● Rigorosa organizzazione della struttura del progetto 
(codice e file) in opportune cartelle 
● java 
● res 
● Drawable 
● Layout 
● Menu 
● Values
AndroidManifest.xml 
● Contiene le informazioni relative all’intera 
applicazione 
● Tutte le risorse utilizzate devono essere inserite 
nel manifest 
● Include i permessi applicazione 
! 
! 
! 
! 
!
R file 
● Contiene gli identificativi di ogni risorsa 
dell’applicazione 
● Viene generato e aggiornato automaticamente 
dall’IDE 
● NON DEVE ASSOLUTAMENTE ESSERE 
MODIFICATO!!! 
! 
! 
! 
!
Demo
<Thank You!> 
email: 
G+ plus.google.com/+EmanuelDiNardo 
twitter @bboymasa 
website http://emanueldinardo.com 
emanuel.dinardo@gmail.com vapelliccia@gmail.com 
plus.google.com/+ValentinaPelliccia 
@smartvalentina
Introduzione ad Android

Introduzione ad Android

  • 2.
    Android Introduzione alsistema operativo Android! Valentina Pelliccia, Emanuel Di Nardo GDG Campania
  • 3.
  • 4.
    Outline ● Introduzioneal SO ● Architettura di sistema ● SDK e Strumenti di sviluppo ● Elementi principali ● Gestione della risorse ● Demo
  • 5.
    Piattaforme per dispositivimobili Un dispositivo mobile rispetto ad un dispositivo desktop: ● Limitatezza delle risorse ● Alimentazione a batteria ● Differenti protocolli di trasferimento dati ● Ridotte dimensioni del display 3%1% 2% 42% 52% ANDROID IOS BLACKBERRY WINDOWS PHONE OTHERS Perché Android: ● Radici ben salde nel mondo dell’open - source ● Forte riscontro di pubblico Nielsen : dati relativi alla diffusione e distribuzione dei principali sistemi operativi mobile e brand nel mercato Americano (2014).
  • 6.
    Che cos’è Android? Android è un sistema operativo open-source basato su kernel Linux e progettato per dispositivi mobili come smartphone e tablet. Il progetto Open Source Android guidato da Google dispone di una vasta comunità di sviluppatori divenendo in pochi anni uno dei leader nel mercato mobile. ! ! ! 1.5 1.6 2.0/2.1 2.2 2.3 3.0/3.1 4.0 4.1 4.4 5 Lollipop ● 2003: L’azienda Android della Silicon Valley sviluppa il SO Android ● 2005: L’azienda viene acquisita da Google ● 2007: Google fonda il consorzio Open Handset Alliance OHA ● 2009: Viene rilasciata la versione 1.5 denominata “Cupcake” … 3/11/2014
  • 7.
  • 8.
    Architettura di sistema ● Application ● Application Framework ● Android Runtime ● Libraries ● Kernel Linux
  • 9.
    Application Android disponedi base di un insieme di applicazioni: ! ● Client eMail ● Agenda ● Rubrica ● Mappe ● Browser Web ● …. Application Framework API di alto livello L’Application Framework fornisce alle applicazioni i seguenti servizi: ! ● View ● Content Provider ● Resource Manager ● Notification Manager ● Activity Manager ● …. Librerie Native Librerie in C/C++ che rappresentano il core di Android Le più importanti sono: ! ● Standard C Library ● Media Framework ● Surface Manager ● Webkit ● Librerie FreeType ● SQLITE ● SSL (Secure Socket Layer)
  • 10.
    Android Runtime ●Linguaggio di programmazione JAVA ● Core Libraries ● Dalvik Virtual Machine ● Ottimizzata per dispositivi Embedded ● Esegue un bytecode (Dalvik executable .dex) ● Register Based Kernel Linux ● Gestione dei driver HW (videocamera, display, scheda wireless…) ● Sicurezza ● Gestione della memoria ● Stack di rete ● Gestione dei processi Il kernel funge da livello di astrazione tra l’hardware e il resto dello stack software. ART
  • 11.
    Software Development Kit Software Development Kit ● Completo ● Gratuito ● Versione per tutti i SO desktop ● Unico requisito: JDK ● Android Virtual Device ! ! Download ● SDK: http://developer.android.com/sdk/index.html ● Android Studio: http://developer.android.com/sdk/installing/studio.html ● Android Developer Tools: http://developer.android.com/tools/help/adt.html
  • 12.
    Sviluppo di un’applicazione Le caratteristiche di un’App Android 1. Ogni app gira in un proprio processo Linux 2. Ogni processo ha una propria VM 3. Ogni app può utilizzare componenti di altre App 4. Pacchetti APK ! ! ! ! ! Gli elementi di base per lo sviluppo di un’App Andoid 1. Activity 2. Intent 3. Broadcast Receiver 4. Service 5. Content Provider ! ! ! ! !
  • 13.
  • 14.
    Activity L’Activity èuna finestra che contiene l’interfaccia dell’applicazione, il suo scopo è gestire l’interazione tra l’utente e l’app. ● Interazione con l’utente ● Concetto di Schermata ● Interfaccia Utente composto da View ● Ciclo di vita di un’activity ● Acitivity stack ● Deriva dalla classe base android.app.Activity !
  • 15.
    Fragment Simile alconcetto di Activity, ma permette la visualizzazione di elementi grafici totalmente differenti ● Hanno un proprio gestore ● Vengono inserite all’interno delle activity ● Fragment stack ● Possono essere presenti più fragment contemporaneamente ● Possono essere etichettati per riutilizzi futuri ● Possono accede all’activity in cui risiedono ! !
  • 16.
    Intent Un Intentdescrive un’azione all’interno dell’applicazione. Rappresenta un messaggio in grado di attivare i tre componenti base di un’applicazione: Activity, Service, Broadcast Receiver ! ! ! La struttura dati dell’Intent si compone dell’azione da effettuare e dei dati su cui agire. Un intent può essere ● Esplicito ● Implicito A ciascun intent è possibile associare informazioni che vengono trasportate al componente di destinazione (metodi PUT e GET)
  • 17.
    Intent-Filter Aiutano ilsistema a scegliere la componente giusta da assegnare ad un’azione (Intent). Una componente viene scelta solo se supera la verifica delle componenti del filtro ! ● Azione ● Categoria (non obbligatoria) ! !
  • 18.
    Broadcast Receiver Laclasse BroadcastReceiver viene utilizzata quando si vuole intercettare e gestire un messaggio inviato a tutta l’applicazione. I messaggi vengono smistati attraverso gli intent-filter. ● I messaggi vengono smistati attraverso gli intent-filter ● I receiver devono essere registrati (e rimossi) manualmente dalla componente che ne fa uso ● Non hanno interfaccia grafica
  • 19.
    Service Permettono dieseguire operazioni in background, anche quando l’utente non sta interagendo direttamente con essa. ● Non hanno interfaccia grafica ● Elaborazione in background ● Ciclo di vita di un service ! ! ! ● Quando usare un service? ● Operazioni bloccanti o lunghi! (Aggiungere un thread) ● Task continui utilizzati da più componenti contemporaneamente ● Senza interazione utente
  • 20.
    Content Provider UnContent Provider è una classe che implementa un insieme di metodi che permette all’applicazione di salvare e recuperare in modo permanente i dati. ! ! ! ! ! ! Solitamente tali dati vengono memorizzati all’interno del file-system oppure in un database SQLite.Inoltre, possono essere condivisi con le altre applicazioni.
  • 21.
    Android Studio ●Ambiente di sviluppo specifico per Android ● Basato su IntelliJ e sviluppato da Jetbrains ● Include tool grafici (UI Designer, Nine-Patch Editor, etc…) ● Adopera Gradle come sistema di building ● Si può utilizzare il maven central repository per aggiungere le librerie di supporto.
  • 22.
    Gestione delle risorse ● File di tipo XML ● Non ricompilazione del codice a valle di modifiche alle risorse ● Rigorosa organizzazione della struttura del progetto (codice e file) in opportune cartelle ● java ● res ● Drawable ● Layout ● Menu ● Values
  • 23.
    AndroidManifest.xml ● Contienele informazioni relative all’intera applicazione ● Tutte le risorse utilizzate devono essere inserite nel manifest ● Include i permessi applicazione ! ! ! ! !
  • 24.
    R file ●Contiene gli identificativi di ogni risorsa dell’applicazione ● Viene generato e aggiornato automaticamente dall’IDE ● NON DEVE ASSOLUTAMENTE ESSERE MODIFICATO!!! ! ! ! !
  • 25.
  • 26.
    <Thank You!> email: G+ plus.google.com/+EmanuelDiNardo twitter @bboymasa website http://emanueldinardo.com emanuel.dinardo@gmail.com vapelliccia@gmail.com plus.google.com/+ValentinaPelliccia @smartvalentina