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 …