SlideShare una empresa de Scribd logo
1 de 38
Dive Into
Android
Chi sono
•   Emanuele Di Saverio
    – Agile Coach @ beeweeb Technologies S.p.A.
    – Senior Mobile Developer @ lo stesso
    – Committer @ android-bluetooth
        •   http://code.google.com/p/android-bluetooth
    – Committer @ QuadraSpace Project
        •   http://www.quadraspace.org


    – Ing. Informatico
    – Certified Scrum Master
    – Sun Certified Mobile App Developer
    – Sun Certified Java Programmer


                                  Dive into Android
Topics
•   Introduzione ad Android
     – Cenni Storici
     – SDK Overview
     – Componenti
     – Widget UI
     – Networking & Persistenza


•   Open Source


•   Riding the Android Wave


•   ...and now?
                              Dive into Android
Android in short
•   Android è
     – (sistema operativo + middleware + applicazioni)
    per dispositivi mobili
•   Android è quasi completamente Open Source
•   Android si basa su un Kernel Linux 2.6 (non E’ linux - tuned libc)
•   Applicazioni si possono sviluppare in due modi
     – con Software Dev Kit in linugaggio Java 5
     – con Native Dev Kit in C/C++
    e testate su un Emulatore (basato su QEMU)
•   Android Market
•   Sponsorizzato dall’Open Handset Alliance (Google + 34)


                                Dive into Android
Once upon a Time
•   Aprile 2002, Danger Inc. ->
    Andy Rubin mostra a Sergei Brin e Larry Page




                              Dive into Android
Once upon a Time
•   Ottobre 2008, HTC G1 (Android Developer Phone)




                            Dive into Android
Once upon a time
•   Luglio 2005, Google acquista Android Inc., fondata da Andy
    Rubin
•   Novembre 2007 -> fondazione OHA, Android ufficializzato, SDK
    early look 0.9
•   Android Developer Challenge
•   Maggio 2008 - Primo prototipo
•   Agosto 2008 - Android Market
•   Ottobre 2008 - SDK 1.0 HTC G1 sul mercato
•   Aprile 2009 - SDK 1.5, HTC Magic sul mercato, NDK 1.5
•   Sett 2009 - SDK 1.6, Nov 2009 - SDK 2.0 (???)
•   HTC Droid - Nexus One...etc. etc.


                             Dive into Android
Android now
•   22 handset confermati (source androphones.com)
•   non solo HTC e Motorola: Dell, Lenovo, Acer, Samsung, Huawei, LG
•   stime per il 2010
     – 50+ handset
     – 34 milioni di esemplari (~5%, con l’IPhone stimato 36 milioni)
•   recentemente SDK 2.2, OpenGL ES 2.0 (NDK), Contacts API, Sync
    API, Bluetooth :, Paypal integration, Live Wallpapers


