ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
Sviluppare applicazioni Android
Copyright© 2013 Paolo Montalto http://www.xabaras.it
Argomenti trattati
•  Cos’è Android
•  SDK (eclipse + tools)
•  Struttura di un progetto android
•  Componenti base (Activity, View, Intent …)
•  Fragment (cenni)
•  Frammentazione e Support library (cenni)
Copyright© 2013 Paolo Montalto http://www.xabaras.it
Che cos’è android?
Copyright© 2013 Paolo Montalto http://www.xabaras.it
•  Sistema operativo per dispositivi mobili
•  Sviluppato dalla Open Handset Alliance
(84 aziende tra cui Google, Samsung, LG,
Nvidia…)
•  Open Source e gratuito
•  Basato su Kernel Linux
•  Linguaggio di programmazione Java
Android != Linux
Copyright© 2013 Paolo Montalto http://www.xabaras.it
•  Basato inizialmente su Kernel 2.6
•  Supporto ARM (e successivamente x86)
•  Sviluppato separatamente
•  Aggiunte patch non presenti in main branch linux
(ashmem, alarms, power management, low memory kliller,
logger…)
•  Parziale integrazione in versione 3.3
La	
  release	
  3.3	
  del	
  kernel	
  vi	
  perme1erà	
  di	
  avviare	
  un	
  userspace	
  Android	
  senza	
  
alcuna	
  modiï¬ca,	
  sebbene	
  la	
  ges<one	
  dell’alimentazione	
  non	
  sia	
  molto	
  buona.	
  
Nella	
  versione	
  3.4	
  del	
  kernel	
  si	
  spera	
  di	
  poter	
  correggere	
  questo	
  problema	
  e	
  
arrivare	
  ad	
  una	
  piena	
  integrazione	
  con	
  Android.	
  
	
  
Greg	
  Kroah-­â€Hartman	
  (Linux	
  kernel	
  –stable	
  branch	
  maintainer)	
  
Java ma non JVM
Copyright© 2013 Paolo Montalto http://www.xabaras.it
•  Dalvik Virtual Machine
•  No Java SE v Java ME
•  Subset Apache Harmony
•  No executable jars: apk
.java	
   .class	
   .dex	
  
Architettura
Copyright© 2013 Paolo Montalto http://www.xabaras.it
Dalvik Virtual Machine
E’ qui che agiamo!
SDK
Copyright© 2013 Paolo Montalto http://www.xabaras.it
•  Android developer tools
•  tools a linea di comando (adb, zipalign)
•  SDK Manager
•  AVD Manager (android virtual device manager)
•  Emulatore
•  Eclipse ADT plugin
L’android SDK è costituito da:	
  
