SlideShare ist ein Scribd-Unternehmen logo
1 von 62
Downloaden Sie, um offline zu lesen
www.follow-app.it

        INTRODUZIONE ALLA PROGRAMMAZIONE ANDROID
                                                                      MARZIALE GIUSEPPE




         Follow-App è un'attività sperimentale realizzata da ARTI e QIRIS in collaborazione con la Regione Puglia - programma Bollenti Spiriti nell'ambito dell'iniziativa
www.follow-app.it
               Innovazione per l’Occupabilità – Azioni a supporto del Piano Straordinario per il Lavoro 2011. PO FSE, Asse VII "Capacità Istituzionale".
ABOUT ME (GIUSEPPE MARZIALE)
       1. Sono Laureato in Ingegneria informatica specializzazione in
          sistema informativi e reti ( Ottobre 2007)
       2. Lavoro in exprivia e mi occupo da pià di due anni di sviluppo
          mobile
       3. Prevalentamente in ambito B2B
       4. Sviluppiamo su Android, Ios, blackberry , Windows Phone e
          in multipiattaforma
       5. Email : gmarziale83@gmail.com skype: giuseppe_marziale


www.follow-app.it   Introduzione alla piattaforma android         2 /91
AGENDA

       1. Introduzione alla piattaforma android
       2. Struttura di un app android e tool di sviluppo
       3. Laboratorio




www.follow-app.it                                          3 /91
Introduzione alla piattaforma android

          INTRODUZIONE ALLA PROGRAMMAZIONE
          ANDROID
www.follow-app.it   Introduzione alla piattaforma android   4 /91
PERCHE’SVILUPPARE MOBILE




www.follow-app.it   Introduzione alla piattaforma android   5 /91
PERCHE’SVILUPPARE MOBILE
     La diffusione degli
     smartphone, è
     enorme ed in
     continua crescita.
     Gli utenti connessi
     sono milioni e le
     app scaricate
     hanno superato
     10 miliardi di
     copie

www.follow-app.it   Introduzione alla piattaforma android   6 /91
UTENTI IOS,ANDROID,BB




www.follow-app.it   Introduzione alla piattaforma android   7 /91
PERCHE’ ANDROID (OS MARKETSHARE)
        Sistema Operativo      Vendite 2011 (         Market share 2011 Crescita annuale
                               milioni)
        Android                237,7                  48,8%             244%
        IOS                    93,1                   19,1%             96%
        Symbian                80,1                   16,4%             -29,1%
        Blackberry             51.4                   10,5%             5,0%
        Bada                   13,2                   2,7%              183,1%
        Windows Phone          6,8                    1,4%              -43,3%
        Altri                  5,4                    1,1%              14,4%

        Fonte : Canalys.com (Feb 2011)

www.follow-app.it   Introduzione alla piattaforma android                            8 /91
PERCHE’ ANDROID (TREND VENDITE)

                                                            Fonte Wikipedia




www.follow-app.it   Introduzione alla piattaforma android             9 /91
PERCHE’ ANDROID
       1. Curva di apprendimento non è ripida ( a differenza dello
          sviluppo IOS)
       2. Android è open-source e I tool di sviluppo sono scaricabili
          gratuitamente
       3. I costi di pubblicazione di un app sul market store di android
          sono esigui ( 25 dollari una tantum)
       4. Installare un app android sul cellulare è un processo banale,
          le app android possono essere diffuse facilmente attraverso
          un sito web(Time to market molto basso)

www.follow-app.it   Introduzione alla piattaforma android         10 /91
ANDROID MANUFACTURES




www.follow-app.it   Introduzione alla piattaforma android   11 /91
FORNO MICROONDE ANDROID




               http://www.pocket-lint.com/news/30712/android-powered-microwave-cooking-google


www.follow-app.it   Introduzione alla piattaforma android                                       12 /91
ARCHITETTURA ANDROID




www.follow-app.it   Introduzione alla piattaforma android   13 /91
COS’E’ ANDROID
       E’ uno stack software per dispositivi mobili
       1. Sistema Operativo:
           -open source appoggia al kernel Linux (>=2.6.27)
           -driver per l’hardware
       2. Middleware:
          -librerie, android runtime, application framework
       3. Applicazioni:
          -native o di terze parti.

www.follow-app.it   Introduzione alla piattaforma android     14 /91
LINUX KERNEL

       1) Linux kernel e driver dell’hardware
       2) Core system service per security, memory
          management, process management, network stack




www.follow-app.it   Introduzione alla piattaforma android   15 /91
LIBRERIE E RUNTIME

       1. Librerie esposte attraverso l’application framework
       2. Android runtime: Dalvik Virtual Machine




www.follow-app.it   Introduzione alla piattaforma android   16 /91
APPLICATION FRAMEWORK
       API di alto livello
       1. Le applicazioni native Android e quelle di terze parti
          utilizzano le stesse API.




www.follow-app.it   Introduzione alla piattaforma android   17 /91
APPLICAZIONI MOBILE

      Sono di due Tipi
      1. Web app: girano in un web browser: scritte in
         HTML, JavaScript, Flash, etc.
      2. Native: Compilate per essere eseguite sul
         dispositivo



www.follow-app.it   Introduzione alla piattaforma android   18 /91
APPLICAZIONI NATIVE ANDROID

      1. Scritte in Java utilizzando la sdk ufficiale distribuita
         da google
             – Non supporta tutte le librerie Java come ad esempio Swing
               & AWT
      2. Il codice java è compilato in byte code Dalvik (.dex)
             – Ottimizzati per i dispositivi mobili (migliore gestione della
               memoria e delle risorse, utilizzo della batteria , etc.)
      3. La Dalvik virtual machine esegue i files .dex

www.follow-app.it   Introduzione alla piattaforma android              19 /91
Struttura di un app android e tool di sviluppo

          INTRODUZIONE ALLA PROGRAMMAZIONE
          ANDROID
www.follow-app.it   Struttura di un app android e tool di sviluppo   20 /91
COMPONENTI BASE DI UN APP

       1.     Activities
       2.     View e ViewGroups
       3.     Service
       4.     Intent
       5.     Broadcast Receiver
       6.     ContentProvider

www.follow-app.it   Struttura di un app android e tool di sviluppo   21 /91
ACTIVITIES

       1. Componenti base di un applicazione android. Un
          activity è una schermata mostrata all’utente.
       2. Un app android deve avere almeno un activity ma
          può averne più di una che si alternano durante
          l’esecuzione dell’applicazione




www.follow-app.it   Struttura di un app android e tool di sviluppo   22 /91
VIEW E VIEWGROUPS

       1. Le view sono I controlli utenti che costituiscono le user
          interface( bottoni, campi di testo, label, …) . Sono classi
          che estendondo android.view.View. Views
       2. I viewgroups sono contenitori di view , servono per
          organizzare e impaginare i controlli utenti ( le view).
          Sono classi che estendono
          android.view.ViewGroups. ViewGroup