•   not-so-good:
     – Android Market
     – Fragmentation
     – Tablets - Archos 5 Internet Tablet :(
                                                      sources: ccsinsight.com, appleinsider.com
                                  Dive into Android
Dive
Inside
Dive into Android
Anatomia di una applicazione

•   java source + external resources + manifest = APK!
•   “All applications are created equal”
•   risorse: stringhe, immagini, layouts, file binari, drawables....
•   AndroidManifest.xml dichiara
     – i componenti dell’applicazione
         • Activities
         • Services
         • Broadcast Receivers
         • Content Providers
     – nome, base package, versione
     – target SDK version, min SDK version
     – compatibilità rispetto agli schermi (1.6 and up)


                                 Dive into Android
Anatomia di una applicazione

                                      $android create project
                                      -n Dive
                                      -t 4
                                      -p Dive
                                      -k org.whymca.dive
                                      -a DiveActivity
                                      $




                  Dive into Android
Anatomia di una applicazione

•   Ogni applicazione corrisponde ad un User ID diverso (UNIX)


•   Ogni applicazione viene eseguita nel suo Processo (UNIX)
     – approccio simile a Chrome


•   Ogni processo ha clonata nel suo spazio degli indirizzi una istanza
    separata della Virtual Machine Java


•   Dalvik Virtual Machine -> ottimizzata per
    l’uso nei dispositivi mobili



                                   Dive into Android
Android Manifest




             Dive into Android
Activity
•   gestisce la User Interface per una
    specifica interazione che l’utente può
    effettuare


•   Responsabilità:
    – creazione Widgets UI
    – gestione eventi UI: bottoni premuti,
      click su elementi, testo inserito etc..
    – gest. orientamento schermo
    – salvataggio stato (“all app running all
      time”)




                                 Dive into Android
Activity Lifecycle
Principio di Hollywood: “Don’t call me, I’ll call you”


 Estendere la base class (Activity)
 Override dei metodi (super.x()!)

     Approccio comune nel mobile, permette
     alla piattaforma di mantenere il controllo
     “forzando” la gestione dei diversi stati
     di una applicazione mobile


 “Be a good citizen of Android!”

 Una Activity è sempre aperta in risposta
 ad un Intent lanciato dalla piattaforma


                                       Dive into Android
Intents
•   l’Intent in Android è un oggetto che rappresenta
     – una richiesta di lanciare una Activity (utente o programmatica)
     – una notifica di un evento nel sistema


L’Intent può essere propagato e intercettato dai vari componenti
del sistema

E’ composto da:
     - Action name : cosa rappresenta l’intent
     - Data URI e MIMEType: rappresenta il target dell’azione
     - Categorie di appartenenza dell’Intent
     - Extras
     - [...]
                                 Dive into Android
Intents




•   Altri esempi di eventi:
     – Livello batteria basso
     – SD Card estratta
     – Bluetooth acceso/spento


•   Gli Intent vanno lanciati partendo da un Context
•   Gli Intent implementano l’interfaccia Parcelable

                                 Dive into Android
BroadcastReceiver
•   Intercettare eventi e notifiche di sistema
    – Accensione dell’handset
    – Livello batteria basso
    – SD Card estratta
    – Bluetooth acceso/spento
    – Incoming Call
    – Allarmi


•   Background processing in response to events


•   “Brief Amount of Time” (10 seconds) or KILL


                                Dive into Android
Service
•   “come una Activity senza UI”
•   background o foreground service
•   proprio lifecyle, i componenti fanno il bind ad un service
•   necessaria la definizione traimte AIDL
•   I/O della AIDL sono sempre Parcelable, per supportare la
    comunicazione interprocesso (tramite Binder)


•   es. MP3 Player, Twitter sync, GPS Navigation




                              Dive into Android
Content Provider
•   Esporre una fonte di dati per l’utilizzo da applicazioni di terze
    parti
•   es. Rubrica Contatti -> Identificata da una URI
                content://contacts/people/1

•   ESPORRE un CR:
     – Implementazione di una interfaccia CRUD
     – Dichiarazione nel manifest - dichiarazione authority (URI)


•



                                Dive into Android
Persistenza
•   SharedPreferences -> manciate di valori, preferenze dell’app
•   File + Streams -> accesso alla SDCARD
•   SQLLite



Networking
•   Apache HTTPClient
•   Android è ~ alla piattaforma Java 5.0
– java.util.concurrent !
•   Bluetooth --> NEXT TALK :o)


                             Dive into Android
Android UI




             Dive into Android
Widget
                   estendono android.view.View
•   TextView
•   Button
•   ImageView
•   EditText
•   CheckBox
•   ProgressBar
•   VideoView
•   View Flipper
•   [...]
•   AnalogClock!

                           Dive into Android
Layout
                   estendono android.view.ViewGroup


•   LinearLayout
     – sequenza, verticale o orizzontale
•   RelativeLayout
     – disposizioni “sotto a...a sinistra di...” etc. -> molto efficiente
•   TableLayout
     – questa è facile
•   FrameLayout
     – overlay, permette di sfruttare le trasparenze




                                   Dive into Android
Liste
               estendono android.view.AdapterView
•   ListView                          •    ExpandableListView
•   GridView                          •    Spinner




                                      <RelativeLayout>




                                      </RelativeLayout>



                           Dive into Android
Liste
•   Un Adapter è un wrapper che fa da “ponte” tra le entità e la
    rappresentazione grafica in UI Android


•   incentrato intorno al metodo getView()


•   riuso delle view, “inflate” esplicito delle view via System Service


•   BaseAdapter è generico abbastanza per esigenze custom


•   Supporto dall’SDK se l’Adapter è basato su una
     – lista di oggetti: ArrayAdapter<T>
     – query da un database: CursorAdapter
                                Dive into Android