Android SDK Manager
Copyright© 2013 Paolo Montalto http://www.xabaras.it
AVD Manager
Copyright© 2013 Paolo Montalto http://www.xabaras.it
Emulatore
Copyright© 2013 Paolo Montalto http://www.xabaras.it
•  Rom nativa android
•  Google API
•  Mock Locations
•  Simulazione Rete GSM
•  Pulsanti hardware
•  Hardware keyboard
•  D-Pad
•  Pulsanti volume
•  Pulsante “Powerâ€
Graphical layout editor
Copyright© 2013 Paolo Montalto http://www.xabaras.it
Dalvik Debug Monitor Server
Copyright© 2013 Paolo Montalto http://www.xabaras.it
•  system information
•  screen capture
•  thread/heap info
•  logcat
•  processi
•  controllo emulatore
•  trafï¬co di rete
•  stato della rete
•  posizioni GPS (mock)
Struttura di un Progetto
Copyright© 2013 Paolo Montalto http://www.xabaras.it
Codice Java
Codice generato
dal compilatore
Librerie e dipendenze di
sistema
Deï¬nizione dell’applicazione
Risorse:
•  layout (xml)
•  Immagini
•  Stili
•  File lingua
Librerie .jar, .so
Altri ï¬le dell’applicaizone
(es. .pdf, .html, .db …)
La directory “resâ€
Copyright© 2013 Paolo Montalto http://www.xabaras.it
Risorse graï¬che
Risorse che rappresentano valori (colori,
dimensioni, stringhe di testo, stili della GUI)
I valori dopo il “-†nei nomi delle directory
sono i selettori delle risorse, servono ad
identiï¬care l’utilizzo che l’applicazione farà
di quelle risorse:
•  hdpi: dispositivi con densità di schermo alta
•  sw600dp: device la cui risoluzione orizzontale
sia almeno di 600dp
•  v11: utilizzare solo se la versione di android
sul dispositivo è 11
•  it: se la lingua del device è Italiano
Activity
Copyright© 2013 Paolo Montalto http://www.xabaras.it
Activity è il “contesto†base di esecuzione in
un’applicazione android.
•  Entry point dell’applicazione android
•  Solo una in foreground
•  Solo una attiva
•  Stack: nuove activity sempre on top
Activity: ciclo di vita
Copyright© 2013 Paolo Montalto http://www.xabaras.it
View
Copyright© 2013 Paolo Montalto http://www.xabaras.it
•  Componenti base della UI di android
•  Deï¬nite e utilizzate nei ï¬le xml di Layout
•  Una view sa come disegnare se stessa
•  Risponde agli eventi (es: onClick, onLongClick)
•  Organizzate in gerarchie (ViewGroup)
Il framework android si occupa di misurare, disegnare
e disporre le View e i ViewGroup
Layout
Copyright© 2013 Paolo Montalto http://www.xabaras.it
•  RelativeLayout: Layout eredita da ViewGroup
•  TextView è una View (come EditText, WebView, ListView, ScrollView…)
•  Riferimenti a risorse esterne al Layout (@string, @drawable, @dimen)
File xml
Layout e Activity
Copyright© 2013 Paolo Montalto http://www.xabaras.it
Caricamento layout nell’activity Accesso alle View
Accesso a risorse
Intent
Copyright© 2013 Paolo Montalto http://www.xabaras.it
E’ una descrizione astratta di un’operazione da eseguire.
Generalmente usato per lanciare un’Activity
Parametri principali:
•  action: l’azione che è necessario compiere, ad esempio ACTION_VIEW,
ACTION_EDIT, ACTION_MAIN, etc.
•  data: i dati sui quali effettuare l’operazione, ad esempio una persona nel
database di contatti, un url di un sito web, etc.
Esempi (action – data):
•  ACTION_VIEW - content://contacts/people/1
mostra informazioni sulla persona il cui ID è 1
•  ACTION_DIAL - content://contacts/people/1
mostra la scheramata di chiamata per la persona il cui ID è 1
1/3
Intent
Copyright© 2013 Paolo Montalto http://www.xabaras.it
2/3
Attributi secondari:
•  category: informazioni aggiuntive sull’azione da eseguire (es.
CATEGORY_LAUNCHER)
•  type: speciï¬ca il MIME type dei dati passati all’Intent
•  component: speciï¬ca esplicitamente il nome della classe da usare
•  extras: può essere usato per passare informazioni aggiuntive all’activity
lanciata
Esempi:
•  ACTION_MAIN con category CATEGORY_HOME
lancia la schermata Home
•  ACTION_GET_CONTENT con MIME type vnd.android.cursor.item/phone
Mostra una lista di numeri di telefono, consentendo all’utente di
selezionarne uno e ritornare il valore selezionato all’activity di partenza
Intent
Copyright© 2013 Paolo Montalto http://www.xabaras.it
3/3
Lanciare un’activity:
Recuperare il risultato di un’activity:
AndroidManifest.xml
Copyright© 2013 Paolo Montalto http://www.xabaras.it
Ogni applicazione android deve avere un ï¬le AndroidManifest.xml nella sua
directory principale.
Il manifest fornisce al sistema android informazioni essenziali
sull’applicazione.
•  Principali caratteristiche di AndroidManifest.xml
•  deï¬nisce il package name dell’applicazione
•  descrive i componenti dell’applicazione (activity, servizi, provider di
contenuti)
•  deï¬nisce quali permessi l’applicazione avrà per l’accesso a speciï¬che
funzionalità / caratteristiche hardware
•  dichiara il livello minimo di API supportato
•  dichiara eventuali librerie utlizzate esterne all’applicazione (presenti in un
package differente)
1/2
AndroidManifest.xml
Copyright© 2013 Paolo Montalto http://www.xabaras.it
Package name
Icona
applicazione
Nome visualizzato
Permessi
Versione App
Versione Android SDK
Intent
Activity
principale
2/2
Fragment (cenni)
Copyright© 2013 Paolo Montalto http://www.xabaras.it
•  Introdotti in android 3.0 Honeycomb
•  Fondamentali per il supporto alle applicazioni
Tablet
•  Porzioni indipendenti dell’interfaccia utente
•  Hanno un loro ciclo di vita (legato a quello
dell’activity)
•  Possono essere combinati in layout muti-pane
•  Possono essere riutilizzati
1/3
Fragment (cenni)
Copyright© 2013 Paolo Montalto http://www.xabaras.it
Tipico utilizzo dei Fragment
2/3
Fragment (cenni)
Copyright© 2013 Paolo Montalto http://www.xabaras.it
3/3
•  Possono essere
inseriti nella
deï¬nizione xml del
layout
•  Possono essere
dichiarati via codice
Altri componenti del framework
Copyright© 2013 Paolo Montalto http://www.xabaras.it
•  Dialog
visualizzano ï¬nestre di dialogo (es: i classici alert)
•  Service
eseguono codice in background, possono essere in esecuzione anche quando
l’app non lo è
•  Broadcast Receiver
ricevono e gestiscono eventi in modo asincrono
•  Content Provider
consentono di accedere ai dati attraverso un’interfaccia standard (possibile
deï¬nire custom)
•  Notiï¬cation
mostrano informazioni nella barra delle notiï¬che
Frammentazione
Copyright© 2013 Paolo Montalto http://www.xabaras.it
•  Ecosistema frammentato
•  Frammentazione delle versioni di
android
•  Frammentazione delle dimensioni
di schermo
•  Frammentazione delle densità di
schermo
•  Personalizzazioni dei produttori
Support Library
Copyright© 2013 Paolo Montalto http://www.xabaras.it
•  Introdotta per porre un rimedio alla frammentazione relativa
a differenti versioni del sistema operativo
•  Consente l’accesso a tutta una serie di funzionalità
introdotte da android HoneyComb(android 3.0 api v11) in
poi su dispositivi con api precedente
•  Supporta dispositivi android da api v4 in poi
•  E’ anche detta support-v4
•  E’ distribuita sotto forma di .jar da includere nel progetto
	
  
Grazie per l’attenzione!