www.follow-app.it   Struttura di un app android e tool di sviluppo   23 /91
SERVICES

       1. Eseguono operazioni in background che non
          richiedono l’interazione diretta dell’utente: es.
          Musica in sottofondo, scaricamento di un file,
          tracking della posizione dell’utente.
       2. I servizi non hanno user interface




www.follow-app.it   Struttura di un app android e tool di sviluppo   24 /91
INTENT

       1. E’ un messaggio asincrono di sistema che si
          compone di un azione da eseguire e dei dati.
       2. Può essere esplicito o inplicito in quest’ultimo caso
          il sistema individua il componente che può eseguire
          tale azione (Intent Receiver) e la esegue.
       3. Un applicazione si abilita alla registrazione di un
          particolare intent dichiarando un IntentFilter

www.follow-app.it   Struttura di un app android e tool di sviluppo   25 /91
INTENT 2
       Un intent può essere usato per:
       1. esplicitare un compito o azione che una Activity o
           un Service possono eseguire solitamente con o su un
           particolare insieme di dati;
       2. lanciare una particolare Activity o Service;
       3. supportare l'interazione tra qualsiasi applicazione
           installata sul dispositivo Android, senza doversi
           preoccupare di che tipo di applicazione sia o di quale
           componente software gli Intent facciano parte.

www.follow-app.it   Struttura di un app android e tool di sviluppo   26 /91
INTENT EXAMPLE:IMAGE SHARING




www.follow-app.it   Struttura di un app android e tool di sviluppo   27 /91
BROADCAST RECEIVER

       1. Un app registra un broadcast receiver che e’
          configurato per ricevere e gestire determinati
          messaggi di sistema e intent.
       2. Un app può anche definire dei propri intent
          custom.




www.follow-app.it   Struttura di un app android e tool di sviluppo   28 /91
ANDROID SECURITY

       1. Ogni app in android gira nel proprio processo
          associata ad un user ( di sistema) e ad un gruppo
          univoco
       2. Ogni app è quindi isolata dalle altre e non può
          accedere ai dati delle altre app.
       3. L’unico modo di condividere dati tra applicazioni è
          dichiarare esplicitamente un content provider.

www.follow-app.it   Struttura di un app android e tool di sviluppo   29 /91
CONTENT PROVIDER

       Il sistema operativo mette a disposizione una serie di
       content provider nativi.
       http://developer.android.com//reference/android/pro
       vider/package-summary.html.
       Es.
       1. Il database dei contatti
       2. I contenuti multimediali (audio, video , foto)
www.follow-app.it   Struttura di un app android e tool di sviluppo   30 /91
STRUTTURA DI UN PROGETTO ANDROID




www.follow-app.it   Struttura di un app android e tool di sviluppo   31 /91
ANDROID MANIFEST
        <?xml version="1.0" encoding="utf-8"?>
        <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="it.gmarz83.android.temperatura" android:versionCode="1"
        android:versionName="1.0">
        <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".Convert" android:label="@string/app_name">
        <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        </activity>
        </application>
        <uses-sdk android:minSdkVersion="9" />
        <uses-permission android:name="android.permission.INTERNET "> </uses-permission>
        </manifest>

www.follow-app.it   Struttura di un app android e tool di sviluppo                32 /91
ANDROID MANIFEST -PERMISSION
        <uses-permission android:name="android.permission.INTERNET ">
       Tra i principali permessi che possiamo richiedere ci sono i seguenti:
       1. READ_CONTACTS: leggere (ma non scrivere) i dati dei contatti
            dell'utente.
       2. WRITE_CONTACTS: scrivere (ma non leggere) i dati dei contatti
            dell'utente
       3. RECEIVE_SMS: monitorare l'arrivo di messaggi SMS
       4. INTERNET: accedere ed utilizzare la connessione Internet
       5. ACCESS_FINE_LOCATION: utilizzare un accurato sistema di localizzazione
            come il GPS
       http://developer.android.com/reference/android/Manifest.permission.html
www.follow-app.it   Struttura di un app android e tool di sviluppo       33 /91
STRUTTURA DI UN PROGETTO ANDROID




www.follow-app.it   Struttura di un app android e tool di sviluppo   34 /91
CARTELLA ASSETS

       1. contiene risorse esterne necessarie all’applicazione
          (file audio, video, etc)




www.follow-app.it   Struttura di un app android e tool di sviluppo   35 /91
STRUTTURA DI UN PROGETTO ANDROID




www.follow-app.it   Struttura di un app android e tool di sviluppo   36 /91
CARTELLA DRAWABLE (RES)

       1. Contiene I file immagine che saranno utilizzati
          all’interno dell’app( compresa l’icona
          dell’applicazione)




www.follow-app.it   Struttura di un app android e tool di sviluppo   37 /91
STRUTTURA DI UN PROGETTO ANDROID




www.follow-app.it   Struttura di un app android e tool di sviluppo   38 /91
CARTELLA LAYOUT (RES)

       1. Contiene I file di layout delle schermate della
          nostra app.
       2. Ogni schermata avrà il suo file di layout( ossia
          l’impaginazione della schermata).
       3. Il layout può essere definito anche da codice, ma è
          preferibile utilizzare l’xml perchè disaccoppia la
          logica dalla definizione della user interface

www.follow-app.it   Struttura di un app android e tool di sviluppo   39 /91
STRUTTURA DI UN PROGETTO ANDROID




www.follow-app.it   Struttura di un app android e tool di sviluppo   40 /91
CARTELLA VALUES (RES)

       1. Contiene file xml che definiscono risorse utilizzabili
          all’interno dell’applicazione
       2. Es. Il file delle stringhe.




www.follow-app.it   Struttura di un app android e tool di sviluppo   41 /91
CARTELLA VALUES (STRING.XML)

       <?xml version="1.0" encoding="utf-8"?>
       <resources>
         <string name="app_name">Nome App</string>
       </resources>

       <application android:icon="@drawable/icon"
       android:label="@string/app_name">

www.follow-app.it   Struttura di un app android e tool di sviluppo   42 /91
STRUTTURA DI UN PROGETTO ANDROID




www.follow-app.it   Struttura di un app android e tool di sviluppo   43 /91
CARTELLA GEN

       1. Contiene un file R.java generato automaticamente
          da eclipse( non bisogna modificarlo).
       2. In questo file a ciascuna risorsa definita nella
          cartella Res( immagini, stringhe, view contenute nei
          layout ) è associato un id univoco mediante il quale
          si può accedere.
       3. Es. Per accedere alla stringa app_name:
       4. getString(R.string.app_name));.
www.follow-app.it   Struttura di un app android e tool di sviluppo   44 /91
STRUTTURA DI UN PROGETTO ANDROID