Dialog
•   Alert Dialog




•   Progress Dialog




•   Custom Dialog
    – qualunque View uno vuole inflatare, mostrata in maniera modale


                               Dive into Android
Handler
•   come Swing, Android gestisce la UI single-thread
•   un Thread principale su cui vengono serializzate tutte le callback
    di UI e quelle relative al lifecycle
•   interagire con elementi di UI in un OnClickListener o in un
    OnCreate è OK
•   task di rete che ritorna e deve aggiornare la UI NON PUO’
    CHIAMARE DIRETTAMENTE I METODI UI
    – es. Thread di rete per recuperare il contenuto di un tweet, quando
      finisce fa .setText() su un TextField ERRORE


•   android.os.Handler assicura il processamento sincronizzato
    con il Thread creatore! ( Looper.prepare() )

                               Dive into Android
Handler




          Dive into Android
Resource
•   Stringhe Localizzate
•   Valori Numerici [pixels, costanti, colori]
•   Stili e Temi
•   Layouts
•   Animazioni
•   Drawables
     – Immagini
     – Nine-Patches
     – Drawable Nativi
     – Selectors
     – Layered
                   CONFIGURATION (and locale)- WISE
                               Dive into Android
Drawable
•   package android.graphics.drawable
•   definibili tramite XML
•   immagini e colori interpretati e incpsulati da BitmapDrawable
    e ColorDrawable
•   nine-patch


•   definizione nativa




                             Dive into Android
Tool chain

 javac          dx                        aidl   aapt




  emu           adb                 jarsign      jar




         ddms


                      Dive into Android
Eclipse ADT
•   Wizards per progetto Android, Manifest, file di risorse, esempi


•   Debugger, Profiler, Controllo del device


•   Controllo Emulatore, Virtual Devices


•   Integrazione Logcat


•   Editor dei file di layout e preview


•   Test Automatici


                              Dive into Android
Open Source
•   Android è Open-Source! quindi posso copiare-incollare-mischiare-
    customizzare tutto!
    ...no.
•   Riferimento a risorse non pubbliche (es. 9patch)!


•   Feature presenti a runtime ma RIMOSSE DALL’SDK


•   Permission in root space


•   Contributi sono ufficialmente accettati, ma all’atto pratico, la
    maggioranza dei contributi da non-googlers viene rifiutata
    ignorata o insabbiata :(
                               Dive into Android
Riding the Android wave
•   la frammentazione è dietro l’angolo
     – Sciphone
     – MOTOBlur
•   l’Android Market è brutto
•   anche l’adozione di massa è dietro l’angolo
     – Ford: Sync AppLink e General Motors: Chevy Volt
     – Sony Dragonpoint TV
     – Tablets: http://miopad.com/
•   dispositivi Real Time industriali


•   Android sembra essere un “buon cavallo” su cui puntare in
    termini di piattaforma e skills personali
                               Dive into Android
...and now?
•   http://developer.android.com
    – Tutorials
    – la documentazione latita, occhio ai Samples
    – Blog!
•   http://source.android.com/
    – get source!


•   twitters: @AndroidDev, @retomeier @romainguy, @gerdavax
•   ML: android-developers e android-beginners


•   tenete prenotato il posto! Bluetooth (Stefano Sanna) e Test
    Driven Development (Carlo Codega) a seguire ;)
                               Dive into Android
GRAZIE!

              Emanuele Di Saverio

                  emanuele.disaverio@gmail.com
twitter: @hazam
linkedIn: http://it.linkedin.com/in/emanueledisaverio
                          Dive into Android

Más contenido relacionado

Destacado

Dal Wireframe alla pubblicazione: sviluppo usabile di un sito
Dal Wireframe alla pubblicazione: sviluppo usabile di un sitoDal Wireframe alla pubblicazione: sviluppo usabile di un sito
Dal Wireframe alla pubblicazione: sviluppo usabile di un sito
Cultura Senza Barriere
 
Android App Development - Unimore
Android App Development - UnimoreAndroid App Development - Unimore
Android App Development - Unimore
Nicola Corti
 
Wireframe e struttura del sito internet
Wireframe e struttura del sito internetWireframe e struttura del sito internet
Wireframe e struttura del sito internet
Daniele Moraschi
 

Destacado (19)

