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 …

Programmazione mobile: ANDROID

  • 1.
    ITIS Max Planckdi 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/201412 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/201414 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/201415 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/201416 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/201417 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/201418 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/201419 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/201421 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/201422 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 …