www.follow-app.it   Struttura di un app android e tool di sviluppo   45 /91
CARTELLA SRC

       1. Contiene i file sorgente della nostra applicazione




www.follow-app.it   Struttura di un app android e tool di sviluppo   46 /91
ACTIVITY LIFECYCLE




www.follow-app.it   Struttura di un app android e tool di sviluppo   47 /91
LABORATORIO

       1.     App multidevice
       2.     Hello word
       3.     Intent tutorial
       4.     Editor di note
       5.     Location Manager e Google Map tutorial



www.follow-app.it                                      48 /91
APP MULTIDEVICE

       1. I dispositivi android hanno una moltitudine di
          dimensioni , risoluzioni , e densità
       2. La densità è il numero di pixel per pollice calcolato
          sulla diagonale.




www.follow-app.it   Laboratorio                            49 /91
CLASSIFICAZIONE DEVICE




                      Fonte : http://developer.android.com (Feb 2012)
www.follow-app.it   Laboratorio                                         50 /91
LA SOLUZIONE
      1. Usare wrap_content, fill_parent, e l’unità di
         misura dp per impostare le dimenzioni nei file di layout
         XML
      2. Non usare mai misure in pixel hard coded nelle app
      3. Non usare l’ absoluteLayout ( che è deprecato)
      4. Inserire repliche della stessa immagine per ogni densità
      5. Testare l’app usando gli emulatori
      6. Approfondimento:http://docs.huihoo.com/android/2.2/
         guide/practices/screens_support.html

www.follow-app.it                                          51 /91
LA SOLUZIONE: DPI

       1. DPI = Density Indipendent Pixel ossia un unità di
          misura dello schermo indipendente dalla densità
       2. 1 pixels = DP(density pixel) * (DPI(densità) / 160).
       3. Indipendentemente dalla dimensione e della
          densità dello schermo il density pixel occupa
          sempre lo stesso spazio


www.follow-app.it   Laboratorio                            52 /91
LA SOLUZIONE: SCALARE LE IMMAGINI

      1. 3:4:6:8 è il rapporto tra le 4 densità.
      2. Se ho un immagine di 100px e la risoluzione base è mdpi(160
          dpi che corrisponde al rapporto 4) si ottiene:
      • ldpi: 75 × 75, cioè 3/4 della risoluzione base (100 * 3 / 4 = 75);
      • mdpi: 100 × 100;
      • hdpi: 150 × 150, cioè una volta e mezzo la risoluzione base
        (100 * 6 / 4 = 100 * 3 / 2 = 100 * 1,5 = 150);
      • xhdpi: 200 × 200, cioè il doppio della risoluzione base (100 * 8
        / 4 = 100 * 2 = 200) a queste risoluzioni dovrebbe
        corrispondere Google TV, non gli smartophones.

www.follow-app.it   Laboratorio                                    53 /91
EMULATORI

      1.     QVGA (240x320, low density, small screen)
      2.     HVGA (320x480, medium density, normal screen)
      3.     WVGA800 (480x800, high density, normal screen)
      4.     WVGA854 (480x854 high density, normal screen)




www.follow-app.it   Laboratorio                        54 /91
INTENT ESPLICITO

       1. Si tratta di un utilizzo dell’oggetto Intent nel quale si
          esplicita l’oggetto che si vuole richiamare :

       Intent i = new Intent(this, ActivityTwo.class);
       i.putExtra("Value1", "This value one for ActivityTwo ");
       i.putExtra("Value2", "This value two ActivityTwo");


www.follow-app.it   Laboratorio                              55 /91
INTENT IMPLICITO
       1. L’intent implicito non specifica una classe Java bensì un
           azione e opzionalmente un uri associata all’azione.
       Intent intent = new Intent(Intent.ACTION_VIEW,
       Uri.parse("http://gmarz83.altervista.org"));
       2. Android individua quale componente è registrato per
           gestire tale azione
       3. Se individua un solo componente, esegue l’azione se ce
           n’è più di uno un dialog chiede all’utente verso quale
           componente dirigire l’azione

www.follow-app.it   Laboratorio                              56 /91
TRASFERIMENTO DATI

       1. Intent espliciti o impliciti posso contentere extra dati

       Intent sharingIntent = new Intent(Intent.ACTION_SEND);
       sharingIntent.setType("text/plain");
       sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT,
       " allegato!");
       startActivity(Intent.createChooser(sharingIntent,"condividi"
       ));