La piattaforma Android il mobile per tutti alla fine di una strada erta?
La piattaforma Android il mobile per tutti alla fine di una strada erta?La piattaforma Android il mobile per tutti alla fine di una strada erta?
La piattaforma Android il mobile per tutti alla fine di una strada erta?
 
iOS_Course_1
iOS_Course_1iOS_Course_1
iOS_Course_1
 
Android from A to Z
Android from A to ZAndroid from A to Z
Android from A to Z
 
Introduzione ad Android jug marche meeting 2011_04_30
Introduzione ad Android jug marche meeting 2011_04_30Introduzione ad Android jug marche meeting 2011_04_30
Introduzione ad Android jug marche meeting 2011_04_30
 
Dive Into Android [ITA] - Long
Dive Into Android [ITA] - LongDive Into Android [ITA] - Long
Dive Into Android [ITA] - Long
 
Introduzione ad Android
Introduzione ad AndroidIntroduzione ad Android
Introduzione ad Android
 
Android base day1
Android base day1Android base day1
Android base day1
 
Dal Wireframe alla pubblicazione: sviluppo usabile di un sito
Dal Wireframe alla pubblicazione: sviluppo usabile di un sitoDal Wireframe alla pubblicazione: sviluppo usabile di un sito
Dal Wireframe alla pubblicazione: sviluppo usabile di un sito
 
Android App Development - Unimore
Android App Development - UnimoreAndroid App Development - Unimore
Android App Development - Unimore
 
Android
AndroidAndroid
Android
 
Wireframes Rulez - Santangelo
Wireframes Rulez - SantangeloWireframes Rulez - Santangelo
Wireframes Rulez - Santangelo
 
Android vs iOS
Android vs iOSAndroid vs iOS
Android vs iOS
 
Android 6.0 Marshmallow: tutte le novità in poche slide
Android 6.0 Marshmallow: tutte le novità in poche slideAndroid 6.0 Marshmallow: tutte le novità in poche slide
Android 6.0 Marshmallow: tutte le novità in poche slide
 
Introduzione ad Android
Introduzione ad AndroidIntroduzione ad Android
Introduzione ad Android
 
Ecco gli strumenti necessari per sviluppare la tua App Android
Ecco gli strumenti necessari per sviluppare la tua App AndroidEcco gli strumenti necessari per sviluppare la tua App Android
Ecco gli strumenti necessari per sviluppare la tua App Android
 
Wireframe e struttura del sito internet
Wireframe e struttura del sito internetWireframe e struttura del sito internet
Wireframe e struttura del sito internet
 
Get Started with Android - Session 1
Get Started with Android - Session 1 Get Started with Android - Session 1
Get Started with Android - Session 1
 
Uxd
UxdUxd
Uxd
 
Android architecture
Android architectureAndroid architecture
Android architecture
 

Similar a Whymca Dive into Android [ITA]

Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net
Leonardo Alario
 
ios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - ita
Dario Rusignuolo
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatore
SMAU
 
Dal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie Google
Diego Giorgini
 
follow-app BOOTCAMP 3: Android
follow-app BOOTCAMP 3: Androidfollow-app BOOTCAMP 3: Android
follow-app BOOTCAMP 3: Android
QIRIS
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store apps
DotNetCampus
 
Google Android: una nuova piattaforma Open Source per dispositivi mobili
Google Android: una nuova piattaforma Open Source per dispositivi mobiliGoogle Android: una nuova piattaforma Open Source per dispositivi mobili
Google Android: una nuova piattaforma Open Source per dispositivi mobili
GoWireless
 

Similar a Whymca Dive into Android [ITA] (20)

Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net
 
ios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - ita
 
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile Android
 
WhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiWhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessi
 
Androidsdk appinventor
Androidsdk appinventorAndroidsdk appinventor
Androidsdk appinventor
 
Android - Programmazione Avanzata
Android -  Programmazione AvanzataAndroid -  Programmazione Avanzata
Android - Programmazione Avanzata
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatore
 
Xamarin
XamarinXamarin
Xamarin
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROID
 
Dal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie Google
 
Alessandro Forte - Piattaforma Android
Alessandro Forte - Piattaforma AndroidAlessandro Forte - Piattaforma Android
Alessandro Forte - Piattaforma Android
 