More Related Content

Sviluppare applicazioni android

  • 1. Sviluppare applicazioni Android Copyright© 2013 Paolo Montalto http://www.xabaras.it
  • 2. Argomenti trattati •  Cos’è Android •  SDK (eclipse + tools) •  Struttura di un progetto android •  Componenti base (Activity, View, Intent …) •  Fragment (cenni) •  Frammentazione e Support library (cenni) Copyright© 2013 Paolo Montalto http://www.xabaras.it
  • 3. Che cos’è android? Copyright© 2013 Paolo Montalto http://www.xabaras.it •  Sistema operativo per dispositivi mobili •  Sviluppato dalla Open Handset Alliance (84 aziende tra cui Google, Samsung, LG, Nvidia…) •  Open Source e gratuito •  Basato su Kernel Linux •  Linguaggio di programmazione Java
  • 4. Android != Linux Copyright© 2013 Paolo Montalto http://www.xabaras.it •  Basato inizialmente su Kernel 2.6 •  Supporto ARM (e successivamente x86) •  Sviluppato separatamente •  Aggiunte patch non presenti in main branch linux (ashmem, alarms, power management, low memory kliller, logger…) •  Parziale integrazione in versione 3.3 La  release  3.3  del  kernel  vi  perme1erà  di  avviare  un  userspace  Android  senza   alcuna  modiï¬ca,  sebbene  la  ges<one  dell’alimentazione  non  sia  molto  buona.   Nella  versione  3.4  del  kernel  si  spera  di  poter  correggere  questo  problema  e   arrivare  ad  una  piena  integrazione  con  Android.     Greg  Kroah-­â€Hartman  (Linux  kernel  –stable  branch  maintainer)  
  • 5. Java ma non JVM Copyright© 2013 Paolo Montalto http://www.xabaras.it •  Dalvik Virtual Machine •  No Java SE v Java ME •  Subset Apache Harmony •  No executable jars: apk .java   .class   .dex  
  • 6. Architettura Copyright© 2013 Paolo Montalto http://www.xabaras.it Dalvik Virtual Machine E’ qui che agiamo!
  • 7. SDK Copyright© 2013 Paolo Montalto http://www.xabaras.it •  Android developer tools •  tools a linea di comando (adb, zipalign) •  SDK Manager •  AVD Manager (android virtual device manager) •  Emulatore •  Eclipse ADT plugin L’android SDK è costituito da:  
  • 8. Android SDK Manager Copyright© 2013 Paolo Montalto http://www.xabaras.it
  • 9. AVD Manager Copyright© 2013 Paolo Montalto http://www.xabaras.it
  • 10. Emulatore Copyright© 2013 Paolo Montalto http://www.xabaras.it •  Rom nativa android •  Google API •  Mock Locations •  Simulazione Rete GSM •  Pulsanti hardware •  Hardware keyboard •  D-Pad •  Pulsanti volume •  Pulsante “Powerâ€
  • 11. Graphical layout editor Copyright© 2013 Paolo Montalto http://www.xabaras.it
  • 12. Dalvik Debug Monitor Server Copyright© 2013 Paolo Montalto http://www.xabaras.it •  system information •  screen capture •  thread/heap info •  logcat •  processi •  controllo emulatore •  trafï¬co di rete •  stato della rete •  posizioni GPS (mock)
  • 13. Struttura di un Progetto Copyright© 2013 Paolo Montalto http://www.xabaras.it Codice Java Codice generato dal compilatore Librerie e dipendenze di sistema Deï¬nizione dell’applicazione Risorse: •  layout (xml) •  Immagini •  Stili •  File lingua Librerie .jar, .so Altri ï¬le dell’applicaizone (es. .pdf, .html, .db …)
  • 14. La directory “res†Copyright© 2013 Paolo Montalto http://www.xabaras.it Risorse graï¬che Risorse che rappresentano valori (colori, dimensioni, stringhe di testo, stili della GUI) I valori dopo il “-†nei nomi delle directory sono i selettori delle risorse, servono ad identiï¬care l’utilizzo che l’applicazione farà di quelle risorse: •  hdpi: dispositivi con densità di schermo alta •  sw600dp: device la cui risoluzione orizzontale sia almeno di 600dp •  v11: utilizzare solo se la versione di android sul dispositivo è 11 •  it: se la lingua del device è Italiano
  • 15. Activity Copyright© 2013 Paolo Montalto http://www.xabaras.it Activity è il “contesto†base di esecuzione in un’applicazione android. •  Entry point dell’applicazione android •  Solo una in foreground •  Solo una attiva •  Stack: nuove activity sempre on top
  • 16. Activity: ciclo di vita Copyright© 2013 Paolo Montalto http://www.xabaras.it
  • 17. View Copyright© 2013 Paolo Montalto http://www.xabaras.it •  Componenti base della UI di android •  Deï¬nite e utilizzate nei ï¬le xml di Layout •  Una view sa come disegnare se stessa •  Risponde agli eventi (es: onClick, onLongClick) •  Organizzate in gerarchie (ViewGroup) Il framework android si occupa di misurare, disegnare e disporre le View e i ViewGroup
  • 18. Layout Copyright© 2013 Paolo Montalto http://www.xabaras.it •  RelativeLayout: Layout eredita da ViewGroup •  TextView è una View (come EditText, WebView, ListView, ScrollView…) •  Riferimenti a risorse esterne al Layout (@string, @drawable, @dimen) File xml
  • 19. Layout e Activity Copyright© 2013 Paolo Montalto http://www.xabaras.it Caricamento layout nell’activity Accesso alle View Accesso a risorse
  • 20. Intent Copyright© 2013 Paolo Montalto http://www.xabaras.it E’ una descrizione astratta di un’operazione da eseguire. Generalmente usato per lanciare un’Activity Parametri principali: •  action: l’azione che è necessario compiere, ad esempio ACTION_VIEW, ACTION_EDIT, ACTION_MAIN, etc. •  data: i dati sui quali effettuare l’operazione, ad esempio una persona nel database di contatti, un url di un sito web, etc. Esempi (action – data): •  ACTION_VIEW - content://contacts/people/1 mostra informazioni sulla persona il cui ID è 1 •  ACTION_DIAL - content://contacts/people/1 mostra la scheramata di chiamata per la persona il cui ID è 1 1/3
  • 21. Intent Copyright© 2013 Paolo Montalto http://www.xabaras.it 2/3 Attributi secondari: •  category: informazioni aggiuntive sull’azione da eseguire (es. CATEGORY_LAUNCHER) •  type: speciï¬ca il MIME type dei dati passati all’Intent •  component: speciï¬ca esplicitamente il nome della classe da usare •  extras: può essere usato per passare informazioni aggiuntive all’activity lanciata Esempi: •  ACTION_MAIN con category CATEGORY_HOME lancia la schermata Home •  ACTION_GET_CONTENT con MIME type vnd.android.cursor.item/phone Mostra una lista di numeri di telefono, consentendo all’utente di selezionarne uno e ritornare il valore selezionato all’activity di partenza
  • 22. Intent Copyright© 2013 Paolo Montalto http://www.xabaras.it 3/3 Lanciare un’activity: Recuperare il risultato di un’activity:
  • 23. AndroidManifest.xml Copyright© 2013 Paolo Montalto http://www.xabaras.it Ogni applicazione android deve avere un ï¬le AndroidManifest.xml nella sua directory principale. Il manifest fornisce al sistema android informazioni essenziali sull’applicazione. •  Principali caratteristiche di AndroidManifest.xml •  deï¬nisce il package name dell’applicazione •  descrive i componenti dell’applicazione (activity, servizi, provider di contenuti) •  deï¬nisce quali permessi l’applicazione avrà per l’accesso a speciï¬che funzionalità / caratteristiche hardware •  dichiara il livello minimo di API supportato •  dichiara eventuali librerie utlizzate esterne all’applicazione (presenti in un package differente) 1/2
  • 24. AndroidManifest.xml Copyright© 2013 Paolo Montalto http://www.xabaras.it Package name Icona applicazione Nome visualizzato Permessi Versione App Versione Android SDK Intent Activity principale 2/2
  • 25. Fragment (cenni) Copyright© 2013 Paolo Montalto http://www.xabaras.it •  Introdotti in android 3.0 Honeycomb •  Fondamentali per il supporto alle applicazioni Tablet •  Porzioni indipendenti dell’interfaccia utente •  Hanno un loro ciclo di vita (legato a quello dell’activity) •  Possono essere combinati in layout muti-pane •  Possono essere riutilizzati 1/3
  • 26. Fragment (cenni) Copyright© 2013 Paolo Montalto http://www.xabaras.it Tipico utilizzo dei Fragment 2/3
  • 27. Fragment (cenni) Copyright© 2013 Paolo Montalto http://www.xabaras.it 3/3 •  Possono essere inseriti nella deï¬nizione xml del layout •  Possono essere dichiarati via codice
  • 28. Altri componenti del framework Copyright© 2013 Paolo Montalto http://www.xabaras.it •  Dialog visualizzano ï¬nestre di dialogo (es: i classici alert) •  Service eseguono codice in background, possono essere in esecuzione anche quando l’app non lo è •  Broadcast Receiver ricevono e gestiscono eventi in modo asincrono •  Content Provider consentono di accedere ai dati attraverso un’interfaccia standard (possibile deï¬nire custom) •  Notiï¬cation mostrano informazioni nella barra delle notiï¬che
  • 29. Frammentazione Copyright© 2013 Paolo Montalto http://www.xabaras.it •  Ecosistema frammentato •  Frammentazione delle versioni di android •  Frammentazione delle dimensioni di schermo •  Frammentazione delle densità di schermo •  Personalizzazioni dei produttori
  • 30. Support Library Copyright© 2013 Paolo Montalto http://www.xabaras.it •  Introdotta per porre un rimedio alla frammentazione relativa a differenti versioni del sistema operativo •  Consente l’accesso a tutta una serie di funzionalità introdotte da android HoneyComb(android 3.0 api v11) in poi su dispositivi con api precedente •  Supporta dispositivi android da api v4 in poi •  E’ anche detta support-v4 •  E’ distribuita sotto forma di .jar da includere nel progetto Â