Programmazione mobile: ANDROID
-
Upload
paolo-tosato -
Category
Education
-
view
571 -
download
0
description
Transcript of Programmazione mobile: ANDROID
ITIS Max Planck di Lancenigo di Villorba (TV) A.S. 2013-2014
Prof. PAOLO TOSATO
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’è fatto Android
• 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
Dalvik Virtual 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 Development Tools (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 Modeling Tools (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 SDK Tools, Android SDK Platform-tools, l'ultima versione di Android (cartella Android), Android Support Library (nella cartella Extras).
• Aggiungere AVD (Window Android Virtual 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
Hello World!
File New Project Android Application 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 = new TextView(this); tv.setText("Hello World!"); 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 (Android Virtual 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 = new TextView(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 …