follow-app BOOTCAMP 3: Android
follow-app BOOTCAMP 3: Androidfollow-app BOOTCAMP 3: Android
follow-app BOOTCAMP 3: Android
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store apps
 
Sviluppare applicazioni android
Sviluppare applicazioni androidSviluppare applicazioni android
Sviluppare applicazioni android
 
MOBILE APPS con ANDROID - Lo Stretto Digitale
MOBILE APPS con ANDROID  - Lo Stretto DigitaleMOBILE APPS con ANDROID  - Lo Stretto Digitale
MOBILE APPS con ANDROID - Lo Stretto Digitale
 
01 Android - Introduction
01   Android - Introduction01   Android - Introduction
01 Android - Introduction
 
iOS Programming
iOS ProgrammingiOS Programming
iOS Programming
 
Android & Bluetooth: hacking e applicazioni
Android & Bluetooth: hacking e applicazioniAndroid & Bluetooth: hacking e applicazioni
Android & Bluetooth: hacking e applicazioni
 
Azure dayroma java, il lato oscuro del cloud
Azure dayroma   java, il lato oscuro del cloudAzure dayroma   java, il lato oscuro del cloud
Azure dayroma java, il lato oscuro del cloud
 
Google Android: una nuova piattaforma Open Source per dispositivi mobili
Google Android: una nuova piattaforma Open Source per dispositivi mobiliGoogle Android: una nuova piattaforma Open Source per dispositivi mobili
Google Android: una nuova piattaforma Open Source per dispositivi mobili
 

