Successfully reported this slideshow.

Android base day1

513 views

Published on

corso base android

Published in: Technology, Education
  • Be the first to comment

  • Be the first to like this

Android base day1

  1. 1. Corso Android base Bolzano, 10/11 Febbraio 2014 PhD Andrea Zanda
  2. 2. Chi sono? • • 2007 Laurea Informatica in Pisa 2007-2012 Reaserch - Fraunhofer Institut (Bonn - DE) - UPM (Madrid - ES) - Machine learning (~10 pubblicazioni) • 2012 - Oggi - Corso Android base www.eventa.cc (founder) www.guidemeright.com (co-founder) Slide 2
  3. 3. Chi siete? • Cosa sapete fare? - Programmazione? JAVA? - Mobile Apps? ANDROID? • Cosa vi aspettate dal corso? • Cosa vorreste che trattassimo? Corso Android base Slide 3
  4. 4. Summary • Mobile Apps • Android - Storia - Cosa è? - Architettura - Monetizzare Apps Corso Android base Slide 4
  5. 5. Summary (2) • Android(2) - Installazione Android Studio + SDK - Hello world - Concetti Java - Componenti architettura Teoria + pratica ‣ • Progetto - Analisi requisiti funzionalità - Analisi requisiti UI Corso Android base Slide 5
  6. 6. Mobile Apps Come sviluppare? Cross Platform (Phonegap - Titanium) Native Hybrid • • • • • Tempo Costo Conoscenza ambiente Funzionalità Qualità Corso Android base Web App -> Web View Slide 6
  7. 7. Summary • Mobile Apps • Android - Storia - Cosa è? - Architettura - Monetizzare Apps Corso Android base Slide 7
  8. 8. Storia • 2003, Andy Rubin interview. "Rubin said there was tremendous potential in developing smarter mobile devices that are more aware of its owner's location and preferences. 'If people are smart, that information starts getting aggregated into consumer products,' said Rubin" • Giugno 2005. Google compra Android inc. Compagnia che si dedica allo sviluppo di mobile apps. • 5 Nov. 2007. grazie alla Open Handset Alliance (OHA), Android diventa open-source. • 17 Nov. 2007. Applicazioni sviluppate in Java (JVM) con Android Development Kit. Corso Android base Slide 8
  9. 9. Storia(2) • 23 Set. 2008. esce l’ HTC Dream • Integrazione di Android Market (Google play) • Q4 2010. vince Best-selling platform per smartphone. • Oggi. 900M smartphone con Android. (11K modelli) 2013 Downloaded 48B Apps Corso Android base Slide 9
  10. 10. Storia (3) • Android Vs IOS Corso Android base Slide 10
  11. 11. Storia (4) • Android Vs IOS Corso Android base Slide 11
  12. 12. Storia (5) • Android Vs IOS Corso Android base Slide 12
  13. 13. Storia (6) • Android Vs IOS Corso Android base Slide 13
  14. 14. Storia (7) • Android Vs IOS https://class.coursera.org/startup-001/lecture/201 • Mobile Future https://class.coursera.org/startup-001/lecture/253 Corso Android base Slide 14
  15. 15. Summary • Tecnologia in azienda • Mobile Apps • Android - Storia - Cosa è? - Architettura - Monetizzare Apps Corso Android base Slide 15
  16. 16. Cosa è Android? • Obiettivo: astrarre l’ HW per facilitare lo • • sviluppo di applicazioni. Insieme di software che include: i) SO ii) middleware iii) Applicazioni. Open: • il kernel di Linux nella versione 3.x. • API sviluppo Android = sviluppo App • Open Source Apache License 2.0 Corso Android base Slide 16
  17. 17. Cosa è Android?(2) • Obiettivo: astrarre l’ HW per facilitare lo • • sviluppo di applicazioni. Insieme di software che include: i) SO ii) middleware iii) Applicazioni. Open: • il kernel di Linux nella versione 3.x. • API sviluppo Android = sviluppo App • Open Source Apache License 2.0 Corso Android base Slide 17
  18. 18. Cosa è Android?(3) • Linguaggio: • JAVA • Scripting Layer for Android ( s://code.google.com/p/android-scripting/) • Android NDK - C/C++ (http://developer.android.com/tools/sdk/ndk/index.htm ) http • Dalvik virtual machine l • JVM royalties • Ottimizzazione per mobile Corso Android base Slide 18
  19. 19. Cosa è Android?(4) Dalvik Virtual Machine • File .dex (50% meno spazio rispetto a war) • No tuning (Garbage Collector) • Istruzioni a registo (No stack) - 30% + runtime performance Corso Android base Slide 19
  20. 20. Cosa è Android?(5) Caratteristiche: •Navigatore integrato •SQLite per integrazione DB •Supporto Multimediale •Supporto telefonia •Conessione: Bluetooth, EDGE, 3G, WI-FI •Sensori: accelerometro, bussola, fotocamera, etc. •Ambiente di sviluppo: emulatore, debugger, profiling Corso Android base Slide 20
  21. 21. Summary • Tecnologia in azienda • Mobile Apps • Android - Storia - Cosa è? - Architettura - Monetizzare Apps Corso Android base Slide 21
  22. 22. • • • • • • • • • • Architettura Android 1.5: Cupcake Android 1.6: Donut Android 2.0 e Android 2.1: Éclair Android 2.2: Froyo Android 2.3: Gingerbread Android 3.0: Honeycomb Android 4.0: Ice Cream Sandwich Android 4.1: Jelly Bean Android 4.4: KitKat Android 5.0: Key Lime pie Corso Android base Slide 22
  23. 23. Architettura(1) http://www.youtube.com/watch?v=Mm6Ju0xhUW8 Corso Android base Slide 23
  24. 24. Architettura (2) • Linux Kernel • interfacciare HW e librerie • sicurezza, gestione memoria, gestione processi, drivers • IPC - comunicare vari componenti (1 app = 1 processo) “SO che fornisse tutte le feature di sicurezza,gestione della memoria, gestione dei processi, power management e che fosse affidabile e testato.” Corso Android base Slide 24
  25. 25. Architettura(3) • Librerie: • forniscono funzionalità CORE di Android • Riferimento a progetti Open Source • scritte in C/C++ Corso Android base Slide 25
  26. 26. Architettura(4) • Surface Manager: • Gestire view • Coordinare varie finestre • Disegnare su buffer e visualizzare ( tecnica double buffering) • 2D + 3D Corso Android base Slide 26
  27. 27. Architettura(5) • OpenGL | ES • permette accedere a acceleratore grafico • versione mobile di OpenGL 1.3 • bassa memoria 1-64Mb Corso Android base Slide 27
  28. 28. Architettura(6) • SGL • Versione mobile render grafica 2D • Usata da Surface Manager e Window Manager Corso Android base Slide 28
  29. 29. Architettura(7) • Media Framework • Gestire CODEC per acquisizione e riproduzione audio e video basato sulla libreria open source OpenCore di PacketVideo • MPEG4, H.264, MP3, AAC, AMR,JPG e PNG Corso Android base Slide 29
  30. 30. Architettura(8) • FreeType • Gestione dei Font • (http://freetype.sourceforge.net) piccole dimensioni, molto efficiente, altamente customizzabile e portabile. Corso Android base Slide 30
  31. 31. Architettura(10) • SSL Gestione Secure Socket Layer / Connessioni sicure Corso Android base Slide 31
  32. 32. Architettura(11) • SQLite • Gestione persistenza DBMS relazionale, compatto (C), in-process, senza configurazione e transazionale. Corso Android base Slide 32
  33. 33. Architettura(12) • WebKit • Browser integrato (http://webkit.org)Utilizzato da Safari e Chrome Personalizzato per mobile Corso Android base Slide 33
  34. 34. Architettura(13) • libc • libreria standard C libc ottimizzata per i dispositivi basati su Linux Corso Android base Slide 34
  35. 35. Architettura(14) • Android Runtime - funzionalità delle librerie base di JAVA (Core Libraries) - ogni applicazione ha il suo processo con instanziazione della DVM Corso Android base Slide 35
  36. 36. Architettura(15) • Application Framework • fornisce l’accesso alle librerie attraverso API • Scritto in JAVA • Views (liste, text box, bottoni), Content providers (Apps data), Resource Manager (immagini, localized strings), Notification Manager (barra di stato), Activity Manager (navigazione app) Corso Android base Slide 36
  37. 37. Architettura(16) • Activity Manager • non solo visualizzazione schermata, ma lo strumento attraverso il quale l’utente interagisce con l’applicazionel’organizzazione in uno stack a seconda dell’ordine Corso Android base Slide 37
  38. 38. Architettura(16) • Package Manager • gestire il ciclo di vita delle applicazioni nel dispositivo • XML di configurazione (AndroidManifest). • informazioni sul layout o su aspetti di sicurezza... Corso Android base Slide 38
  39. 39. Architettura(17) • Window Manager • gestire le finestre delle diverse applicazioni gestite da processi diversi • Astrazione Surface Manager Corso Android base Slide 39
  40. 40. Architettura(18) • Telephony Manager • gestire funzionalità di un telefono come • es. iniziare una chiamata, o di verificare lo stato della chiamata stessa. Corso Android base Slide 40
  41. 41. Architettura(19) • Content Providers • gestire la condivisione di informazioni tra i vari processi.repository condiviso con cui le diverse applicazioni possono interagire inserendo o leggendo informazioni. Corso Android base Slide 41
  42. 42. Architettura(20) • Resource manager • gestire immagini, file di configurazione o di properties per la internazionalizzazione • trasformazione file in contenuti binari ottimizzati per un dispositivo. Corso Android base Slide 42
  43. 43. Architettura(21) • View System • grafica di un’applicazione per Android è composta da quelle che saranno specializzazioni della classe View • renderizzazione dei componenti nonché gestione degli eventi associati Corso Android base Slide 43
  44. 44. Architettura(22) • Location Manager • gestione delle mappe • consente la realizzazione di Location Based Application (LBA) Corso Android base Slide 44
  45. 45. Architettura(23) • Notification Manager • gestione insieme di strumenti che l’applicazione può utilizzare per inviare una notifica al dispositivo • es. vibrazione, lampeggiare i LED, visualizzare un’icona Corso Android base Slide 45
  46. 46. Architettura(24) • Applications • applicazione base di Android: email, contacts, browser, maps, calendar • Scritte in java • Nostre App! Corso Android base Slide 46
  47. 47. Summary • Tecnologia in azienda • Mobile Apps • Android - Storia - Cosa è? - Architettura - Monetizzare Apps Corso Android base Slide 47
  48. 48. Monetizzare • • • Android market primo store di app gratuite • • Nome e icona Apple Store primo per app a pagamento Design e UI molto importanti (semplicità e velocità) Attenzione alla versione di Android (2.2 e 2.3.3 -2014 -> 80%) Corso Android base Slide 48
  49. 49. Monetizzare • Lancio molto importante (classifiche) • Affiancare strategie di marketing Corso Android base Slide 49
  50. 50. Monetizzare • Monetizzazione: - App a pagamento - affiancare versione light - Banner pubblicitari: AdMob - Nel caso possa essere scalabile, il numero di utenti registrati può essere monetizzato. • Caso Instagram: 30M+ in 2 anni, 1 miliardo di dollari Corso Android base Slide 50
  51. 51. Monetizzare • Monetizzazione: - App a pagamento - affiancare versione light - Banner pubblicitari: AdMob - Nel caso possa essere scalabile, il numero di - utenti registrati può essere monetizzato. Corso Android base Slide 51
  52. 52. Monetizzare Caso Instagram: 30M+ in 2 anni, 1 miliardo di dollari Ulteriori info sulla commercializzazione di App • http://www.youtube.com/watch?v=2SzulLAy0P0 Corso Android base Slide 52
  53. 53. Android.jar • Activity • Intent • Broadcast Receivers • Service • Content Providers Corso Android base Slide 56
  54. 54. Activity • Android.app.activity • Schermata (concettualmente) • Stack con cima attiva - Altre in pausa - Meglio eliminarle? - Android GC • Sviluppatore -> gestire stati (OnCreate) Corso Android base Slide 57
  55. 55. Intent • Gestire comunicazione tra componenti - Riutilizzo codice (activity per esempio o componenti) • Android.content.intent String uri = "content://contacts/123"; Intent intent = new Intent(Intent.ACTION_GET_CONTENT,uri); Corso Android base Slide 58
  56. 56. Broadcast Receivers • Android.content.broadcastreceiver • Handler eventi esterni - Chiamata - SMS • Necessario registrare evento in manifest xml Corso Android base Slide 60
  57. 57. Service • Android.app.service • Gestire app senza interfaccia • GPS module - getLocation() • Music Player - Play() Corso Android base Slide 61
  58. 58. Content provider • Android.content.contentProvider • Gestione dati condivisi App - No SQLITE - Dati rubrica • Legame con intent - Specificare uri dato Corso Android base Slide 62
  59. 59. Architettura App • Fase creazione: • Definizione GUI • Base di dati • Operazioni background • notifiche Corso Android base Slide 63
  60. 60. Architettura App(2) • Come sviluppare? - Codice Java - Risorse - Gestire 3 parti: Manifest xml Corso Android base Slide 64
  61. 61. Risorse • Gestione risorse da usare in App • Si usa programmazione dichiarativa - Definizione variabile in XML da usare nel codice JAVA • Oggetti in cartella Res - Mappati in classe R Corso Android base Slide 69
  62. 62. Risorse(2) • Vari tipi di risorse - String - Immagini - Layout • Cartella definisce tipo - Res/layout -> layout resource Corso Android base Slide 70
  63. 63. Risorse(3) Corso Android base Slide 71
  64. 64. Risorse(4) Corso Android base Slide 72
  65. 65. Risorse(5) Corso Android base Slide 73
  66. 66. Risorse(6) Riferimento a risorsa R. Corso Android base Slide 74
  67. 67. Risorse elementari • Per recuperare nel codice risorse si usa: - getResources().get[Primitive]() Corso Android base Slide 77
  68. 68. Risorse elementari(2) • Definibili via tool di Android Studio - New AndroidResource - Esempio • Tipi: - String, String Array , Int Array, Color, Dimension Corso Android base Slide 78
  69. 69. Risorse elementari(3) • Dimension: permette di specificare dimensioni da richiamare come variabili • • Attributo <dimen> Unità di misura: Corso Android base Slide 79
  70. 70. Stili e temi (2) Corso Android base Slide 82
  71. 71. Risorse XML • Si trovano nella cartella res/xml • Di tipo pull -> SAX (Simple Api for XML) • Accedere con: Corso Android base Slide 85
  72. 72. Risorse XML(2) Corso Android base Slide 86
  73. 73. Esercizio Risorse • Creare interfaccia login con campi username, password e bottone submit. • Il testo della interfaccia deve cambiare in base alla lingua utente • Lo sfondo deve essere una immagine • La dimensione delle view deve variare in base alla dimensione del display • L'app ha una lista di username e password contenute in 2 array • Al click sul “submit” si effettua un controllo sui dati inseriti. • • Corso Android base Slide
  74. 74. String[] arrayString = new String[100]; for(int i = 0; i < arrayString.length; i++) Corso Android base Slide
  75. 75. Activity • Gestiscono interazione utente con App (schermata) • Contenere elementi visuali o interazioni • Contengono View • Creare una Activity significa creare figlio della classe Activity e riscrivere i metodi Corso Android base Slide 90
  76. 76. Ciclo di vita Activity • Activity gestite con uno stack (FIFO) - Cima attiva - Altre sono in memoria? Forse! - Esempio App che aggiunge contatto Corso Android base Slide 91
  77. 77. Ciclo di vita Activity(2) • Stati di una activity Corso Android base Slide 92
  78. 78. Ciclo di vita Activity(3) • Metodi callback (onCreate()) Corso Android base Slide 93
  79. 79. Ciclo di vita Activity(4) • Se sistema Cancella activity? Corso Android base Slide 94
  80. 80. Ciclo di vita Activity(5) • Esercizio: creazione di una app e implementazione dei vari stati (onCreate(), onStop...) con una stampa nel file di Log. Corso Android base Slide 95

×