+ All Categories
Home > Documents > Android Programming Bull

Android Programming Bull

Date post: 06-Apr-2018
Category:
Upload: loozgql
View: 238 times
Download: 0 times
Share this document with a friend

of 15

Transcript
  • 8/3/2019 Android Programming Bull

    1/15

    Approfondimenti tematici

    Il corso completo per impararea programmare con il S.O. Google

    dedicato agli smartphone

    AndroidPROGRAMMING

  • 8/3/2019 Android Programming Bull

    2/15

    Questo approfondimento tematico pensato per

    chi vuol imparare a programmare e creare software

    per gli smartphone con sistema operativo Google

    Android. La prima parte del testo guida il lettore alla

    conoscenza degli strumenti necessari per sviluppare

    sulla piattaforma mobile di Mountain View (installa-

    zione SDK, librerie e tool di supporto allo sviluppo).

    Le sezioni successive sono pensate per un apprendi-

    mento pratico basato su esempi di progetto: dialogo

    e interazione con lambiente operativo del telefo-

    nino, interazione con gli utenti, componenti di un

    widget, interfacce in XML, gestione del touch, proget-

    tazione dei menu e via dicendo.

    Una serie di esempi pratici da seguire passo passo

    che spingono il lettore a sperimentare sul campo

    il proprio livello di apprendimento e lo invitano a

    imparare divertendosi.

    Androidprogramming

  • 8/3/2019 Android Programming Bull

    3/15

    PROGRAMMARE GOOGLE ANDROID . . . . . . . . . . . . . . 4

    Primo appuntamento alla scoperta di android. installeremo gli

    strumenti di sviluppo necessari e faremo la conoscenza dei principi

    di base che regolano il funzionamento del sistema mobile realizzato

    da google

    LE RISORSE ESTERNE IN GOOGLE ANDROID . . . . . . . 12In questo secondo articolo impareremo a manipolare le risorse

    esterne. Scopriremo che android rende facile lutilizzo di tutto

    quello che, pur non essendo codice, indispensabile al corretto

    funzionamento di unapplicazione

    COME IL SISTEMA GESTISCE LE ATTIVIT . . . . . . . . . 16

    Terzo appuntamento. Le attivit sono il componente software pi

    utilizzato dai programmatori android. in questo articolo impareremo

    cos unattivit, come viene gestita dal sistema e come possiamo

    realizzarne di nostre

    INTERFACCE: LAYOUT E COMPONENTI. . . . . . . . . . . . 21Quarto appuntamento. inizia la trattazione dei concetti e degli

    strumenti di android per la costruzione e la gestione delle interfacce

    utente. si comincia con i widget ed i layout di base, indispensabili in

    ogni applicazione

    INTERFACCE IN XML PER ANDROID . . . . . . . . . . . . . . 26

    Quinto appuntamento. vi sembrato che il design java di

    uninterfaccia utente, in android, sia lungo e noioso? nessun

    problema! oggi impareremo a servirci dellxml per velocizzare e

    semplicare loperazione

    GESTIRE IL TOUCH SU ANDROID . . . . . . . . . . . . . . . . 31

    Sesto appuntamento. in questa puntata del corso impareremo

    le varie tecniche per intercettare le azioni di tocco e digitazione

    eseguite dallutente sui widget presenti nel display, in modo da

    reagire di conseguenza

    ANDROID: TUTTO SUI MENU . . . . . . . . . . . . . . . . . . . 36

    Settimo appuntamento. argomento del mese sono i menu. le

    applicazioni android ne supportano diversi tipi, che lutente pu

    sfruttare per azionare comandi e impostare le opzioni. conosciamoli

    e impariamo a programmarli

    NOTIFICHE E FINESTRE DI DIALOGO . . . . . . . . . . . . . . 41

    Ottavo appuntamento. questo mese incrementeremo linterattivitdelle nostre applicazioni, dotandole della possibilit di emettere

    degli avvisi e di interrogare lutente attraverso le nestre di dialogo

    INFO E FOTO: COS LE PRESENTI MEGLIO! . . . . . . . . . 47

    Nono appuntamento. ci occuperemo dei widget in grado di leggere

    le informazioni da organizzare e mostrare allutente. scopriremo

    i componenti utilizzati per realizzare liste, tabelle e gallerie di

    immagini

    UNAPPLICAZIONE CON STILE . . . . . . . . . . . . . . . . . . . 52

    Il design uno dei fattori pi importanti in ambito mobile. non

    sufciente che unapplicazione funzioni: deve anche essere elegante

    e gradevole alla vista. Per questo oggi scopriremo come gestire il

    look delle applicazioni

    LO STORAGING SECONDO ANDROID . . . . . . . . . . . . . 57

    Leggere e scrivere le dal disco di uno smartphone android

    unoperazione possibile ma soggetta a restrizioni di sicurezza e a

    norme di buon uso. Oggi impareremo come utilizzare correttamenteil le system di android

    DATABASEDA TASCHINO . . . . . . . . . . . . . . . . . . . . . . . 61

    Una delle caratteristiche pi interessanti di android il dbms

    integrato nel sistema, che dota le applicazioni della capacit

    di archiviare e ricercare velocemente i dati. in questo articolo

    impareremo come approttarne

    GESTIONE DEI CONTENT PROVIDER . . . . . . . . . . . . . . 67

    I content provider costituiscono la maniera di android per

    condividere dati fra le applicazioni. in questo articolo impareremo a

    consultare i provider predeniti e vedremo anche come costruire unfornitore di contenuti custom

    LE APPLICAZIONI GIRANO IN PARALLELO . . . . . . . . . 71

    I servizi sono quella funzionalit di android che permette di

    eseguire operazioni in sottofondo, anche quando lapplicazione che

    le ha avviate non pi attiva. Insomma: multitasking allo stato

    puro, anche in mobilit!

    TU SEI QUI! TE LO DICE ANDROID . . . . . . . . . . . . . . . 75

    I servizi location-based sono una delle caratteristiche pi attraenti

    di android. impariamo a realizzare applicazioni in grado di

    localizzare lutente via gps e di disegnare la sua posizione in una

    mappa

    APP ANDROID FACILI CON APP INVENTOR . . . . . . . . 81

    App Inventor il nuovo sistema di google per creare

    applicazioni android senza scrivere una sola riga di codice.

    scopriamo in cosa consiste e utilizziamolo per realizzare

    facilmente le nostre idee

    PORTA TWITTER SU GOOGLE ANDROID. . . . . . . . . . . 88

    In questo articolo vedremo come sviluppare unapplicazione

    per android, capace di dialogare con il servizio di Social

    Networking Twitter. A tal scopo mostreremo come utilizzare

    la libreria Twitter4j

    UN CLIENT TWITTER SU ANDROID . . . . . . . . . . . . . . . 93

    Continuiamo e completiamo il nostro progetto per implementare un

    client Twitter sulla piattaforma Android. Loccasione ci permetter di

    approfondire molti aspetti sul funzionamento del sistema operativo

    creato da Google

    ANDROID DIALOGA CON OUTLOOK . . . . . . . . . . . . . 98

    Il paradigma del data on the cloud risulta comodo quando si

    vogliono gestire le stesse informazioni da diversi client, eterogenei

    tra loro. In questo articolo lo adopereremo per tenere sincronizzate

    delle note tra android e outlook

  • 8/3/2019 Android Programming Bull

    4/15

    Android programming4

    Android programming Gli strumenti necessari per imparare a programmare Android

    PROGRAMMARE

    GOOGLE ANDROIDPRIMO APPUNTAMENTO ALLA SCOPERTA DI ANDROID. INSTALLEREMO GLI STRUMENTI

    DI SVILUPPO NECESSARI E FAREMO LA CONOSCENZA DEI PRINCIPI DI BASE CHE REGOLANO

    IL FUNZIONAMENTO DEL SISTEMA MOBILE REALIZZATO DA GOOGLE

    M

    eno di due anni fa Google ha rilasciato

    una versione preliminare del kit di svi-

    luppo di Android, il suo nuovo SO

    dedicato agli smartphone. Futurologi e semplici

    appassionati si divisero immediatamente tra

    entusiasti e scettici. I detrattori, in particolar

    modo, hanno sempre visto in Android un esperi-

    mento, e non qualcosa di reale al quale i produt-

    tori di dispositivi avrebbero creduto. A loro favo-

    re ha deposto il fatto che, per un periodo piutto-

    sto lungo, nessuno smartphone equipaggiato

    con Android ha fatto capolino sul mercato, ben-

    ch il sistema e i suoi strumenti di sviluppo fos-

    sero ormai disponibili da parecchio tempo. La

    tecnica di Google, in realt, era ed ancora quel-

    la di sempre: far venire lacquolina in bocca (e farparlare di s) con versioni preliminari dei suoi

    software e dei suoi servizi.

    Nel caso di Android, molti sviluppatori sono

    stati fidelizzati e fatti appassionare a un siste-

    ma che, allora, non era ancora sul mercato.

    Nel frattempo le cose sono cambiate: Android

    stato consolidato, e molti produttori di

    dispositivi mobili hanno aderito o stanno ade-

    rendo allalleanza capeggiata da Google.

    Grazie alle strategie di Google, esiste gi una

    comunit molto ampia di sviluppatori, estre-

    mamente produttiva, che altri sistemi mobilinon possono vantare. Migliaia di applicazioni

    sono state gi sviluppate, e molte altre lo

    saranno nei prossimi tempi.

    Il sistema appare inoltre stabile ed offre

    potenzialit molto ampie. Per questo motivo,

    a partire dal numero che state leggendo,

    ioProgrammo dedicher ad Android un corso

    di programmazione a puntate.

    Si comincia, naturalmente, con lo studio del-

    larchitettura del sistema, linstallazione e

    lutilizzo degli strumenti di sviluppo, un

    primo compendio sui principi di base della

    programmazione Android e lo sviluppo di una

    prima semplice applicazione del tipo Ciao

    Mondo.

    COME FATTOANDROID Android, essendo un sistema operativo di

    moderna fattura, abbastanza complesso.

    Anche se il suo target sono i dispositivi mobi-

    li, larchitettura di Android ha poco da invi-

    diare a quelle dei comuni sistemi per desktop

    o laptop. Tale architettura presentata sche-

    maticamente in Fig.1.

    Come si evince dalla figura, Google ha attinto

    a piene mani dal mondo Open Source.Il cuore di ogni sistema Android, tanto per

    cominciare, un kernel Linux, versione 2.6.

    Direttamente nel kernel sono inseriti i driver

    per il controllo dellhardware del dispositivo:

    driver per la tastiera, lo schermo, il touchpad,

    il Wi-Fi, il Bluetooth, il controllo dellaudio e

    cos via. Sopra il kernel poggiano le librerie

    fondamentali, anche queste tutte mutuate dal

    mondo Open Source. Da citare sono senzal-

    tro OpenGL, per la grafica, SQLite, per la

    gestione dei dati, e WebKit, per la visualizza-

    zione delle pagine Web. Insomma, nei prossi-

    mi mesi avremo di che discutere!

    Larchitettura prevede poi una macchina vir-

    tuale e una libreria fondamentale che, insie-

    K CD K WEBcorsoandroid1.zip

    cdrom.ioprogrammo.it

    Conoscenze richieste

    Basi di Java

    Software

    Java SDK (JDK) 5+,Eclipse 3.3

    Impegno

    Tempo di realizzazione

    REQUISITI

    Fig. 1: Larchitettura di Google Android

  • 8/3/2019 Android Programming Bull

    5/15

    5Android programming

    Android programmingGli strumenti necessari per imparare a programmare Androidme, costituiscono la piattaforma di sviluppoper le applicazioni Android. Questa macchinavirtuale si chiama Dalvik, e sostanzialmente una Java Virtual Machine. Come verifichere-mo pi tardi, alcune delle caratteristiche di

    Dalvik e della sua libreria non permettono diidentificare immediatamente la piattaformaJava disponibile in Android con una di quelledi riferimento (Java SE, Java ME).Nel penultimo strato dellarchitettura possi-bile rintracciare i gestori e le applicazioni dibase del sistema. Ci sono gestori per le risor-se, per le applicazioni installate, per le telefo-nate, il file system e altro ancora: tutti compo-nenti di cui difficilmente si pu fare a meno.Infine, sullo strato pi alto dellarchitettura,poggiano gli applicativi destinati allutentefinale. Molti, naturalmente, sono gi inclusicon linstallazione di base: il browser ed ilplayer multimediale sono dei facili esempi.

    A questo livello si inseriranno anche le appli-cazioni che, insieme, impareremo a sviluppa-re nellarco di questo corso a puntate.

    ANDROID SDKPer sviluppare applicazioni in grado di giraresu sistemi Android, necessario installare sulproprio PC un apposito kit di sviluppo (SDK),

    che sia completo di emulatore, librerie edocumentazione. Se avete gi sviluppato perpiattaforme quali Java ME o Windows Mobile,capite bene cosa intendiamo (ma se nonlavete mai fatto, non vi preoccupate: qui sispiega tutto). La prima buona notizia chelAndroid SDK disponibile gratuitamente esenza discriminazioni per sistemi Windows,Linux e MacOS X. Come inizio, non c male. possibile scaricarlo collegandosi allindiriz-zo: http://developer.android.com/sdk/

    Vi verr proposto di scaricare la pi recente

    versione disponibile. Procedete pure al down-load del pacchetto adatto al vostro sistema. Al momento della stesura di questo articolo,la versione scaricabile dalla pagina la 1.5_r3(che sta per 1.5 Release 3), ma se ne trovate dipi recenti fate pure: non dovrebbero differiretroppo da quella presa qui a riferimento.Linstallazione del kit veramente semplice.Lunica cosa di cui bisogna accertarsi, primadi procedere, di soddisfare i requisiti di base.In particolare, richiesto che il sistemadisponga gi di un Java SDK (JDK) versione 5o successiva. strettamente indispensabile

    soddisfare questo requisito, poich Android siprogramma in Java, e senza un JDK non pos-sibile compilare il codice. Dopo aver verifica-

    to i requisiti, possibile procedere. Prendetelarchivio ZIP scaricato da Internet e scompat-tatelo dove meglio preferite. tutto: lAndroidSDK gi pronto alluso! Al massimo si puperfezionare linstallazione aggiungendo alla

    variabile dambiente PATHdel sistema opera-tivo il percorso della cartella toolsche allin-terno dellAndroid SDK. Cos facendo sar pisemplice invocare gli eseguibili del kit da rigadi comando. Loperazione, ad ogni modo, non indispensabile per un corretto funziona-mento del kit. In questo corso, inoltre, cerche-remo di servirci il meno possibile della riga dicomando, anche se in alcune occasioni tor-ner utile se non indispensabile.

    ADT PER ECLIPSEBench Android SDK disponga di script che au-tomatizzano linstallazione delle applicazioni,il lancio dellemulatore e il debug del codice,lavorare in un ambiente integrato, con ogni op-zione a portata di clic, sicuramente pi facile.Specie quando lambiente integrato si chiama Ecli-pse. Nel sito di Android contattato in prece-denza disponibile anche un plug-in per la ce-lebre piattaforma di sviluppo Open Source. Que-sto add-on si chiamaAndroid Development Tools

    for Eclipse, che abbreviato diventa ADT.

    Il modulo, al momento della stesura di questo ar-ticolo, funziona con le pi recenti versioni di

    Fig. 2: Configurando la nuova fonte in Eclipse, possibile scaricare ed installare

    automaticamente il plug-in per lo sviluppo del software Android (Eclipse 3.5)

  • 8/3/2019 Android Programming Bull

    6/15

    Android programming6

    Android programming Gli strumenti necessari per imparare a programmare Android

    Eclipse, che sono la 3.3, la 3.4 e anche la nuova3.5. Pu essere installato direttamente dallin-terno della piattaforma di sviluppo.

    Avviate Eclipse ed eseguite il wizard perlinstallazione di nuovi componenti. In Eclipse

    3.5 lo si fa con la voce di menu Help InstallNew Software. Nella 3.4 la voce di menu Help Software Updates, e poi si deve selezionare lascheda Available software. In Eclipse 3.3, infine,la voce di menu da richiamare Help Softwa-re Updates Find and install, scegliendo poiSearch for new features to install. Giunti a de-stinazione, scegliete lopzione per aggiungereun nuovo sito remoto alla lista delle fonti pre-sentate dal wizard (pulsante Add). Lindirizzoda specificare :https://dl-ssl.google.com/android/eclipse/r

    A questo punto selezionate la voce corrispondentealla nuova fonte e procedete attraverso i singo-li passi del wizard. Il plug-in per lo sviluppo delsoftware Android sar automaticamente scari-cato e installato. Dopo il riavvio di Eclipse, recateviimmediatamente nella schermata delle preferenzedellambiente (voce di menu Window Prefe-rences). Qui troverete disponibile la nuova ca-tegoria Android, nellelenco sulla sinistra.Selezionatela e impostate il percorso del vostro

    Android SDK: necessario affinch Eclipse pos-sa agganciare il kit di sviluppo. Durante questafase dovreste anche ricevere un pop-up per

    laccettadella licenza del plug-in.

    Per ora possibile tralasciare le altre possibiliimpostazioni collegate al plug-in: imparere-mo ad usarle pi avanti, quando avremopreso pi confidenza con lambiente.

    GESTIONE DEGLI AVD

    Il kit di sviluppo comprende un emulatore checi consentir di provare le nostre creazioni sulPC, prima di installarle su un reale dispositivo

    equipaggiato con Android. Per sviluppare leapplicazioni, quindi, dobbiamo imparare ainteragire con questo emulatore. Il primoconcetto che si deve assimilare quello cheha nome Android Virtual Device(AVD), cio

    dispositivo virtuale Android. Nel nostro PCpossiamo creare e configurare quanti disposi-tivi virtuali vogliamo. come avere tanti diffe-renti smartphone da utilizzare per i propritest, solo che invece di dispositivi di plastica esilicio si tratta di macchine virtuali, fatte ciodi puro software, da eseguire attraversolemulatore. In questo modo anche possibi-le avviare contemporaneamente sullo stessoPC due o pi dispositivi virtuali, ad esempioper testare unapplicazione che fa interagirepi smartphone, come una chat o un giocomultiplayer. Impariamo allora a gestirelelenco dei dispositivi virtuali configurati nelnostro Android SDK. possibile gestirli dariga di comando, usando il comando androidche nella cartella toolsdel kit di sviluppo, maluso dellinterfaccia di gestione resa disponi-bile da ADT in Eclipse ci render loperazionesenzaltro pi agevole. Attivate la voce dimenu Window Android AVD Manager.

    La finestra presenta la lista dei dispositivi vir-

    tuali configurati (inizialmente vuota) e lamaschera per la creazione di una nuova istan-za. Sfruttiamo questa possibilit e creiamo ilnostro primo AVD. Le voci da compilare sono:

    Name: il nome che si vuole attribuire aldispositivo virtuale, ad esempio Android1.

    Target: la tipologia del dispositivo. Scegliamo Android 1.5. Creeremo cos un dispositivo virtuale compatibile con la versione 1.5delle specifiche di Android.

    SD Card: qui possibile dotare il dispositivo virtuale di una scheda di memoria vir-

    tuale. possibile specificare sia il percorsodi un file di immagine di una scheda di memoria, se si vuole riutilizzare una memoria

    Fig. 3: Affinch il plug-in funzioni correttamente

    necessario fornire il percorso dellAndroid SDK

    Fig. 4: La maschera di gestione dei dispositivi virtuali

    Android

  • 8/3/2019 Android Programming Bull

    7/15

    7Android programming

    Android programmingGli strumenti necessari per imparare a programmare Androidvirtuale esi stente, sia una dimensione dispazio, per creare una nuova memoriavirtuale. Percorriamo questultima strada especifi chiamo il valore 64M. Verr coscreata una scheda di memoria virtuale di 64

    MB. Skin: dallelenco possibile scegliere la riso

    luzione del dispositivo. Le scelte possibilisono HVGA-P (equivalente a 480x320),HVGA-L (320x480), QVGA-P (320x240) e QVGA-L (240x320). C poi una scelta di defaultchiamata semplicemente HVGA, che corrisponde comunque a HVGA-P. Lascia molaselezionata.

    Dopo aver impostato questi valori, confer-miamo loperazione con il tasto Create AVD.Il nuovo dispositivo virtuale entrer a farparte dellelenco gestito dal manager, e da orapotr essere utilizzato per eseguire il debug eil test delle applicazioni.

    PROVIAMO LEMULATORESe non siete pratici nellutilizzo di Android,prima di iniziare a programmare meglio checi prendiate confidenza. Esplorando le appli-cazioni di base potrete cos entrare nellotticadel sistema, per imparare i principi di funzio-

    namento e di design delle sue applicazioni.Potete avviare un dispositivo virtuale dalle-sterno di Eclipse, al solo scopo di fare un girodi ricognizione. Con il prompt dei comandiposizionatevi nella directory tools del kit disviluppo. Lanciate ora un comando del tipo:emulator @NomeAVD

    A NomeAVD dovete sostituire il nome che,nel corso del paragrafo precedente, aveteassegnato al dispositivo virtuale creato.

    Ad esempio: emulator @Android1Qualche istante di pazienza (al primo lancio

    anche qualcosa in pi) e lemulatore cari-cher e render disponibile il dispositivo vir-tuale Android, in tutto il suo splendore. Con ilmouse possibile simulare il touchpad deldispositivo, cliccando sullo schermo. Fateviun giro e prendete pure confidenza conlambiente. Come prima cosa divertitevi conle applicazioni di base, come il browser o larubrica: vi aiuteranno molto nel comprenderei principi di utilizzo del sistema. Poi passate adel materiale pi tecnico: il menu principalecontiene la voce Dev Tools, che raccoglieuna serie di strumenti dedicati a chi Android

    vuole programmarlo, e non solo farci un girodi prova. Tra questi spicca lemulatore di ter-minale, che permette di avere una shell di

    sistema per uninterazione di pi basso livellocon il dispositivo.

    CIAO, MONDO ANDROIDE! venuto il momento di utilizzare ADT elemulatore per programmare la nostra primaapplicazione Android.Naturalmente sar una variante del classicoCiao, Mondo!.

    Avviate Eclipse. Grazie ad ADT disponete oradi una nuova categoria di progetto, chiamata Android Project. Create un progetto di que-

    sto tipo.Nel wizard di creazione del progettoutilizzate la configurazione che viene riporta-ta di seguito: Project name: CiaoMondoAndroide Build target: selezioniamo Android 1.5. Application name : Ciao Mondo Package name: it.ioprogrammo.helloandroid CreateActivity: CiaoMondoAndroideActivity

    Fig. 5: Configurazione dellemulatore di Android

    Fig. 6: Il nuovo tipo di progetto Android Project ora disponibile in Eclipse

  • 8/3/2019 Android Programming Bull

    8/15

    Android programming8

    Android programming Gli strumenti necessari per imparare a programmare Android

    Il progetto, a questo punto, pu essere creato, azio-nando il tasto Finish.

    Eclipse popoler automaticamente il progetto, in-

    serendo le librerie di Android e la struttura di base

    dei progetti per questa piattaforma. In uno slan-cio di generosit, Eclipse provveder anche alla

    creazione della prima classe della soluzione, chia-

    mata CiaoMondoAndroideActivity (come specifi-

    cato alla voce Create Activity) e inserita nel pac-

    chetto it.ioprogrammo.hello android(come alla

    voce Package name). Aprite il codice della classe

    e modificatelo alla seguente maniera:

    package it.ioprogrammo.helloandroid;

    import android.app.Activity;

    import android.os.Bundle;

    import android.widget.TextView;public class CiaoMondoAndroideActivity extends Activity

    {

    @Override public void onCreate(Bundle save

    dInstanceState) {super.onCreate(savedInstanceState);

    TextView tv = new TextView(this);

    tv.setText("Ciao, Mondo Androide!");

    setContentView(tv);

    }

    }

    Ora selezionate la radice del progettoCiaoMondoAndroide, attivate il menu con-

    testuale da tasto destro e lanciate la voce RunAs Android Application.Lemulatore verr caricato. Eclipse provveder

    automaticamente a installare al suo internolapplicazione CiaoMondoAndroide, per poiavviarla non appena loperazione sar com-pletata. fatta: il vostro primo software per

    Android sta girando davanti ai vostri occhi.Successivamente, accedendo alle configurazioni

    di esecuzione (voce di menu Run Run Config

    urations in Eclipse 3.5 e 3.4, Run Open Run

    Dialog in Eclipse 3.3), sar possibile alterare i

    parametri di avvio dellemulatore e dellapplica-

    zione. Tra questi, anche il dispositivo virtuale sul

    quale sar installato e avviato il software.

    Vi consigliamo di fare qualche esperimento.

    Provate, ad esempio, a creare differenti AVD, col-

    laudando cos il software con schermi di diffe-

    renti dimensioni e proporzioni. Un altro esperi-

    mento interessante, che vi consiglio di compiere

    prima di procedere oltre, lutilizzo del debugger

    di Eclipse con lapplicazione Android. Ponete un

    breakpoint sulla classe realizzata e avviate dinuovo emulatore ed applicazione, questa volta in

    modalit debug.

    DALVIK E LELIBRERIE ANDROIDSuperata la prova del primo progetto Android,torniamo ad occuparci dei concetti fondamen-tali per la programmazione in questo ambien-te. Come abbiamo appreso e dimostrato, la piat-taforma di sviluppo di natura Java. Tuttavia si

    tratta di una piattaforma particolare e perso-nalizzata, che vale la pena approfondire.La macchina virtuale, chiamata Dalvik, sembra

    Fig. 8:Eclipse mette a disposizione lopzione di avvio

    Android Application

    Fig. 7:Wizard di creazione di un nuovo

    Android Project di Eclipse

    Fig. 9: Lapplicazione Ciao Mondo, eseguita

    dallemulatore

    NOTA

    OPEN HANDSETALLIANCE

    Per essere precisi, dietroAndroid non c soltanto

    Google. Il colosso diMountain View ha fatto laprima mossa e di sicuro

    lattore di maggior peso,tuttavia levoluzione di

    Android curata da unconsorzio denominato

    Open Handset Alliance. Del

    gruppo, oltre a Google,fanno parte numerosi altrinomi interessanti, tra cuiHTC (la prima a produrre

    dispositivi equipaggiati conAndroid), Intel, Motorola,

    Samsung, LG e molti altri.C anche Telecom Italia.

    Per approfondire:http://www.openhan

    dsetalliance.com/

  • 8/3/2019 Android Programming Bull

    9/15

    9Android programming

    Android programmingGli strumenti necessari per imparare a programmare Androidessere una Java Virtual Machine, ma in realtnon lo del tutto. Ci spieghiamo meglio: unaJava Virtual Machine esegue del codice byteco-de, giusto? Ecco, la Dalvik Virtual Machine nonesegue bytecode standard, ma un altro lin-

    guaggio, chiamato DEX (Dalvik EXecutable),studiato appositamente per una migliore resain uno smartphone. Con lAndroid SDK ed Ecli-pse, ad ogni modo, ci sembrer di utilizzare unaregolare Java Virtual Machine. Lambiente disviluppo, infatti, provvede automaticamentealla generazione del codice DEX, ri-compilan-do il bytecode che a sua volta frutto di una pri-ma comune compilazione Java. Per noi sar tut-to trasparente. Questa peculiarit di Dalvik,quindi, non influenzer il nostro modo di pro-grammare. La stessa considerazione, invece,non pu essere fatta riguardo la libreria di baseche affianca Dalvik. Aprite il documento al per-corso docs/reference/packages.html, nel vostro

    Android SDK. lindice dei package Java com-presi nella libreria di base.Scorretela velocemente e traete pure le primeconclusioni. C parecchio della Standard Edi-tion di Java, ma non c tutto.

    Ad esempio non ci sono AWT e Swing.I pacchetti fondamentali, per, ci sono tutti, edappaiono in larga misura identici a come li vuo-le Sun. Davvero poco viene dalla Micro Edition,praticamente nulla.

    La piattaforma Java ME stata snobbata da An-droid, che le ha preferito una libreria pi simi-le a quella di un sistema desktop. Non passanopoi inosservati i tanti package con prefisso an-droidche, naturalmente, sono esclusivi di que-sta speciale piattaforma. Servono per linterazionediretta con le funzionalit del sistema sotto-stante. Ad esempio: il package android.widgetcon-tiene i componenti custom di Android per lacostruzione delle interfacce grafiche (in Ciao-

    MondoAndroideabbiamo usato TextView); nelpacchetto android.graphicsci sono le funzioni

    primitive per la grafica di pi basso livello; inandroid.location ci sono gli strumenti per inte-ragire con un eventuale ricevitore GPS com-preso nel dispositivo.Ciascuno dei pacchetti Android, naturalmen-te, meriterebbe una trattazione estesa e com-pleta, tanti sono i possibili campi di applica-zione. Ne emerge il profilo di una piattaforma disviluppo complessa, perch molto ricca, masemplice, perch ordinata e perch condivideparecchio con ledizione tradizionale di Java.Il consiglio, naturalmente, quello di teneresempre a portata di mano la documentazione del-

    le API di Android. Fatevi poi guidare dalla cu-riosit: date pure una prima occhiata alle clas-si che pi stuzzicano la vostra fantasia.

    PRINCIPIDI PROGRAMMAZIONEChi programma con Java ME sa che le MIDlet

    sono il mattone fondamentale delle applicazioni

    MIDP; chi crea applicazioni Web con Java EE non

    pu ignorare cosa sia una Servlet; persino i pro-grammatori meno esperti sanno che le applica-

    zioni Java, per girare in un browser, devono esse-

    re inglobate in unaApplet.

    Tutto questo per dire che ciascun ambiente, Java

    e non, dispone dei suoi mattoni fondamentali,

    che lo sviluppatore pu estendere e implementa-

    re per trovare un punto di aggancio con la piat-

    taforma.

    Android non sfugge alla regola, anzi la amplifica.

    A seconda di quel che si intende fare disponibi-

    le un diverso modello. Android fornisce quattro

    mattoni di base:

    AttivitLe attivit sono quei blocchi di unapplica-zione che interagiscono con lutente utiliz-zando lo schermo e i dispositivi di inputmessi a disposizione dallo smartphone.Comunemente fanno uso di componenti UIgi pronti, come quelli presenti nel pac-chetto android.widget, ma questa non ne-cessariamente la regola. La classe dimo-strativa CiaoMondoAndroideActivity unat-tivit. Le attivit sono probabilmente il mo-

    dello pi diffuso in Android, e si realizzanoestendendo la classe base android.app.Activity.

    ServizioUn servizio gira in sottofondo e non intera-gisce direttamente con lutente.

    Ad esempio pu riprodurre un brano MP3,mentre lutente utilizza delle attivit per fa-re altro. Un servizio si realizza estendendo laclasse android.app.Service.

    Broadcast Receiver

    Un Broadcast Receiver viene utilizzato quan-do si intende intercettare un particolareevento, attraverso tutto il sistema. Ad esem-pio lo si pu utilizzare se si desidera com-piere unazione quando si scatta una foto oquando parte la segnalazione di batteria sca-rica. La classe da estendere android. con-tent.BroadcastReceiver.

    Content ProviderI Content Provider sono utilizzati per espor-re dati e informazioni. Costituiscono un ca-nale di comunicazione tra le differenti ap-

    plicazioni installate nel sistema. Si pu crea-re un Content Provider estendendo la clas-se astratta android.content.ContentProvider.

    NOTA

    SITODI RIFERIMENTOIl principale sito Web diriferimento per tutti glisviluppatori Android delmondo , naturalmente,quello ufficiale,

    raggiungibile allindirizzo:http://developer.android.com/

    NOTA

    DOCUMENTAZIONETantissimadocumentazione (soltantoin inglese, per) messa adisposizione nella cartelladocs dellAndroid SDK.

  • 8/3/2019 Android Programming Bull

    10/15

    Android programming10

    Android programming Gli strumenti necessari per imparare a programmare Android

    NOTA

    IL TOOL ADBOltre allemulatore, la

    cartella toolsdellAndroidSDK contiene un altro

    strumento moltointeressante, chiamato

    adb. Si utilizza da riga dicomando. Lanciatelo senza

    parametri, e avrete unveloce aiuto in linea sulle

    funzionalit messe adisposizione. In particolare,

    mentre lemulatore inesecuzione, i comandi adb

    installe adb uninstall

    possono essere utilizzatiper installare e rimuovere

    applicazioni dal dispositivo,mentre lo specialecomando adb shell

    permette di aprire una shellsul sistema Android

    emulato.

    Unapplicazione Android costituita da uno opi di questi elementi. Molto frequentemente,contiene almeno unattivit, ma non dettoche debba sempre essere cos.

    I PACCHETTI APKLe applicazioni Android sono distribuite sottoforma di fileAPK (Android Package). Al loro in-terno vengono raccolti gli eseguibili in formatoDEX, le eventuali risorse associate e una seriedi descrittori che delineano il contenuto delpacchetto. In particolare, nel cosiddetto mani-

    festo, vengono dichiarate le attivit, i servizi, iprovider e i receiver compresi nel pacchetto, inmodo che il sistema possa agganciarli e azio-narli correttamente.Torniamo, in Eclipse, sul progetto CiaoMon-doAndroide. Al suo interno troverete un file chia-matoAndroidManifest.xml, fatto come segue:

    il manifesto descrittore citato poco fa. Al suointerno potete e dovete dichiarare i componentidel vostro software. Eclipse, allatto di creazio-ne del progetto, ha gi eseguito su di esso alcu-ne configurazioni iniziali.

    Ad esempio ha registrato lattivit CiaoMon-doAndroideActivity, ha specificato le proprietgenerali dellapplicazione e ha anche generatoe impostato unicona per il nostro programma(res/drawable /icon.png). Ovviamente questescelte possono essere alterate, e nuovi compo-nenti possono essere aggiunti al progetto.Con lo speciale editor visuale messo a disposi-zione da Eclipse, vi risulter tutto molto sem-plice: sufficiente fare un po di pratica e ap-profondire di volta in volta laspetto dinteresse.Una volta che il lavoro stato completato, possibile esportare il file APK da distribuire aifortunati possessori di un sistema Android.Prima di distribuire in giro il pacchetto pernecessario apporre su di esso una firma digi-tale. In caso contrario, Android non potr

    installarne i contenuti.Questo lunico vincolo imposto dal sistema.Il fatto che un pacchetto debba essere firmatonon deve preoccupare lo sviluppatore: non necessario che una certification authorityriconosca la chiave utilizzata per la firma.Di conseguenza possibile firmare un pac-chetto APK anche servendosi di un certificatofatto in casa. In parole semplici: non bisognapagare nessuno perch i nostri software sianoautorizzati, possiamo fare tutto da noi.In Eclipse, ancora una volta, questione di un

    clic: aprite il menu contestuale sulla radicedel progetto (tasto destro del mouse, inWindows) e selezionate la voce Android Tools Export Signed Application Package.

    Al secondo step del wizard di generazione delpacchetto, vi verr chiesto da dove prelevarela firma digitale.Solitamente gli oggetti di questo tipo vengonoraccolti e conservati allinterno di un keysto-re. In un keystore, cio, ci sono pi firme digi-tali. Se non avete mai formato un keystore inprecedenza, o se semplicemente ne volete ini-ziare uno nuovo, selezionate lopzione Createnew keystore.Il keystore verr conservato allinterno di unfile, il cui percorso va obbligatoriamente spe-

    Fig. 10: Lo speciale editor messo a disposizione da Eclipse per il file

    AndroidManifest.xml

  • 8/3/2019 Android Programming Bull

    11/15

    11Android programming

    Android programmingGli strumenti necessari per imparare a programmare Android

    LAUTORE

    Carlo Pelliccia lavorapresso 4IT (www.4it.it),dove si occupa di analisi esviluppo software perpiattaforme Java. Nella suacarriera di technical writerha pubblicato cinquemanuali ed oltrecentocinquanta articoli,molti dei quali proprio tra le

    pagine di ioProgrammo. Ilsuo sito, che ospita anchediversi progetti Java OpenSource, disponibileallindirizzowww.sauronsoftware.it

    cificato. Scegliete dove riporre il keystore (nelcaso in Fig.13, la directory C:\keystores) edate un nome a vostro piacimento a file(android_keystore, nel caso in immagine).Non c bisogno di usare unestensione parti-colare per il nome del file. invece buona pra-tica proteggere i propri keystore con una pas-sword, in modo che le nostre firme digitali

    non possano essere utilizzate nel caso in cuiqualcuno ci rubi il file. Pertanto abbiate curadi impostare una password sufficientementesicura.

    Visto che il keystore appena creato vuoto, ilpasso successivo del wizard ci fa creare unachiave, cio una firma digitale. Dobbiamoinserire il nome della chiave (detto alias), lapassword per lutilizzo della chiave, una vali-dit in anni (di solito si usa il valore 25) e i datianagrafici di base del firmatario (nome ecognome).Superata la fase di creazione o selezione delkeystore e della chiave, il wizard fa sceglieredove salvare il pacchetto APK che sar genera-to. Scegliete la destinazione e concludeteloperazione.

    fatta: il pacchetto stato generato e firmato.Potete ora installarlo su un dispositivo

    Android reale, in plastica, metallo e silicio.

    COSA TRATTEREMONEI PROSSIMI ARTICOLIDEL CORSONel prossimo numero della rivista andremo unpo pi al di dentro della faccenda, approfon-dendo i principi di programmazione di Google

    Android, conoscendo pi intimamente la strut-tura delle sue applicazioni e iniziando la rasse-gna delle API messe a disposizione dal sistemaoperativo. Per tutto larco di questo corso si cer-cher sempre di rimanere con i piedi per terra,affrontando i differenti argomenti in maniera

    sistematica e concludendo sempre le lezionicon un esempio pratico e funzionale, in mododa fornire ai lettori unimmediata implemen-tazione dei concetti appresi.

    Carlo Pelliccia

    Fig. 14: La selezione del file su cui sar salvato il pacchetto APK

    Fig. 11: La prima schermata di generazione

    di un pacchetto APK firmato a partire dal progetto

    CiaoMondoAndroide

    Fig. 12: La creazione di un nuovo keystore

    Fig. 13: La maschera per la creazione di un nuova firma

    digitale

  • 8/3/2019 Android Programming Bull

    12/15

    Android programming12

    Android programming La gestione delle risorse nei programmi Android

    LE RISORSE ESTERNE

    IN GOOGLE ANDROIDIN QUESTO SECONDO ARTICOLO IMPAREREMO A MANIPOLARE LE RISORSE ESTERNE.SCOPRIREMO CHE ANDROID RENDE FACILE LUTILIZZO DI TUTTO QUELLO CHE, PUR NONESSENDO CODICE, INDISPENSABILE AL CORRETTO FUNZIONAMENTO DI UNAPPLICAZIONE

    Se c un aspetto di Android dal quale si

    evince la modernit di questo sistema, la

    sua maniera di gestire le risorse e i dati.

    Nelle piattaforme di sviluppo meno moderne,

    spesso e volentieri, le risorse esterne come i dati

    di configurazione, i messaggi di interfaccia, le

    immagini o altro materiale simile, sono trattate

    senza alcun riguardo speciale. Android, invece,

    richiede che i progetti siano organizzati in una

    certa maniera. La corretta gestione delle risorse

    in questa piattaforma, importante tanto quan-

    to la stesura del codice. In un certo senso, con

    Android non si pu imparare a programmare se

    prima non si apprende come organizzare e

    richiamare le risorse. Perci, dedichiamo allar-

    gomento questo secondo articolo del corso.

    LA STRUTTURADEI PROGETTI ANDROID Avviamo Eclipse e torniamo sul progettoCiao

    MondoAndroide, realizzato il mese scorso per

    dimostrare le funzionalit di base del kit di svilup-

    po per Android. Quando abbiamo creato il proget-

    to, Eclipse ha predisposto per noi un albero di car-

    telle, allinterno del quale sono stati generati auto-

    maticamente diversi file. Guardate la Fig.1, che

    mostra la situazione del file system allatto di crea-zione del progetto.

    Tra i file generati automaticamente c Android-

    Manifest.xml, cio il descrittore dellapplicazione,

    che gi abbiamo iniziato a conoscere. Torneremo

    ad approfondirlo mano a mano che gli argomenti

    trattati ce ne daranno occasione. Oltre al descritto-

    re c il file default.properties, poco rilevante per

    noi, poich serve esclusivamente al sistema di

    build automatico. Ci sono poi delle directory: src,

    assets, rese gen. La prima, src, quella dove dob-

    biamo andare a realizzare i package e le classi della

    nostra applicazione. Le cartelle rese assetsservono

    per ospitare le risorse esterne necessarie allappli-

    cazione, come le immagini, i file audio e altro anco-

    ra. La cartella res, in particolar modo, gode di una

    speciale struttura predefinita, formata dalle tre

    sotto-directorydrawable, layoute values. La prima,

    drawable, serve per le immagini utilizzate dal

    software, mentre layoute valuesospitano dei spe-

    ciali file XML utili per definire in maniera dichiara-

    tiva laspetto dellapplicazione e i valori utilizzati alsuo interno. Oltre a src, assetse resc infine la car-

    tella gen, che contiene la speciale classe chiamata

    R, probabile abbreviazione diResources. Invocando

    questa classe, infatti, possibile richiamare via

    codice le risorse memorizzate sotto la directoryres.

    Impareremo oggi stesso come farlo. Sappiate

    comunque che la classe R viene generata automa-

    ticamente dal sistema e non deve mai essere modi-

    ficata a mano.

    GESTIONE DEI VALORIIl primo tipo di risorse che impareremo a mani-

    polare sono i valori. Si tratta di coppie chiave-

    K CD KWEBAndroid144.zip

    cdrom.ioprogrammo.it

    Fig. 1: La struttura, in Eclipse, di un progetto Android

    appena creato

    Conoscenze richieste

    Java

    Software

    Java SDK (JDK) 5+,Eclipse 3.3+

    Impegno

    Tempo di realizzazione

    REQUISITI

  • 8/3/2019 Android Programming Bull

    13/15

    13Android programming

    Android programmingLa gestione delle risorse nei programmi Androidvalore dichiarate allinterno dei file XML che

    sono al percorso di progetto res/values. Eclipse,

    per default, crea a questo percorso il file

    strings.xml, pensato per raccogliere le stringhe

    usate dallapplicazione che sar sviluppata.

    Ad ogni modo potete rinominare il file o aggiun-gerne quanti altri ne volete, al fine di categoriz-

    zare al meglio i valori necessari alla vostra appli-

    cazione. Limportante che tutti i file presenti

    nella cartella valuesseguano il seguente modello:

    Allinterno del tag

    possibile dichiarare differenti tipi di valori.

    Supponiamo di voler dichiarare un valore di tipo

    stringa chiamato nomee con contenuto Carlo:

    Carlo

    Ci sono numerosi tipi di dati supportati. Ecco un

    elenco completo:

    Stringhe, con il tag .

    Colori, con il tag e con valori espressiin forma esadecimale secondo i modelli

    #RRGGBB o #AARRGGBB (AA sta per il canale

    alpha, che regola la trasparenza del colore). Ad

    esempio: #FF0000

    Misure e dimensioni, con il tag e con

    valori numerici decimali accompagnati da unu-

    nit di misura che pu essere px(pixel), in (pol-

    lici), mm (millimetri), pt (punti a risoluzione

    72dpi), dp (pixel indipendenti dalla densit) e sp

    (pixel indipendenti dalla scala). Ad esempio:

    180px

    Rettangoli di colore, con il tag .I valori possibili sono colori esadecimali come

    nel caso del tag . Ad esempio:

    #00FF00

    Array di interi, con il tag .

    Gli elementi dellarray vanno espressi con pi

    occorrenze del tag annidato .

    Ad esempio:

    23

    57

    Array di stringhe, con il tag .

    Anche in questo caso si usa il tag .

    Ad esempio:

    Carlo

    Claudia

    Nami

    Stili e temi, con il tag . Servono per

    creare degli stili di disegno ed impaginazione,un po come fanno i fogli di stile CSS nel caso di

    HTML. Dentro il tag vanno inseriti dei

    tag con le singole voci che compongo-

    no lo stile. Gli stili possono essere applicati alle

    interfacce grafiche. Di certo ne riparleremo pi

    avanti. Eccovi comunque un esempio:

    18sp

    #000088

    Usando Eclipse, comunque, non c bisogno di

    imparare lelenco a memoria: qualsiasi file XML

    posto sotto la directoryres/valuesviene automati-

    camente lavorato con un apposito editor.

    RICHIAMARELE RISORSE DA XMLCome scritto in apertura, la modernit di

    Android pu essere evinta proprio dalla sua

    maniera di gestire le risorse. Le piattaforme di

    una volta non concedevano sistemi agevolati,

    finendo cos per favorire laccoppiamento fracodice e dati. Tuttora non raro vedere dei sor-

    genti in Java, in C o in qualsiasi altro linguaggio,

    con valori e messaggi digitati direttamente den-

    tro il codice. Questa pratica non corretta ed

    sconsigliata da ogni manuale: sempre meglio

    separare i dati dal codice, perch in questa

    maniera il software pi facile sia da realizzare

    sia da mantenere. Android intende favorire la

    pratica del disaccoppiamento fra dati e codice, e

    lo fa attraverso gli strumenti che stiamo pren-

    dendo in considerazione oggi. I valori dichiarati

    nei file XML sotto values, cos come tutte le altre

    risorse della cartella rese delle sue annidate, sono

    trattati dal sistema in maniera speciale.

    Il kit di sviluppo, infatti, fornisce delle agevola-

    NOTA

    DIFFERENZA TRA

    RES E ASSETSLa differenza tra le cartellerese assets pocoevidente, eppure c.La directory res pensataper gestire le risorse inmaniera struttura, ed infatti suddivisa in sottocartelle.Tutte le risorse posizionatein res vengono prese inesame dal sistema di builde riferite nella specialeclasse R. Quelle dentro res,dunque, sono delle risorsegestite. Sotto assets,invece, possibiledepositare qualsiasi file sidesideri senza che ilsistema di build eseguaunanalisi preventiva e creiil riferimento in R.Le risorse esterneconservate nella directoryassetspossono esserecaricate servendosi dellaclasse android.content.res.AssetManager. Nellamaggior parte dei casi,comunque, non c bisognodi ricorrere alla cartellaassets, poich res offre unamaniera semplificata ecompleta per laccesso allerisorse.

    Fig. 2: Leditor di Eclipse gestisce i file XML

  • 8/3/2019 Android Programming Bull

    14/15

    Android programming14

    Android programming La gestione delle risorse nei programmi Android

    zioni per richiamare le risorse dalle varie parti

    del software. Sostanzialmente unapplicazione

    Android costituita da file dichiarativi XML e da

    classi Java. Sia in un caso sia nellaltro, ci sono

    scorciatoie per richiamare le risorse incluse in

    res. Cominciamo dal caso XML e prendiamo ariferimento il pi importante dei file di questo

    tipo: AndroidManifest.xml. Quando, al suo inter-

    no, si dichiarano i dettagli dellapplicazione,

    possibile scrivere qualcosa come:

    ...

    Il nome dellapplicazione, cio LaMiaAp-

    plicazione, stato in questo caso digitato diretta-

    mente dentro il codice XML. Con Android questo

    corretto, tuttavia si pu fare di meglio. Si pu

    includere il titolo dellapplicazione nel file

    res/values/strings.xml, alla seguente maniera:

    LaMiaApplicazione

    A questo punto il descrittore dellapplicazione

    pu essere riscritto come segue:

    Anzich scrivere LaMiaApplicazione, si usato

    il riferimento @string/app_name. Questa scorcia-

    toia, come intuibile, viene sostituita dalla risorsa

    di tipo stringa con nome app_name, che nel file

    strings.xml abbiamo dichiarato essere proprio

    LaMiaApplicazione.

    La regola generale per richiamare una risorsa in

    un file XML, quindi, basata sul modello:

    @tipo/nome.I tipi validi sono:

    @array, per gli array.

    @color, per i colori.

    @dimen, per le dimensioni.

    @drawable, per i valori drawable, ma anche

    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.

    Con @drawable, in particolar modo, possibile

    riferire sia i valori dichiarati con i tag

    in res/values, sia le immagini conservate nella car-

    tella res/drawable. Ad esempio, se in res/drawable

    viene messa unicona chiamata icon.png, sar

    possibile richiamarla con la formula @draw-

    able/icon. Ad esempio lo si pu fare in Android

    Manifest.xml, per associare licona allapplicazio-

    ne:

    ...

    RICHIAMARELE RISORSE DA JAVA Valori e risorse possono essere richiamati da

    codice Java servendosi della classe android.con-

    tent.res.Resources. Stando allinterno di una atti-

    vit, cio di una classe che estende android.

    app.Activity, sufficiente richiamare il metodogetResources() per ottenere il punto daccesso alle

    risorse dellapplicazione: Resources res =

    getResources(); Una volta ottenuto loggetto,

    possibile invocare su di esso la seguente serie di

    metodi:

    public int getColor(int id)

    Restituisce il colore avente lidentificativo di

    risorsa specificato.

    public float getDimension(int id)

    Restituisce la dimensione avente lidentificati-

    vo di risorsa specificato.

    public Drawable getDrawable(int id)

    Restituisce loggetto disegnabile avente liden-

    tificativo di risorsa specificato.

    ANIM, RAWE XML

    Oltre a drawable, layoutevalues, che Eclipse

    introduce automaticamente

    in ogni nuovo progetto, lacartella respu ospitareanche le sotto-directory

    anim, rawe xml. In animsiinseriscono le animazioni,

    che possono essereprogrammate in maniera

    dichiarativa con unospeciale formato XML; sotto

    raw possibile inserirequalsiasi tipo file, adesempio un audio dariprodurre allinterno

    dellapplicazione; in xmlunqualsiasi file XML, che

    Android provvederautomaticamente a

    decodificare. Ne riparleremonei prossimi mesi.

    NOTA

    DISTINGUERE I FILECON I VALORI

    Bench, teoricamente, siapossibile mettere in

    res/valuesun solo file XMLcon ogni tipo di valore

    possibile, le linee guidadello sviluppo Android

    consigliano di distinguere ifile per topic, cio per

    argomento. Solitamente siconsiglia di raccogliere le

    stringhe in un filestrings.xml, i colori (e i

    drawable) in colors.xml, ledimensioni in dimens.xmle

    gli stili in styles.xml.

    NOTA

  • 8/3/2019 Android Programming Bull

    15/15

    15Android programming

    Android programmingLa gestione delle risorse nei programmi Android public int[] getIntArray(int id)

    Restituisce larray di interi avente lidentificati-

    vo di risorsa specificato.

    public String getString(int id)

    Restituisce la stringa avente lidentificativo di

    risorsa specificato. public String[] getStringArray(int id)

    Restituisce larray di stringhe avente lidentifi-

    cativo di risorsa specificato.

    Tutti questi metodi agganciano la risorsa desidera-

    ta attraverso un identificativo numerico (int id). Ma

    come fare a conoscere gli ID associati alle risorse e

    ai valori inseriti nella cartella res? Semplice: attra-

    verso la speciale classe autogenerata R! Al suo

    interno sono contenute delle sottoclassi statiche,

    una per ciascuna tipologia di risorsa presente nel

    progetto: R.string, R.drawable, R.colore cos via. In

    ciascuno di questi gruppi vengono introdotti gli ID

    numerici che corrispondono alle risorse e ai valori

    conservati in res e nelle sue sotto-cartelle.

    Proviamo con un esempio pratico: facciamo il caso

    che nel file res/values/strings.xmlsia stata dichiara-

    ta la stringa app_name. Per richiamarla da codice

    Java, stando allinterno di una attivit, si deve fare

    alla seguente maniera:

    Resources res = getResources();

    String appName = res.getString(R.string.app_name);

    CIAO MONDO RELOADEDMettiamo a frutto le nozioni acquisite questoggi,

    assemblando per la seconda volta un esempio

    del tipo Ciao, Mondo!. Questa volta, per, use-

    remo la pi corretta pratica delle risorse esterne

    per il nome dellapplicazione e per il messaggio

    presentato sullo schermo. Create il progetto

    Android in Eclipse e chiamatelo TestResources.

    Il package di riferimento it.ioprogrammo.testre-

    sources, mentre lattivit principale deve essere

    TestResourcesActivity. Non appena il progetto pronto, andiamo ad editare il file res/values/

    strings.xml:

    TestResources

    Ciao, Mondo Androide!

    Sono state dichiarate due stringhe: app_name

    con valore TestResources e message con valore

    Ciao, Mondo Androide!.

    Andiamo ora suAndroidManifest.xml:

    Il nome dellapplicazione, citato ben due volte

    allinterno del file, stato richiamato mediante il

    riferimento @string/app_name. Allo stesso modo,

    licona per lapplicazione, creata automatica-

    mente da Eclipse al percorso res/drawable/icon.

    png, stata riferita attraverso la dicitura @draw-

    able/icon. Adesso tocca alla classe TestReso

    urcesActivity, il cui codice riportato di seguito:

    package it.ioprogrammo.testresources;

    import android.app.Activity;

    import android.content.res.Resources;

    import android.os.Bundle;

    import android.widget.TextView;

    public class TestResourcesActivity extends Activity {

    @Override

    public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    Resources res = getResources();

    String message = res.getString(R.string.message);

    TextView tv = new TextView(this);

    tv.setText(message);

    setContentView(tv);}

    }

    Il messaggio Ciao, Mondo Androide!, questa

    volta, stato caricato attraverso la classe

    Resourcesed il riferimento R.string.message.

    PROSSIMAMENTENel prossimo appuntamento approfondiremo i

    principi di programmazione delle attivit, uno

    dei mattoni fondamentali delle applicazioni

    Android.

    Carlo Pelliccia

    NOTA

    INTERNAZIONALIZ-ZAZIONESe si punta ad un mercatointernazionale, bene chele applicazioni realizzatesiano tradotte in pi lingue.Android aiuta glisviluppatori consentendolinternazionalizzazionedelle risorse. Supponiamodi voler realizzareunapplicazione sia ininglese sia in italiano.Prepariamo due differentifile strings.xmlcon tutti imessaggi di interfaccia,uno in inglese e laltro initaliano. Adesso, invecedella cartella values,creiamo le due cartellevalues-it(per litaliano) evalues-en(per linglese) edinseriamo al loro interno i

    due file. fatta! I dispositiviAndroid che eseguirannolapplicazione sceglierannoautomaticamente quale filecaricare, in base alla lorolingua predefinita.

    LAUTORE

    Carlo Pelliccia lavorapresso 4IT (www.4it.it),dove si occupa di analisi esviluppo software perpiattaforme Java. Nella suacarriera di technical writerha pubblicato cinquemanuali ed oltrecentocinquanta articoli,molti dei quali proprio tra lepagine di ioProgrammo. Ilsuo sito, che ospita anchediversi progetti Java OpenSource, disponibileallindirizzowww.sauronsoftware.it


Recommended