SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
ITIS Max Planck di Lancenigo diVillorba (TV)
A.S. 2013-2014
Prof. PAOLOTOSATO
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Programmazione mobile: ANDROID
Prima lezione: ambienti di sviluppo e architettura di un progetto
17/04/2014 2
• Com’è fattoAndroid
• Ambienti di sviluppo
• Principi di programmazione
• Gestione delle risorse
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Indice
17/04/2014 3
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Com’è fatto Android
Piattaforma software per smartphone e tablet.
Realizzata dal consorzio Open Handset Alliance, di cui
Google è capofila (aderiscono anche Samsung, HTC, LG,
Sony Ericsson, ASUS, Acer, ecc.).
Progetto nato nel 2005 che ha cominciato ad
affermarsi presso il grande pubblico a partire dal 2009.
17/04/2014 4
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Com’è fatto Android
Architettura (dal mondo Open Source)
SW di base
per l’utilizzo di un
dispositivo portatile
Piattaforma di sviluppo
Sistema Operativo
17/04/2014 5
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Com’è fatto Android
DalvikVirtual Machine
Esegue un linguaggio studiato per una migliore resa sugli
smartphone: DEX (Dalvik EXecutable).
17/04/2014 6
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Ambienti di sviluppo
Per costruire e testare apps
• Android SDK (http://developer.android.com/sdk/index.html)
Plugin per integrare SDK con IDE esistente
• NetBeans: NBAndroid (http://nbandroid.org/)
• Eclipse: ADT - Android DevelopmentTools
(http://developer.android.com/sdk/installing/installing-adt.html)
17/04/2014 7
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Ambienti di sviluppo
Eclipse
• Scaricare Eclipse ModelingTools
(https://www.eclipse.org/downloads/)
• Scaricare Android SDK tools - USE AN EXISTING IDE
(http://developer.android.com/sdk/index.html)
• Installare Eclipse Plugin
(http://developer.android.com/sdk/installing/installing-adt.html)
• Aggiungere qualche package (Window  Android SDK Manager):
Android SDKTools, Android SDK Platform-tools, l'ultima versione di Android
(cartella Android), Android Support Library (nella cartella Extras).
• Aggiungere AVD (Window  AndroidVirtual Device Manager)
17/04/2014 8
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Ambienti di sviluppo
Perché tutta questa fatica?
MIT App Inventor
http://appinventor.mit.edu/explore/ai2/beginner-videos.html
17/04/2014 9
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Principi di programmazione
HelloWorld!
File  New  Project  AndroidApplication Project
Application name: nome visualizzato nel Play Store e nello smartphone
Project Name: utilizzato in Eclipse
Package name: almeno due livelli (esempi.ciaomondo)
Minimum Required SDK: API 8 (Android 2.2)
Togliere la spunta su “Create custom launcher icon”
Activity Name: MainActivity (la classe che conterrà il nostro main)
17/04/2014 10
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Principi di programmazione
Modificare la classe MainActivity
package esempi.ciaomondo;
import android.os.Bundle;
import android.app.Activity;
import android.widget.TextView;
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = newTextView(this);
tv.setText("HelloWorld!");
setContentView(tv);
}
}
17/04/2014 11
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Principi di programmazione
Per provare l’applicazione
• AVD (AndroidVirtual Device).
• Dispositivo reale
• Attivare “Debug USB” (Impostazioni  Sviluppatore)
• Se non trovate “Debug USB”: Impostazioni  Info sul dispositivo  7 tap
sul “build number” finché non compare il messaggio “you are now a
developer”.
• Collegare telefono al computer
• Se tutto ok il dispositivo compare nella scheda “Devices” della prospettiva
DDMS (Dalvik Debug Monitor Service) di Eclipse.
• Pacchetto APK (Android Package)
Principi di programmazione
17/04/2014 12
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Android Package
• Aprire il file “AndroidManifest.xml”, all’interno del quale vanno dichiarati tutti i
componenti del software (Eclipse fa già tutto il lavoro per noi).
• Prima di distribuire in giro il pacchetto è necessario apporre su di esso una
firma digitale, altrimenti Android non potrà installarne i contenuti. Non è però
necessario che una certification authority riconosca la chiave utilizzata per la firma.
• File  Export  Export Android Application
• Selezionare il progetto da esportare
• Selezionare una chiare dallo keystore o crearne una (cartella "keystores",
file "android_keystore")
• Per crearne una, specificare alias (nome chiave) e validità (25 anni).
Principi di programmazione
API (Application Programming Interface)
• Nella cartella di installazione di Android SDK:
docs/reference/packages.html
• Online: http://developer.android.com/reference/packages.html
Poco della Micro Edition, molto della Standard Edition di Java (non ci sono AWT e
Swing)
android.widget : contiene i componenti per la costruzione delle interfacce grafiche.
android.graphics:funzioni primitive per la grafica di più basso livello.
android.location: strumenti per interagire con un eventuale ricevitore GPS.
17/04/2014 13
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Principi di programmazione
17/04/2014 14
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
4 mattoni di base
• Attività
sono quei blocchi di un’applicazione che interagiscono con l’utente
utilizzando lo schermo ed i dispositivi di input messi a
disposizione dallo smartphone.
Si realizza estendendo la classe base android.app.Activity.
• Servizio
Un servizio gira in sottofondo e non interagisce direttamente con
l’utente.
Si realizza estendendo la classe android.app.Service.
Principi di programmazione
17/04/2014 15
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
4 mattoni di base
• Broadcast Receiver
Viene utilizzato quando si intende intercettare un particolare evento,
ad esempio se si desidera compiere un’azione quando si scatta
una foto o quando parte la segnalazione di batteria scarica.
Si realizza estendendo la classe android.content.BroadcastReceiver.
• Content Provider
Utilizzati per esporre dati ed informazioni, costituiscono un canale di
comunicazione tra le differenti applicazioni installate nel sistema.
Si realizza estendendo la classe android.content.ContentProvider.
Gestione delle risorse
17/04/2014 16
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Progetto Android: disaccoppiamento dati/codice
src: package e classi dell’applicazione.
assets: risorse esterne (poso usata).
res: risorse esterne strutturate e gestite (riferite
nella speciale classe R).
gen: contiene la classe R, invocando la quale è
possibile richiamare via codice le risorse
memorizzate sotto la directory res.
Gestione delle risorse
17/04/2014 17
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
La cartella res può contenere una o più delle seguenti sotto-cartelle
• anim: file XML che descrivono delle animazioni.
• drawable: immagini (supportati PNG e JPEG).
• layout: file XML che descrivono il layout delle interfacce utente.
• values: file XML che descrivono stringhe e parametri utilizzati
dall’applicazione.
• xml: file XML di tipo qualsiasi.
• raw: file binari di tipo qualsiasi (ad esempio audio o filmati).
Gestione delle risorse
17/04/2014 18
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Qualificatori
• Lingua e regione: it per italiano, en per inglese, fr per francese, ecc.
• Dimensioni dello schermo: small (piccolo), normal (normale) e large (grande).
• Orientamento dello schermo: port (schermo più alto che largo), land (schermo
più largo che alto) e square (schermo quadrato).
• Densità dei pixel dello schermo: ldpi (bassa densità), mdpi (media densità),
hdpi (alta densità) e nodpi (speciale qualificatore che ospita le immagini che non
devono essere scalate in base alla densità).
Esempi
• drawable-small-land-mdpi-it
• values-it
• values-fr
Gestione delle risorse
17/04/2014 19
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Gestioni dei valori in res/values
Stringhe (strings.xml)
<string name="hello_world">Hello world!</string>
Colori (colors.xml)
<color name="rosso">#FF0000</color>
Rettangoli di colore (colors.xml)
<drawable name="verde">#00FF00</drawable>
Misure e dimensioni (dimens.xml)
<dimen name="lato">180px</dimen>
17/04/2014 20
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Gestione delle risorse
Gestioni dei valori in res/values
Array di interi (arrays.xml)
<integer-array name="numeriPrimi">
<item>3</item><item>7</item>
</integer-array>
Array di stringhe (arrays.xml)
<string-array name="nomi">
<item>Carlo</item><item>Claudia</item>
</string-array>
Stili e temi (styles.xml)
<style name="titolo">
<item name="android:textSize">18sp</item>
<item name="android:textColor">#000088</item>
</style>
Gestione delle risorse
17/04/2014 21
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Richiamare le risorse
Da XML: @tipo/nome
• @array, per gli array.
• @color, per i colori.
• @dimen, per le dimensioni.
• @drawable, per i valori drawable, e per le immagini messe in res/drawable.
• @layout, per richiamare i layout presenti nella cartella res/layout.
• @raw, per i file nella cartella res/raw (cfr. box laterale).
• @string, per le stringhe.
• @style, per gli stili.
Da Java
Resources res = getResources();
String appName = res.getString(R.string.app_name);
Gestione delle risorse
17/04/2014 22
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
package esempi.ciaomondo;
import android.os.Bundle;
import android.app.Activity;
import android.widget.TextView;
import android.content.res.Resources;
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Resources res = getResources();
String message = res.getString(R.string.hello_world);
TextView tv = newTextView(this);
tv.setText(message);
setContentView(tv);
}
}
17/04/2014 23
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
To be continued …

Contenu connexe

Similaire à Programmazione mobile: ANDROID

Google Android: una nuova piattaforma Open Source per dispositivi mobili
Google Android: una nuova piattaforma Open Source per dispositivi mobiliGoogle Android: una nuova piattaforma Open Source per dispositivi mobili
Google Android: una nuova piattaforma Open Source per dispositivi mobiliGoWireless
 
Presentazione+Android
Presentazione+AndroidPresentazione+Android
Presentazione+AndroidNicola Pedot
 
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidOpen Makers Italy
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatoreSMAU
 
Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net Leonardo Alario
 
WhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiWhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiMarco Gasparetto
 
Introduzione ad Android jug marche meeting 2011_04_30
Introduzione ad Android jug marche meeting 2011_04_30Introduzione ad Android jug marche meeting 2011_04_30
Introduzione ad Android jug marche meeting 2011_04_30Riccardo Mancinelli
 
01 Android - Introduction
01   Android - Introduction01   Android - Introduction
01 Android - Introductionspawn150
 
Meet no Neet: presentazione del progetto App per organizzare eventi
Meet no Neet: presentazione del progetto App per organizzare eventiMeet no Neet: presentazione del progetto App per organizzare eventi
Meet no Neet: presentazione del progetto App per organizzare eventiFondazione Mondo Digitale
 
Android, panoramica e sviluppo
Android, panoramica e sviluppoAndroid, panoramica e sviluppo
Android, panoramica e sviluppoLorenzo Braghetto
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkGiovanni Buffa
 
Sviluppare una app mobile net oriented
Sviluppare una app mobile net orientedSviluppare una app mobile net oriented
Sviluppare una app mobile net orientedAlessandro Morvillo
 
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...Codemotion
 
SMAU PADOVA 2019 Luca Bonadimani (AIPSI)
SMAU PADOVA 2019 Luca Bonadimani (AIPSI)SMAU PADOVA 2019 Luca Bonadimani (AIPSI)
SMAU PADOVA 2019 Luca Bonadimani (AIPSI)SMAU
 
Android base day1
Android base day1Android base day1
Android base day1Andrea Zaza
 

Similaire à Programmazione mobile: ANDROID (20)

Google Android: una nuova piattaforma Open Source per dispositivi mobili
Google Android: una nuova piattaforma Open Source per dispositivi mobiliGoogle Android: una nuova piattaforma Open Source per dispositivi mobili
Google Android: una nuova piattaforma Open Source per dispositivi mobili
 
Android
AndroidAndroid
Android
 
Presentazione+Android
Presentazione+AndroidPresentazione+Android
Presentazione+Android
 
platforms
platformsplatforms
platforms
 
Introduzione ad Android
Introduzione ad AndroidIntroduzione ad Android
Introduzione ad Android
 
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile Android
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatore
 
Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net
 
WhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiWhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessi
 
Introduzione a .Net Core
Introduzione a .Net CoreIntroduzione a .Net Core
Introduzione a .Net Core
 
Introduzione ad Android jug marche meeting 2011_04_30
Introduzione ad Android jug marche meeting 2011_04_30Introduzione ad Android jug marche meeting 2011_04_30
Introduzione ad Android jug marche meeting 2011_04_30
 
01 Android - Introduction
01   Android - Introduction01   Android - Introduction
01 Android - Introduction
 
Meet no Neet: presentazione del progetto App per organizzare eventi
Meet no Neet: presentazione del progetto App per organizzare eventiMeet no Neet: presentazione del progetto App per organizzare eventi
Meet no Neet: presentazione del progetto App per organizzare eventi
 
Android, panoramica e sviluppo
Android, panoramica e sviluppoAndroid, panoramica e sviluppo
Android, panoramica e sviluppo
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un framework
 
Open Source
Open SourceOpen Source
Open Source
 
Sviluppare una app mobile net oriented
Sviluppare una app mobile net orientedSviluppare una app mobile net oriented
Sviluppare una app mobile net oriented
 
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
 
SMAU PADOVA 2019 Luca Bonadimani (AIPSI)
SMAU PADOVA 2019 Luca Bonadimani (AIPSI)SMAU PADOVA 2019 Luca Bonadimani (AIPSI)
SMAU PADOVA 2019 Luca Bonadimani (AIPSI)
 
Android base day1
Android base day1Android base day1
Android base day1
 

Dernier

Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaSalvatore Cianciabella
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxtecongo2007
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileNicola Rabbi
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxlorenzodemidio01
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxlorenzodemidio01
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxlorenzodemidio01
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxtecongo2007
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxlorenzodemidio01
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxtecongo2007
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....giorgiadeascaniis59
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.camillaorlando17
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoyanmeng831
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................giorgiadeascaniis59
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxlorenzodemidio01
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxtecongo2007
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxlorenzodemidio01
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................giorgiadeascaniis59
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxlorenzodemidio01
 

Dernier (18)

Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione Civica
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptx
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptx
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptx
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceo
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptx
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 

Programmazione mobile: ANDROID

  • 1. ITIS Max Planck di Lancenigo diVillorba (TV) A.S. 2013-2014 Prof. PAOLOTOSATO Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Programmazione mobile: ANDROID Prima lezione: ambienti di sviluppo e architettura di un progetto
  • 2. 17/04/2014 2 • Com’è fattoAndroid • Ambienti di sviluppo • Principi di programmazione • Gestione delle risorse Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Indice
  • 3. 17/04/2014 3 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Com’è fatto Android Piattaforma software per smartphone e tablet. Realizzata dal consorzio Open Handset Alliance, di cui Google è capofila (aderiscono anche Samsung, HTC, LG, Sony Ericsson, ASUS, Acer, ecc.). Progetto nato nel 2005 che ha cominciato ad affermarsi presso il grande pubblico a partire dal 2009.
  • 4. 17/04/2014 4 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Com’è fatto Android Architettura (dal mondo Open Source) SW di base per l’utilizzo di un dispositivo portatile Piattaforma di sviluppo Sistema Operativo
  • 5. 17/04/2014 5 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Com’è fatto Android DalvikVirtual Machine Esegue un linguaggio studiato per una migliore resa sugli smartphone: DEX (Dalvik EXecutable).
  • 6. 17/04/2014 6 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Ambienti di sviluppo Per costruire e testare apps • Android SDK (http://developer.android.com/sdk/index.html) Plugin per integrare SDK con IDE esistente • NetBeans: NBAndroid (http://nbandroid.org/) • Eclipse: ADT - Android DevelopmentTools (http://developer.android.com/sdk/installing/installing-adt.html)
  • 7. 17/04/2014 7 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Ambienti di sviluppo Eclipse • Scaricare Eclipse ModelingTools (https://www.eclipse.org/downloads/) • Scaricare Android SDK tools - USE AN EXISTING IDE (http://developer.android.com/sdk/index.html) • Installare Eclipse Plugin (http://developer.android.com/sdk/installing/installing-adt.html) • Aggiungere qualche package (Window  Android SDK Manager): Android SDKTools, Android SDK Platform-tools, l'ultima versione di Android (cartella Android), Android Support Library (nella cartella Extras). • Aggiungere AVD (Window  AndroidVirtual Device Manager)
  • 8. 17/04/2014 8 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Ambienti di sviluppo Perché tutta questa fatica? MIT App Inventor http://appinventor.mit.edu/explore/ai2/beginner-videos.html
  • 9. 17/04/2014 9 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Principi di programmazione HelloWorld! File  New  Project  AndroidApplication Project Application name: nome visualizzato nel Play Store e nello smartphone Project Name: utilizzato in Eclipse Package name: almeno due livelli (esempi.ciaomondo) Minimum Required SDK: API 8 (Android 2.2) Togliere la spunta su “Create custom launcher icon” Activity Name: MainActivity (la classe che conterrà il nostro main)
  • 10. 17/04/2014 10 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Principi di programmazione Modificare la classe MainActivity package esempi.ciaomondo; import android.os.Bundle; import android.app.Activity; import android.widget.TextView; public class MainActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = newTextView(this); tv.setText("HelloWorld!"); setContentView(tv); } }
  • 11. 17/04/2014 11 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Principi di programmazione Per provare l’applicazione • AVD (AndroidVirtual Device). • Dispositivo reale • Attivare “Debug USB” (Impostazioni  Sviluppatore) • Se non trovate “Debug USB”: Impostazioni  Info sul dispositivo  7 tap sul “build number” finché non compare il messaggio “you are now a developer”. • Collegare telefono al computer • Se tutto ok il dispositivo compare nella scheda “Devices” della prospettiva DDMS (Dalvik Debug Monitor Service) di Eclipse. • Pacchetto APK (Android Package)
  • 12. Principi di programmazione 17/04/2014 12 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Android Package • Aprire il file “AndroidManifest.xml”, all’interno del quale vanno dichiarati tutti i componenti del software (Eclipse fa già tutto il lavoro per noi). • Prima di distribuire in giro il pacchetto è necessario apporre su di esso una firma digitale, altrimenti Android non potrà installarne i contenuti. Non è però necessario che una certification authority riconosca la chiave utilizzata per la firma. • File  Export  Export Android Application • Selezionare il progetto da esportare • Selezionare una chiare dallo keystore o crearne una (cartella "keystores", file "android_keystore") • Per crearne una, specificare alias (nome chiave) e validità (25 anni).
  • 13. Principi di programmazione API (Application Programming Interface) • Nella cartella di installazione di Android SDK: docs/reference/packages.html • Online: http://developer.android.com/reference/packages.html Poco della Micro Edition, molto della Standard Edition di Java (non ci sono AWT e Swing) android.widget : contiene i componenti per la costruzione delle interfacce grafiche. android.graphics:funzioni primitive per la grafica di più basso livello. android.location: strumenti per interagire con un eventuale ricevitore GPS. 17/04/2014 13 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
  • 14. Principi di programmazione 17/04/2014 14 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. 4 mattoni di base • Attività sono quei blocchi di un’applicazione che interagiscono con l’utente utilizzando lo schermo ed i dispositivi di input messi a disposizione dallo smartphone. Si realizza estendendo la classe base android.app.Activity. • Servizio Un servizio gira in sottofondo e non interagisce direttamente con l’utente. Si realizza estendendo la classe android.app.Service.
  • 15. Principi di programmazione 17/04/2014 15 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. 4 mattoni di base • Broadcast Receiver Viene utilizzato quando si intende intercettare un particolare evento, ad esempio se si desidera compiere un’azione quando si scatta una foto o quando parte la segnalazione di batteria scarica. Si realizza estendendo la classe android.content.BroadcastReceiver. • Content Provider Utilizzati per esporre dati ed informazioni, costituiscono un canale di comunicazione tra le differenti applicazioni installate nel sistema. Si realizza estendendo la classe android.content.ContentProvider.
  • 16. Gestione delle risorse 17/04/2014 16 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Progetto Android: disaccoppiamento dati/codice src: package e classi dell’applicazione. assets: risorse esterne (poso usata). res: risorse esterne strutturate e gestite (riferite nella speciale classe R). gen: contiene la classe R, invocando la quale è possibile richiamare via codice le risorse memorizzate sotto la directory res.
  • 17. Gestione delle risorse 17/04/2014 17 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. La cartella res può contenere una o più delle seguenti sotto-cartelle • anim: file XML che descrivono delle animazioni. • drawable: immagini (supportati PNG e JPEG). • layout: file XML che descrivono il layout delle interfacce utente. • values: file XML che descrivono stringhe e parametri utilizzati dall’applicazione. • xml: file XML di tipo qualsiasi. • raw: file binari di tipo qualsiasi (ad esempio audio o filmati).
  • 18. Gestione delle risorse 17/04/2014 18 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Qualificatori • Lingua e regione: it per italiano, en per inglese, fr per francese, ecc. • Dimensioni dello schermo: small (piccolo), normal (normale) e large (grande). • Orientamento dello schermo: port (schermo più alto che largo), land (schermo più largo che alto) e square (schermo quadrato). • Densità dei pixel dello schermo: ldpi (bassa densità), mdpi (media densità), hdpi (alta densità) e nodpi (speciale qualificatore che ospita le immagini che non devono essere scalate in base alla densità). Esempi • drawable-small-land-mdpi-it • values-it • values-fr
  • 19. Gestione delle risorse 17/04/2014 19 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Gestioni dei valori in res/values Stringhe (strings.xml) <string name="hello_world">Hello world!</string> Colori (colors.xml) <color name="rosso">#FF0000</color> Rettangoli di colore (colors.xml) <drawable name="verde">#00FF00</drawable> Misure e dimensioni (dimens.xml) <dimen name="lato">180px</dimen>
  • 20. 17/04/2014 20 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Gestione delle risorse Gestioni dei valori in res/values Array di interi (arrays.xml) <integer-array name="numeriPrimi"> <item>3</item><item>7</item> </integer-array> Array di stringhe (arrays.xml) <string-array name="nomi"> <item>Carlo</item><item>Claudia</item> </string-array> Stili e temi (styles.xml) <style name="titolo"> <item name="android:textSize">18sp</item> <item name="android:textColor">#000088</item> </style>
  • 21. Gestione delle risorse 17/04/2014 21 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Richiamare le risorse Da XML: @tipo/nome • @array, per gli array. • @color, per i colori. • @dimen, per le dimensioni. • @drawable, per i valori drawable, e per le immagini messe in res/drawable. • @layout, per richiamare i layout presenti nella cartella res/layout. • @raw, per i file nella cartella res/raw (cfr. box laterale). • @string, per le stringhe. • @style, per gli stili. Da Java Resources res = getResources(); String appName = res.getString(R.string.app_name);
  • 22. Gestione delle risorse 17/04/2014 22 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. package esempi.ciaomondo; import android.os.Bundle; import android.app.Activity; import android.widget.TextView; import android.content.res.Resources; public class MainActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Resources res = getResources(); String message = res.getString(R.string.hello_world); TextView tv = newTextView(this); tv.setText(message); setContentView(tv); } }
  • 23. 17/04/2014 23 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. To be continued …