www.follow-app.it   Laboratorio                                57 /91
TRASFERIMENTO DATI 2

       1. Il componente che riceve l’intent estrae i dati così

       Bundle extras = getIntent().getExtras();
        if (extras == null) { return; }
       String value1 = extras.getString(Intent.EXTRA_TEXT);
        if (value1 != null) { // fai qualcosa}

www.follow-app.it   Laboratorio                           58 /91
CHIAMARE ACTIVITY CON RISULTATO


       Intent i = new Intent(this, ActivityTwo.class);
       i.putExtra("Val1", “valore 1");
       i.putExtra("Val2", “valore 2");
        startActivityForResult(i, REQUEST_CODE);



www.follow-app.it   Laboratorio                          59 /91
CHIAMARE ACTIVITY CON RISULTATO 2


       @Override public void finish() {
       Intent data = new Intent();
       data.putExtra("returnKey1", "risultato1");
       data.putExtra("returnKey2", "risultato2");
       setResult(RESULT_OK, data);
       super.finish();
       }

www.follow-app.it   Laboratorio                     60 /91
CHIAMARE ACTIVITY CON RISULTATO 3


       @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data)
       {
          if (resultCode == RESULT_OK && requestCode == REQUEST_CODE)
         {
             if (data.hasExtra("returnKey1")) {
                 Toast.makeText(this, data.getExtras().getString("returnKey1"),
       Toast.LENGTH_SHORT).show();
              }
          }
       }


www.follow-app.it   Laboratorio                                                         61 /91
INTENT FILTER

       1.     Un componente si registra e si abilita alla ricezione di determinati intent
              attraverso la definizione di un intent filter , che avviene nel manifest.xml

       <activity android:name=".BrowserActivitiy"
       android:label="@string/app_name">
       <intent-filter>
       <action android:name="android.intent.action.VIEW" />
       <category android:name="android.intent.category.DEFAULT" />
       <data android:scheme="http"/>
       </intent-filter>
       </activity>


www.follow-app.it   Laboratorio                                                   62 /91

Weitere ähnliche Inhalte

Ähnlich wie follow-app BOOTCAMP 3: Android

Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...Mattia De Bernardi
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkGiovanni Buffa
 
Meet no Neet: presentazione del progetto App per organizzare eventi
Meet no Neet: presentazione del progetto App per organizzare eventiMeet no Neet: presentazione del progetto App per organizzare eventi
Meet no Neet: presentazione del progetto App per organizzare eventiFondazione Mondo Digitale
 
SMAU PADOVA 2019 Luca Bonadimani (AIPSI)
SMAU PADOVA 2019 Luca Bonadimani (AIPSI)SMAU PADOVA 2019 Luca Bonadimani (AIPSI)
SMAU PADOVA 2019 Luca Bonadimani (AIPSI)SMAU
 
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 Digitalelostrettodigitale
 
MobileDevCamp2012 - Android
MobileDevCamp2012 - AndroidMobileDevCamp2012 - Android
MobileDevCamp2012 - Androidmobiledevcamp
 
Android programming
Android programmingAndroid programming
Android programmingPi Libri
 
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1codeblock
 
Progetto e realizzazione di un'applicazione WebGIS per la visualizzazione di ...
Progetto e realizzazione di un'applicazione WebGIS per la visualizzazione di ...Progetto e realizzazione di un'applicazione WebGIS per la visualizzazione di ...
Progetto e realizzazione di un'applicazione WebGIS per la visualizzazione di ...diegohusu
 
FODD 2015 Mobile App based on ServiceMap, http://www.disit.org/fodd
FODD 2015 Mobile App based on ServiceMap, http://www.disit.org/foddFODD 2015 Mobile App based on ServiceMap, http://www.disit.org/fodd
FODD 2015 Mobile App based on ServiceMap, http://www.disit.org/foddPaolo Nesi
 
Massimiliano Zani - Applicazioni Mobile: tecnologie e Problematiche
Massimiliano Zani - Applicazioni Mobile: tecnologie e ProblematicheMassimiliano Zani - Applicazioni Mobile: tecnologie e Problematiche
Massimiliano Zani - Applicazioni Mobile: tecnologie e ProblematicheBetter Software
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROIDPaolo Tosato
 
Pentesting Android with BackBox 4
Pentesting Android with BackBox 4Pentesting Android with BackBox 4
Pentesting Android with BackBox 4raffaele_forte
 
Dal web a Windows 8: costruire app Metro immersiv - Daniele Bochiccio - whyMCA
Dal web a Windows 8: costruire app Metro immersiv - Daniele Bochiccio - whyMCADal web a Windows 8: costruire app Metro immersiv - Daniele Bochiccio - whyMCA
Dal web a Windows 8: costruire app Metro immersiv - Daniele Bochiccio - whyMCAWhymca
 
Iniziare a sviluppare su mobile con Android
Iniziare a sviluppare su mobile con AndroidIniziare a sviluppare su mobile con Android
Iniziare a sviluppare su mobile con AndroidFrancesco Florio
 

Ähnlich wie follow-app BOOTCAMP 3: Android (20)

Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un framework
 
Meet no Neet: presentazione del progetto App per organizzare eventi
Meet no Neet: presentazione del progetto App per organizzare eventiMeet no Neet: presentazione del progetto App per organizzare eventi
Meet no Neet: presentazione del progetto App per organizzare eventi
 
Le app
Le appLe app
Le app
 
SMAU PADOVA 2019 Luca Bonadimani (AIPSI)
SMAU PADOVA 2019 Luca Bonadimani (AIPSI)SMAU PADOVA 2019 Luca Bonadimani (AIPSI)
SMAU PADOVA 2019 Luca Bonadimani (AIPSI)
 
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
 
MobileDevCamp2012 - Android
MobileDevCamp2012 - AndroidMobileDevCamp2012 - Android
MobileDevCamp2012 - Android
 
Micro Applicazioni Mobile
Micro Applicazioni MobileMicro Applicazioni Mobile
Micro Applicazioni Mobile
 
Android
AndroidAndroid
Android
 
Android programming
Android programmingAndroid programming
Android programming
 
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
 
Progetto e realizzazione di un'applicazione WebGIS per la visualizzazione di ...
Progetto e realizzazione di un'applicazione WebGIS per la visualizzazione di ...Progetto e realizzazione di un'applicazione WebGIS per la visualizzazione di ...
Progetto e realizzazione di un'applicazione WebGIS per la visualizzazione di ...
 
FODD 2015 Mobile App based on ServiceMap, http://www.disit.org/fodd
FODD 2015 Mobile App based on ServiceMap, http://www.disit.org/foddFODD 2015 Mobile App based on ServiceMap, http://www.disit.org/fodd
FODD 2015 Mobile App based on ServiceMap, http://www.disit.org/fodd
 
Massimiliano Zani - Applicazioni Mobile: tecnologie e Problematiche
Massimiliano Zani - Applicazioni Mobile: tecnologie e ProblematicheMassimiliano Zani - Applicazioni Mobile: tecnologie e Problematiche
Massimiliano Zani - Applicazioni Mobile: tecnologie e Problematiche
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROID
 
Introduzione ad Android
Introduzione ad AndroidIntroduzione ad Android
Introduzione ad Android
 
Pentesting Android with BackBox 4
Pentesting Android with BackBox 4Pentesting Android with BackBox 4
Pentesting Android with BackBox 4
 
Dal web a Windows 8: costruire app Metro immersiv - Daniele Bochiccio - whyMCA
Dal web a Windows 8: costruire app Metro immersiv - Daniele Bochiccio - whyMCADal web a Windows 8: costruire app Metro immersiv - Daniele Bochiccio - whyMCA
Dal web a Windows 8: costruire app Metro immersiv - Daniele Bochiccio - whyMCA
 
Relazione
RelazioneRelazione
Relazione
 
Iniziare a sviluppare su mobile con Android
Iniziare a sviluppare su mobile con AndroidIniziare a sviluppare su mobile con Android
Iniziare a sviluppare su mobile con Android
 

Mehr von QIRIS

[F5 Hit Refresh] Pierpaolo Basile - Accesso alle informazioni con apache lucene
[F5 Hit Refresh] Pierpaolo Basile - Accesso alle informazioni con apache lucene[F5 Hit Refresh] Pierpaolo Basile - Accesso alle informazioni con apache lucene
[F5 Hit Refresh] Pierpaolo Basile - Accesso alle informazioni con apache luceneQIRIS
 
Francesco Inguscio - Avviare una start-up
Francesco Inguscio - Avviare una start-upFrancesco Inguscio - Avviare una start-up
Francesco Inguscio - Avviare una start-upQIRIS
 
Francesco Inguscio - Start-up financing from the side of the entrepreneur
Francesco Inguscio - Start-up financing from the side of the entrepreneurFrancesco Inguscio - Start-up financing from the side of the entrepreneur
Francesco Inguscio - Start-up financing from the side of the entrepreneurQIRIS
 
Monica Maria Crapanzano - Definire business model e business plan
Monica Maria Crapanzano - Definire business model e business planMonica Maria Crapanzano - Definire business model e business plan
Monica Maria Crapanzano - Definire business model e business planQIRIS
 
Massimo Aliberti - Dal concept al prototipo al prodotto
Massimo Aliberti - Dal concept al prototipo al prodottoMassimo Aliberti - Dal concept al prototipo al prodotto
Massimo Aliberti - Dal concept al prototipo al prodottoQIRIS
 
follow-app DAY 4 - Strumenti per la prototipazione
follow-app DAY 4 - Strumenti per la prototipazionefollow-app DAY 4 - Strumenti per la prototipazione
follow-app DAY 4 - Strumenti per la prototipazioneQIRIS
 
follow-app BOOTCAMP 4: iOS
follow-app BOOTCAMP 4: iOSfollow-app BOOTCAMP 4: iOS
follow-app BOOTCAMP 4: iOSQIRIS
 
follow-app BOOTCAMP 2: Windows phone fast application switching
follow-app BOOTCAMP 2: Windows phone fast application switchingfollow-app BOOTCAMP 2: Windows phone fast application switching
follow-app BOOTCAMP 2: Windows phone fast application switchingQIRIS
 
follow-app BOOTCAMP 2: Introduction to silverlight
follow-app BOOTCAMP 2: Introduction to silverlightfollow-app BOOTCAMP 2: Introduction to silverlight
follow-app BOOTCAMP 2: Introduction to silverlightQIRIS
 
follow-app BOOTCAMP 2: Building windows phone applications with visual studio...
follow-app BOOTCAMP 2: Building windows phone applications with visual studio...follow-app BOOTCAMP 2: Building windows phone applications with visual studio...
follow-app BOOTCAMP 2: Building windows phone applications with visual studio...QIRIS
 
follow-app BOOTCAMP 2 - Windows Phone: Tiles and Notifications
follow-app BOOTCAMP 2 - Windows Phone: Tiles and Notifications follow-app BOOTCAMP 2 - Windows Phone: Tiles and Notifications
follow-app BOOTCAMP 2 - Windows Phone: Tiles and Notifications QIRIS
 
follow-app: BOOTCAMP 3 - Introduzione al GTUG
follow-app: BOOTCAMP 3 - Introduzione al GTUGfollow-app: BOOTCAMP 3 - Introduzione al GTUG
follow-app: BOOTCAMP 3 - Introduzione al GTUGQIRIS
 
follow-app DAY 4: Dati, segreti e tecniche per App di successo
follow-app DAY 4: Dati, segreti e tecniche per App di successofollow-app DAY 4: Dati, segreti e tecniche per App di successo
follow-app DAY 4: Dati, segreti e tecniche per App di successoQIRIS
 
follow-ap DAY 4: HTML5 e jQuery
follow-ap DAY 4: HTML5 e jQueryfollow-ap DAY 4: HTML5 e jQuery
follow-ap DAY 4: HTML5 e jQueryQIRIS
 
follow-app DAY 2: Dall'idea al mercato
follow-app DAY 2: Dall'idea al mercatofollow-app DAY 2: Dall'idea al mercato
follow-app DAY 2: Dall'idea al mercatoQIRIS
 
follow-app DAY 2: Dal mercato al business
follow-app DAY 2: Dal mercato al businessfollow-app DAY 2: Dal mercato al business
follow-app DAY 2: Dal mercato al businessQIRIS
 
follow-app DAY 3: Marketing & Sales
follow-app DAY 3: Marketing & Salesfollow-app DAY 3: Marketing & Sales
follow-app DAY 3: Marketing & SalesQIRIS
 
follow-app DAY 2: Risorse utili
follow-app DAY 2: Risorse utilifollow-app DAY 2: Risorse utili
follow-app DAY 2: Risorse utiliQIRIS
 
follow-app DAY 1: Manager e leader
follow-app DAY 1: Manager e leaderfollow-app DAY 1: Manager e leader
follow-app DAY 1: Manager e leaderQIRIS
 
follow-app DAY 1: Facebook IPO
follow-app DAY 1: Facebook IPOfollow-app DAY 1: Facebook IPO
follow-app DAY 1: Facebook IPOQIRIS
 

Mehr von QIRIS (20)

[F5 Hit Refresh] Pierpaolo Basile - Accesso alle informazioni con apache lucene
[F5 Hit Refresh] Pierpaolo Basile - Accesso alle informazioni con apache lucene[F5 Hit Refresh] Pierpaolo Basile - Accesso alle informazioni con apache lucene
[F5 Hit Refresh] Pierpaolo Basile - Accesso alle informazioni con apache lucene
 
Francesco Inguscio - Avviare una start-up
Francesco Inguscio - Avviare una start-upFrancesco Inguscio - Avviare una start-up
Francesco Inguscio - Avviare una start-up
 
Francesco Inguscio - Start-up financing from the side of the entrepreneur
Francesco Inguscio - Start-up financing from the side of the entrepreneurFrancesco Inguscio - Start-up financing from the side of the entrepreneur
Francesco Inguscio - Start-up financing from the side of the entrepreneur
 
Monica Maria Crapanzano - Definire business model e business plan
Monica Maria Crapanzano - Definire business model e business planMonica Maria Crapanzano - Definire business model e business plan
Monica Maria Crapanzano - Definire business model e business plan
 
Massimo Aliberti - Dal concept al prototipo al prodotto
Massimo Aliberti - Dal concept al prototipo al prodottoMassimo Aliberti - Dal concept al prototipo al prodotto
Massimo Aliberti - Dal concept al prototipo al prodotto
 
follow-app DAY 4 - Strumenti per la prototipazione
follow-app DAY 4 - Strumenti per la prototipazionefollow-app DAY 4 - Strumenti per la prototipazione
follow-app DAY 4 - Strumenti per la prototipazione
 
follow-app BOOTCAMP 4: iOS
follow-app BOOTCAMP 4: iOSfollow-app BOOTCAMP 4: iOS
follow-app BOOTCAMP 4: iOS
 
follow-app BOOTCAMP 2: Windows phone fast application switching
follow-app BOOTCAMP 2: Windows phone fast application switchingfollow-app BOOTCAMP 2: Windows phone fast application switching
follow-app BOOTCAMP 2: Windows phone fast application switching
 
follow-app BOOTCAMP 2: Introduction to silverlight
follow-app BOOTCAMP 2: Introduction to silverlightfollow-app BOOTCAMP 2: Introduction to silverlight
follow-app BOOTCAMP 2: Introduction to silverlight
 
follow-app BOOTCAMP 2: Building windows phone applications with visual studio...
follow-app BOOTCAMP 2: Building windows phone applications with visual studio...follow-app BOOTCAMP 2: Building windows phone applications with visual studio...
follow-app BOOTCAMP 2: Building windows phone applications with visual studio...
 
follow-app BOOTCAMP 2 - Windows Phone: Tiles and Notifications
follow-app BOOTCAMP 2 - Windows Phone: Tiles and Notifications follow-app BOOTCAMP 2 - Windows Phone: Tiles and Notifications
follow-app BOOTCAMP 2 - Windows Phone: Tiles and Notifications
 
follow-app: BOOTCAMP 3 - Introduzione al GTUG
follow-app: BOOTCAMP 3 - Introduzione al GTUGfollow-app: BOOTCAMP 3 - Introduzione al GTUG
follow-app: BOOTCAMP 3 - Introduzione al GTUG
 
follow-app DAY 4: Dati, segreti e tecniche per App di successo
follow-app DAY 4: Dati, segreti e tecniche per App di successofollow-app DAY 4: Dati, segreti e tecniche per App di successo
follow-app DAY 4: Dati, segreti e tecniche per App di successo
 
follow-ap DAY 4: HTML5 e jQuery
follow-ap DAY 4: HTML5 e jQueryfollow-ap DAY 4: HTML5 e jQuery
follow-ap DAY 4: HTML5 e jQuery
 
follow-app DAY 2: Dall'idea al mercato
follow-app DAY 2: Dall'idea al mercatofollow-app DAY 2: Dall'idea al mercato
follow-app DAY 2: Dall'idea al mercato
 
follow-app DAY 2: Dal mercato al business
follow-app DAY 2: Dal mercato al businessfollow-app DAY 2: Dal mercato al business
follow-app DAY 2: Dal mercato al business
 
follow-app DAY 3: Marketing & Sales
follow-app DAY 3: Marketing & Salesfollow-app DAY 3: Marketing & Sales
follow-app DAY 3: Marketing & Sales
 
follow-app DAY 2: Risorse utili
follow-app DAY 2: Risorse utilifollow-app DAY 2: Risorse utili
follow-app DAY 2: Risorse utili
 
follow-app DAY 1: Manager e leader
follow-app DAY 1: Manager e leaderfollow-app DAY 1: Manager e leader
follow-app DAY 1: Manager e leader
 
follow-app DAY 1: Facebook IPO
follow-app DAY 1: Facebook IPOfollow-app DAY 1: Facebook IPO
follow-app DAY 1: Facebook IPO
 

follow-app BOOTCAMP 3: Android

  • 1. www.follow-app.it INTRODUZIONE ALLA PROGRAMMAZIONE ANDROID MARZIALE GIUSEPPE Follow-App è un'attività sperimentale realizzata da ARTI e QIRIS in collaborazione con la Regione Puglia - programma Bollenti Spiriti nell'ambito dell'iniziativa www.follow-app.it Innovazione per l’Occupabilità – Azioni a supporto del Piano Straordinario per il Lavoro 2011. PO FSE, Asse VII "Capacità Istituzionale".
  • 2. ABOUT ME (GIUSEPPE MARZIALE) 1. Sono Laureato in Ingegneria informatica specializzazione in sistema informativi e reti ( Ottobre 2007) 2. Lavoro in exprivia e mi occupo da pià di due anni di sviluppo mobile 3. Prevalentamente in ambito B2B 4. Sviluppiamo su Android, Ios, blackberry , Windows Phone e in multipiattaforma 5. Email : gmarziale83@gmail.com skype: giuseppe_marziale www.follow-app.it Introduzione alla piattaforma android 2 /91
  • 3. AGENDA 1. Introduzione alla piattaforma android 2. Struttura di un app android e tool di sviluppo 3. Laboratorio www.follow-app.it 3 /91
  • 4. Introduzione alla piattaforma android INTRODUZIONE ALLA PROGRAMMAZIONE ANDROID www.follow-app.it Introduzione alla piattaforma android 4 /91
  • 5. PERCHE’SVILUPPARE MOBILE www.follow-app.it Introduzione alla piattaforma android 5 /91
  • 6. PERCHE’SVILUPPARE MOBILE La diffusione degli smartphone, è enorme ed in continua crescita. Gli utenti connessi sono milioni e le app scaricate hanno superato 10 miliardi di copie www.follow-app.it Introduzione alla piattaforma android 6 /91
  • 7. UTENTI IOS,ANDROID,BB www.follow-app.it Introduzione alla piattaforma android 7 /91
  • 8. PERCHE’ ANDROID (OS MARKETSHARE) Sistema Operativo Vendite 2011 ( Market share 2011 Crescita annuale milioni) Android 237,7 48,8% 244% IOS 93,1 19,1% 96% Symbian 80,1 16,4% -29,1% Blackberry 51.4 10,5% 5,0% Bada 13,2 2,7% 183,1% Windows Phone 6,8 1,4% -43,3% Altri 5,4 1,1% 14,4% Fonte : Canalys.com (Feb 2011) www.follow-app.it Introduzione alla piattaforma android 8 /91
  • 9. PERCHE’ ANDROID (TREND VENDITE) Fonte Wikipedia www.follow-app.it Introduzione alla piattaforma android 9 /91
  • 10. PERCHE’ ANDROID 1. Curva di apprendimento non è ripida ( a differenza dello sviluppo IOS) 2. Android è open-source e I tool di sviluppo sono scaricabili gratuitamente 3. I costi di pubblicazione di un app sul market store di android sono esigui ( 25 dollari una tantum) 4. Installare un app android sul cellulare è un processo banale, le app android possono essere diffuse facilmente attraverso un sito web(Time to market molto basso) www.follow-app.it Introduzione alla piattaforma android 10 /91
  • 11. ANDROID MANUFACTURES www.follow-app.it Introduzione alla piattaforma android 11 /91
  • 12. FORNO MICROONDE ANDROID http://www.pocket-lint.com/news/30712/android-powered-microwave-cooking-google www.follow-app.it Introduzione alla piattaforma android 12 /91
  • 13. ARCHITETTURA ANDROID www.follow-app.it Introduzione alla piattaforma android 13 /91
  • 14. COS’E’ ANDROID E’ uno stack software per dispositivi mobili 1. Sistema Operativo: -open source appoggia al kernel Linux (>=2.6.27) -driver per l’hardware 2. Middleware: -librerie, android runtime, application framework 3. Applicazioni: -native o di terze parti. www.follow-app.it Introduzione alla piattaforma android 14 /91
  • 15. LINUX KERNEL 1) Linux kernel e driver dell’hardware 2) Core system service per security, memory management, process management, network stack www.follow-app.it Introduzione alla piattaforma android 15 /91
  • 16. LIBRERIE E RUNTIME 1. Librerie esposte attraverso l’application framework 2. Android runtime: Dalvik Virtual Machine www.follow-app.it Introduzione alla piattaforma android 16 /91
  • 17. APPLICATION FRAMEWORK API di alto livello 1. Le applicazioni native Android e quelle di terze parti utilizzano le stesse API. www.follow-app.it Introduzione alla piattaforma android 17 /91
  • 18. APPLICAZIONI MOBILE Sono di due Tipi 1. Web app: girano in un web browser: scritte in HTML, JavaScript, Flash, etc. 2. Native: Compilate per essere eseguite sul dispositivo www.follow-app.it Introduzione alla piattaforma android 18 /91
  • 19. APPLICAZIONI NATIVE ANDROID 1. Scritte in Java utilizzando la sdk ufficiale distribuita da google – Non supporta tutte le librerie Java come ad esempio Swing & AWT 2. Il codice java è compilato in byte code Dalvik (.dex) – Ottimizzati per i dispositivi mobili (migliore gestione della memoria e delle risorse, utilizzo della batteria , etc.) 3. La Dalvik virtual machine esegue i files .dex www.follow-app.it Introduzione alla piattaforma android 19 /91
  • 20. Struttura di un app android e tool di sviluppo INTRODUZIONE ALLA PROGRAMMAZIONE ANDROID www.follow-app.it Struttura di un app android e tool di sviluppo 20 /91
  • 21. COMPONENTI BASE DI UN APP 1. Activities 2. View e ViewGroups 3. Service 4. Intent 5. Broadcast Receiver 6. ContentProvider www.follow-app.it Struttura di un app android e tool di sviluppo 21 /91
  • 22. ACTIVITIES 1. Componenti base di un applicazione android. Un activity è una schermata mostrata all’utente. 2. Un app android deve avere almeno un activity ma può averne più di una che si alternano durante l’esecuzione dell’applicazione www.follow-app.it Struttura di un app android e tool di sviluppo 22 /91
  • 23. VIEW E VIEWGROUPS 1. Le view sono I controlli utenti che costituiscono le user interface( bottoni, campi di testo, label, …) . Sono classi che estendondo android.view.View. Views 2. I viewgroups sono contenitori di view , servono per organizzare e impaginare i controlli utenti ( le view). Sono classi che estendono android.view.ViewGroups. ViewGroup www.follow-app.it Struttura di un app android e tool di sviluppo 23 /91
  • 24. SERVICES 1. Eseguono operazioni in background che non richiedono l’interazione diretta dell’utente: es. Musica in sottofondo, scaricamento di un file, tracking della posizione dell’utente. 2. I servizi non hanno user interface www.follow-app.it Struttura di un app android e tool di sviluppo 24 /91
  • 25. INTENT 1. E’ un messaggio asincrono di sistema che si compone di un azione da eseguire e dei dati. 2. Può essere esplicito o inplicito in quest’ultimo caso il sistema individua il componente che può eseguire tale azione (Intent Receiver) e la esegue. 3. Un applicazione si abilita alla registrazione di un particolare intent dichiarando un IntentFilter www.follow-app.it Struttura di un app android e tool di sviluppo 25 /91
  • 26. INTENT 2 Un intent può essere usato per: 1. esplicitare un compito o azione che una Activity o un Service possono eseguire solitamente con o su un particolare insieme di dati; 2. lanciare una particolare Activity o Service; 3. supportare l'interazione tra qualsiasi applicazione installata sul dispositivo Android, senza doversi preoccupare di che tipo di applicazione sia o di quale componente software gli Intent facciano parte. www.follow-app.it Struttura di un app android e tool di sviluppo 26 /91
  • 27. INTENT EXAMPLE:IMAGE SHARING www.follow-app.it Struttura di un app android e tool di sviluppo 27 /91
  • 28. BROADCAST RECEIVER 1. Un app registra un broadcast receiver che e’ configurato per ricevere e gestire determinati messaggi di sistema e intent. 2. Un app può anche definire dei propri intent custom. www.follow-app.it Struttura di un app android e tool di sviluppo 28 /91
  • 29. ANDROID SECURITY 1. Ogni app in android gira nel proprio processo associata ad un user ( di sistema) e ad un gruppo univoco 2. Ogni app è quindi isolata dalle altre e non può accedere ai dati delle altre app. 3. L’unico modo di condividere dati tra applicazioni è dichiarare esplicitamente un content provider. www.follow-app.it Struttura di un app android e tool di sviluppo 29 /91
  • 30. CONTENT PROVIDER Il sistema operativo mette a disposizione una serie di content provider nativi. http://developer.android.com//reference/android/pro vider/package-summary.html. Es. 1. Il database dei contatti 2. I contenuti multimediali (audio, video , foto) www.follow-app.it Struttura di un app android e tool di sviluppo 30 /91
  • 31. STRUTTURA DI UN PROGETTO ANDROID www.follow-app.it Struttura di un app android e tool di sviluppo 31 /91
  • 32. ANDROID MANIFEST <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="it.gmarz83.android.temperatura" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Convert" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="9" /> <uses-permission android:name="android.permission.INTERNET "> </uses-permission> </manifest> www.follow-app.it Struttura di un app android e tool di sviluppo 32 /91
  • 33. ANDROID MANIFEST -PERMISSION <uses-permission android:name="android.permission.INTERNET "> Tra i principali permessi che possiamo richiedere ci sono i seguenti: 1. READ_CONTACTS: leggere (ma non scrivere) i dati dei contatti dell'utente. 2. WRITE_CONTACTS: scrivere (ma non leggere) i dati dei contatti dell'utente 3. RECEIVE_SMS: monitorare l'arrivo di messaggi SMS 4. INTERNET: accedere ed utilizzare la connessione Internet 5. ACCESS_FINE_LOCATION: utilizzare un accurato sistema di localizzazione come il GPS http://developer.android.com/reference/android/Manifest.permission.html www.follow-app.it Struttura di un app android e tool di sviluppo 33 /91
  • 34. STRUTTURA DI UN PROGETTO ANDROID www.follow-app.it Struttura di un app android e tool di sviluppo 34 /91
  • 35. CARTELLA ASSETS 1. contiene risorse esterne necessarie all’applicazione (file audio, video, etc) www.follow-app.it Struttura di un app android e tool di sviluppo 35 /91
  • 36. STRUTTURA DI UN PROGETTO ANDROID www.follow-app.it Struttura di un app android e tool di sviluppo 36 /91
  • 37. CARTELLA DRAWABLE (RES) 1. Contiene I file immagine che saranno utilizzati all’interno dell’app( compresa l’icona dell’applicazione) www.follow-app.it Struttura di un app android e tool di sviluppo 37 /91
  • 38. STRUTTURA DI UN PROGETTO ANDROID www.follow-app.it Struttura di un app android e tool di sviluppo 38 /91
  • 39. CARTELLA LAYOUT (RES) 1. Contiene I file di layout delle schermate della nostra app. 2. Ogni schermata avrà il suo file di layout( ossia l’impaginazione della schermata). 3. Il layout può essere definito anche da codice, ma è preferibile utilizzare l’xml perchè disaccoppia la logica dalla definizione della user interface www.follow-app.it Struttura di un app android e tool di sviluppo 39 /91
  • 40. STRUTTURA DI UN PROGETTO ANDROID www.follow-app.it Struttura di un app android e tool di sviluppo 40 /91
  • 41. CARTELLA VALUES (RES) 1. Contiene file xml che definiscono risorse utilizzabili all’interno dell’applicazione 2. Es. Il file delle stringhe. www.follow-app.it Struttura di un app android e tool di sviluppo 41 /91
  • 42. CARTELLA VALUES (STRING.XML) <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Nome App</string> </resources> <application android:icon="@drawable/icon" android:label="@string/app_name"> www.follow-app.it Struttura di un app android e tool di sviluppo 42 /91
  • 43. STRUTTURA DI UN PROGETTO ANDROID www.follow-app.it Struttura di un app android e tool di sviluppo 43 /91
  • 44. CARTELLA GEN 1. Contiene un file R.java generato automaticamente da eclipse( non bisogna modificarlo). 2. In questo file a ciascuna risorsa definita nella cartella Res( immagini, stringhe, view contenute nei layout ) è associato un id univoco mediante il quale si può accedere. 3. Es. Per accedere alla stringa app_name: 4. getString(R.string.app_name));. www.follow-app.it Struttura di un app android e tool di sviluppo 44 /91
  • 45. STRUTTURA DI UN PROGETTO ANDROID www.follow-app.it Struttura di un app android e tool di sviluppo 45 /91
  • 46. CARTELLA SRC 1. Contiene i file sorgente della nostra applicazione www.follow-app.it Struttura di un app android e tool di sviluppo 46 /91
  • 47. ACTIVITY LIFECYCLE www.follow-app.it Struttura di un app android e tool di sviluppo 47 /91
  • 48. LABORATORIO 1. App multidevice 2. Hello word 3. Intent tutorial 4. Editor di note 5. Location Manager e Google Map tutorial www.follow-app.it 48 /91
  • 49. APP MULTIDEVICE 1. I dispositivi android hanno una moltitudine di dimensioni , risoluzioni , e densità 2. La densità è il numero di pixel per pollice calcolato sulla diagonale. www.follow-app.it Laboratorio 49 /91
  • 50. CLASSIFICAZIONE DEVICE Fonte : http://developer.android.com (Feb 2012) www.follow-app.it Laboratorio 50 /91
  • 51. LA SOLUZIONE 1. Usare wrap_content, fill_parent, e l’unità di misura dp per impostare le dimenzioni nei file di layout XML 2. Non usare mai misure in pixel hard coded nelle app 3. Non usare l’ absoluteLayout ( che è deprecato) 4. Inserire repliche della stessa immagine per ogni densità 5. Testare l’app usando gli emulatori 6. Approfondimento:http://docs.huihoo.com/android/2.2/ guide/practices/screens_support.html www.follow-app.it 51 /91
  • 52. LA SOLUZIONE: DPI 1. DPI = Density Indipendent Pixel ossia un unità di misura dello schermo indipendente dalla densità 2. 1 pixels = DP(density pixel) * (DPI(densità) / 160). 3. Indipendentemente dalla dimensione e della densità dello schermo il density pixel occupa sempre lo stesso spazio www.follow-app.it Laboratorio 52 /91
  • 53. LA SOLUZIONE: SCALARE LE IMMAGINI 1. 3:4:6:8 è il rapporto tra le 4 densità. 2. Se ho un immagine di 100px e la risoluzione base è mdpi(160 dpi che corrisponde al rapporto 4) si ottiene: • ldpi: 75 × 75, cioè 3/4 della risoluzione base (100 * 3 / 4 = 75); • mdpi: 100 × 100; • hdpi: 150 × 150, cioè una volta e mezzo la risoluzione base (100 * 6 / 4 = 100 * 3 / 2 = 100 * 1,5 = 150); • xhdpi: 200 × 200, cioè il doppio della risoluzione base (100 * 8 / 4 = 100 * 2 = 200) a queste risoluzioni dovrebbe corrispondere Google TV, non gli smartophones. www.follow-app.it Laboratorio 53 /91
  • 54. EMULATORI 1. QVGA (240x320, low density, small screen) 2. HVGA (320x480, medium density, normal screen) 3. WVGA800 (480x800, high density, normal screen) 4. WVGA854 (480x854 high density, normal screen) www.follow-app.it Laboratorio 54 /91
  • 55. INTENT ESPLICITO 1. Si tratta di un utilizzo dell’oggetto Intent nel quale si esplicita l’oggetto che si vuole richiamare : Intent i = new Intent(this, ActivityTwo.class); i.putExtra("Value1", "This value one for ActivityTwo "); i.putExtra("Value2", "This value two ActivityTwo"); www.follow-app.it Laboratorio 55 /91
  • 56. INTENT IMPLICITO 1. L’intent implicito non specifica una classe Java bensì un azione e opzionalmente un uri associata all’azione. Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://gmarz83.altervista.org")); 2. Android individua quale componente è registrato per gestire tale azione 3. Se individua un solo componente, esegue l’azione se ce n’è più di uno un dialog chiede all’utente verso quale componente dirigire l’azione www.follow-app.it Laboratorio 56 /91
  • 57. TRASFERIMENTO DATI 1. Intent espliciti o impliciti posso contentere extra dati Intent sharingIntent = new Intent(Intent.ACTION_SEND); sharingIntent.setType("text/plain"); sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, " allegato!"); startActivity(Intent.createChooser(sharingIntent,"condividi" )); www.follow-app.it Laboratorio 57 /91
  • 58. TRASFERIMENTO DATI 2 1. Il componente che riceve l’intent estrae i dati così Bundle extras = getIntent().getExtras(); if (extras == null) { return; } String value1 = extras.getString(Intent.EXTRA_TEXT); if (value1 != null) { // fai qualcosa} www.follow-app.it Laboratorio 58 /91
  • 59. CHIAMARE ACTIVITY CON RISULTATO Intent i = new Intent(this, ActivityTwo.class); i.putExtra("Val1", “valore 1"); i.putExtra("Val2", “valore 2"); startActivityForResult(i, REQUEST_CODE); www.follow-app.it Laboratorio 59 /91
  • 60. CHIAMARE ACTIVITY CON RISULTATO 2 @Override public void finish() { Intent data = new Intent(); data.putExtra("returnKey1", "risultato1"); data.putExtra("returnKey2", "risultato2"); setResult(RESULT_OK, data); super.finish(); } www.follow-app.it Laboratorio 60 /91
  • 61. CHIAMARE ACTIVITY CON RISULTATO 3 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) { if (data.hasExtra("returnKey1")) { Toast.makeText(this, data.getExtras().getString("returnKey1"), Toast.LENGTH_SHORT).show(); } } } www.follow-app.it Laboratorio 61 /91
  • 62. INTENT FILTER 1. Un componente si registra e si abilita alla ricezione di determinati intent attraverso la definizione di un intent filter , che avviene nel manifest.xml <activity android:name=".BrowserActivitiy" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="http"/> </intent-filter> </activity> www.follow-app.it Laboratorio 62 /91