Whymca Dive into Android [ITA]

  • 2. Chi sono • Emanuele Di Saverio – Agile Coach @ beeweeb Technologies S.p.A. – Senior Mobile Developer @ lo stesso – Committer @ android-bluetooth • http://code.google.com/p/android-bluetooth – Committer @ QuadraSpace Project • http://www.quadraspace.org – Ing. Informatico – Certified Scrum Master – Sun Certified Mobile App Developer – Sun Certified Java Programmer Dive into Android
  • 3. Topics • Introduzione ad Android – Cenni Storici – SDK Overview – Componenti – Widget UI – Networking & Persistenza • Open Source • Riding the Android Wave • ...and now? Dive into Android
  • 4. Android in short • Android è – (sistema operativo + middleware + applicazioni) per dispositivi mobili • Android è quasi completamente Open Source • Android si basa su un Kernel Linux 2.6 (non E’ linux - tuned libc) • Applicazioni si possono sviluppare in due modi – con Software Dev Kit in linugaggio Java 5 – con Native Dev Kit in C/C++ e testate su un Emulatore (basato su QEMU) • Android Market • Sponsorizzato dall’Open Handset Alliance (Google + 34) Dive into Android
  • 5. Once upon a Time • Aprile 2002, Danger Inc. -> Andy Rubin mostra a Sergei Brin e Larry Page Dive into Android
  • 6. Once upon a Time • Ottobre 2008, HTC G1 (Android Developer Phone) Dive into Android
  • 7. Once upon a time • Luglio 2005, Google acquista Android Inc., fondata da Andy Rubin • Novembre 2007 -> fondazione OHA, Android ufficializzato, SDK early look 0.9 • Android Developer Challenge • Maggio 2008 - Primo prototipo • Agosto 2008 - Android Market • Ottobre 2008 - SDK 1.0 HTC G1 sul mercato • Aprile 2009 - SDK 1.5, HTC Magic sul mercato, NDK 1.5 • Sett 2009 - SDK 1.6, Nov 2009 - SDK 2.0 (???) • HTC Droid - Nexus One...etc. etc. Dive into Android
  • 8. Android now • 22 handset confermati (source androphones.com) • non solo HTC e Motorola: Dell, Lenovo, Acer, Samsung, Huawei, LG • stime per il 2010 – 50+ handset – 34 milioni di esemplari (~5%, con l’IPhone stimato 36 milioni) • recentemente SDK 2.2, OpenGL ES 2.0 (NDK), Contacts API, Sync API, Bluetooth :, Paypal integration, Live Wallpapers • not-so-good: – Android Market – Fragmentation – Tablets - Archos 5 Internet Tablet :( sources: ccsinsight.com, appleinsider.com Dive into Android
  • 11. Anatomia di una applicazione • java source + external resources + manifest = APK! • “All applications are created equal” • risorse: stringhe, immagini, layouts, file binari, drawables.... • AndroidManifest.xml dichiara – i componenti dell’applicazione • Activities • Services • Broadcast Receivers • Content Providers – nome, base package, versione – target SDK version, min SDK version – compatibilità rispetto agli schermi (1.6 and up) Dive into Android
  • 12. Anatomia di una applicazione $android create project -n Dive -t 4 -p Dive -k org.whymca.dive -a DiveActivity $ Dive into Android
  • 13. Anatomia di una applicazione • Ogni applicazione corrisponde ad un User ID diverso (UNIX) • Ogni applicazione viene eseguita nel suo Processo (UNIX) – approccio simile a Chrome • Ogni processo ha clonata nel suo spazio degli indirizzi una istanza separata della Virtual Machine Java • Dalvik Virtual Machine -> ottimizzata per l’uso nei dispositivi mobili Dive into Android
  • 14. Android Manifest Dive into Android
  • 15. Activity • gestisce la User Interface per una specifica interazione che l’utente può effettuare • Responsabilità: – creazione Widgets UI – gestione eventi UI: bottoni premuti, click su elementi, testo inserito etc.. – gest. orientamento schermo – salvataggio stato (“all app running all time”) Dive into Android
  • 16. Activity Lifecycle Principio di Hollywood: “Don’t call me, I’ll call you” Estendere la base class (Activity) Override dei metodi (super.x()!) Approccio comune nel mobile, permette alla piattaforma di mantenere il controllo “forzando” la gestione dei diversi stati di una applicazione mobile “Be a good citizen of Android!” Una Activity è sempre aperta in risposta ad un Intent lanciato dalla piattaforma Dive into Android
  • 17. Intents • l’Intent in Android è un oggetto che rappresenta – una richiesta di lanciare una Activity (utente o programmatica) – una notifica di un evento nel sistema L’Intent può essere propagato e intercettato dai vari componenti del sistema E’ composto da: - Action name : cosa rappresenta l’intent - Data URI e MIMEType: rappresenta il target dell’azione - Categorie di appartenenza dell’Intent - Extras - [...] Dive into Android
  • 18. Intents • Altri esempi di eventi: – Livello batteria basso – SD Card estratta – Bluetooth acceso/spento • Gli Intent vanno lanciati partendo da un Context • Gli Intent implementano l’interfaccia Parcelable Dive into Android
  • 19. BroadcastReceiver • Intercettare eventi e notifiche di sistema – Accensione dell’handset – Livello batteria basso – SD Card estratta – Bluetooth acceso/spento – Incoming Call – Allarmi • Background processing in response to events • “Brief Amount of Time” (10 seconds) or KILL Dive into Android
  • 20. Service • “come una Activity senza UI” • background o foreground service • proprio lifecyle, i componenti fanno il bind ad un service • necessaria la definizione traimte AIDL • I/O della AIDL sono sempre Parcelable, per supportare la comunicazione interprocesso (tramite Binder) • es. MP3 Player, Twitter sync, GPS Navigation Dive into Android
  • 21. Content Provider • Esporre una fonte di dati per l’utilizzo da applicazioni di terze parti • es. Rubrica Contatti -> Identificata da una URI content://contacts/people/1 • ESPORRE un CR: – Implementazione di una interfaccia CRUD – Dichiarazione nel manifest - dichiarazione authority (URI) • Dive into Android
  • 22. Persistenza • SharedPreferences -> manciate di valori, preferenze dell’app • File + Streams -> accesso alla SDCARD • SQLLite Networking • Apache HTTPClient • Android è ~ alla piattaforma Java 5.0 – java.util.concurrent ! • Bluetooth --> NEXT TALK :o) Dive into Android
  • 23. Android UI Dive into Android
  • 24. Widget estendono android.view.View • TextView • Button • ImageView • EditText • CheckBox • ProgressBar • VideoView • View Flipper • [...] • AnalogClock! Dive into Android
  • 25. Layout estendono android.view.ViewGroup • LinearLayout – sequenza, verticale o orizzontale • RelativeLayout – disposizioni “sotto a...a sinistra di...” etc. -> molto efficiente • TableLayout – questa è facile • FrameLayout – overlay, permette di sfruttare le trasparenze Dive into Android
  • 26. Liste estendono android.view.AdapterView • ListView • ExpandableListView • GridView • Spinner <RelativeLayout> </RelativeLayout> Dive into Android
  • 27. Liste • Un Adapter è un wrapper che fa da “ponte” tra le entità e la rappresentazione grafica in UI Android • incentrato intorno al metodo getView() • riuso delle view, “inflate” esplicito delle view via System Service • BaseAdapter è generico abbastanza per esigenze custom • Supporto dall’SDK se l’Adapter è basato su una – lista di oggetti: ArrayAdapter<T> – query da un database: CursorAdapter Dive into Android
  • 28. Dialog • Alert Dialog • Progress Dialog • Custom Dialog – qualunque View uno vuole inflatare, mostrata in maniera modale Dive into Android
  • 29. Handler • come Swing, Android gestisce la UI single-thread • un Thread principale su cui vengono serializzate tutte le callback di UI e quelle relative al lifecycle • interagire con elementi di UI in un OnClickListener o in un OnCreate è OK • task di rete che ritorna e deve aggiornare la UI NON PUO’ CHIAMARE DIRETTAMENTE I METODI UI – es. Thread di rete per recuperare il contenuto di un tweet, quando finisce fa .setText() su un TextField ERRORE • android.os.Handler assicura il processamento sincronizzato con il Thread creatore! ( Looper.prepare() ) Dive into Android
  • 30. Handler Dive into Android
  • 31. Resource • Stringhe Localizzate • Valori Numerici [pixels, costanti, colori] • Stili e Temi • Layouts • Animazioni • Drawables – Immagini – Nine-Patches – Drawable Nativi – Selectors – Layered CONFIGURATION (and locale)- WISE Dive into Android
  • 32. Drawable • package android.graphics.drawable • definibili tramite XML • immagini e colori interpretati e incpsulati da BitmapDrawable e ColorDrawable • nine-patch • definizione nativa Dive into Android
  • 33. Tool chain javac dx aidl aapt emu adb jarsign jar ddms Dive into Android
  • 34. Eclipse ADT • Wizards per progetto Android, Manifest, file di risorse, esempi • Debugger, Profiler, Controllo del device • Controllo Emulatore, Virtual Devices • Integrazione Logcat • Editor dei file di layout e preview • Test Automatici Dive into Android
  • 35. Open Source • Android è Open-Source! quindi posso copiare-incollare-mischiare- customizzare tutto! ...no. • Riferimento a risorse non pubbliche (es. 9patch)! • Feature presenti a runtime ma RIMOSSE DALL’SDK • Permission in root space • Contributi sono ufficialmente accettati, ma all’atto pratico, la maggioranza dei contributi da non-googlers viene rifiutata ignorata o insabbiata :( Dive into Android
  • 36. Riding the Android wave • la frammentazione è dietro l’angolo – Sciphone – MOTOBlur • l’Android Market è brutto • anche l’adozione di massa è dietro l’angolo – Ford: Sync AppLink e General Motors: Chevy Volt – Sony Dragonpoint TV – Tablets: http://miopad.com/ • dispositivi Real Time industriali • Android sembra essere un “buon cavallo” su cui puntare in termini di piattaforma e skills personali Dive into Android
  • 37. ...and now? • http://developer.android.com – Tutorials – la documentazione latita, occhio ai Samples – Blog! • http://source.android.com/ – get source! • twitters: @AndroidDev, @retomeier @romainguy, @gerdavax • ML: android-developers e android-beginners • tenete prenotato il posto! Bluetooth (Stefano Sanna) e Test Driven Development (Carlo Codega) a seguire ;) Dive into Android
  • 38. GRAZIE! Emanuele Di Saverio emanuele.disaverio@gmail.com twitter: @hazam linkedIn: http://it.linkedin.com/in/emanueledisaverio Dive into Android

Notas del editor

  1. build tramite ant (file properties) icona differente per differnti densit&amp;#xE0;
  2. Dan Bromstein
  3. javac normalissima compilazione dx converte in formato .dex, Dalvik EXecutable aapt, aidl file generati (R, aidl) package delle risorse jar un .apk &amp;#xE8; un jar! jarsigner ogni app Android deve essere firmata! draw9patch ddms debugger, inspector, profiler logcat supporto per livelli e filtri adb esecuzione comandi, pull/push file, accesso shell, installazione apps e instrumentation emulator Android Virtual Devices