dive into android - gdg bari
DESCRIPTION
Durante il Makers start-up bootcamp in Fiera del Levante, una panoramica sulle potenzialità di AndroidTRANSCRIPT
Dive into AndroidFrancesco Saverio Giordano
About me
● Pescarese/Barlettano, 24 anni
● Programmatore da 12 anni
(Android da 3 anni)
● Membro GDG
● Socio QIRIS e Senior developer Intact
Overview
Breve introduzione ad AndroidUn po' di storia e strumenti base (SDK e ADT)
DesignAndroid User Interface e app multidispositivo
SviluppoLe basi per creare un'applicazione
DistribuzioneGoogle Play Store e Developer Console
Breve introduzione ad Android
Riassunto delle puntate precedentiAndroid Inc. è stata fondata nell'ottobre 2003 da Andy Rubin, Rich Miner, Nick Sears e Chris White per lo sviluppo di quello che Rubin definì « [...] dispositivi cellulari più consapevoli della posizione e delle preferenze del loro proprietario».
Nel 2005 l'azienda è stata acquisita da Google e inizia lo sviluppo del sistema operativo Android basato su Linux.
Android 1.0Viene rilasciato il 23 settembre 2008 con l'HTC Dream.Gmail, Google Maps, Search, Talk e Contacts.
Android 1.5 CupcakeIl 30 aprile 2009 viene rilasciata Cupcake.Il robottino si fa "dolce".
Android 1.6 DonutRilasciato il 15 settembre 2009, Donut include aggiornamenti per sintesi e ricerca vocale.
Riassunto delle puntate precedentiAndroid 2.0 EclairEclair viene rilasciato il 26 ottobre 2009. La fotocamera diventa funzionale e fanno la loro comparsa multi touch e live wallpaper.
Android 2.2 FroyoGoogle rilascia Froyo il 20 maggio 2010 migliorando drasticamente le prestazioni del sistema e aggiungendo il thethering
Android 2.3 GingerbreadGingerbread è stato rilasciato il 6 dicembre 2010. Viene migliorata la gestione energetica, aggiornata la UI e aggiunta la tecnologia NFC.Le API 10 sono supportate dal 96.1% dei dispositivi in circolazione ed è il miglior compromesso per sviluppare applicazioni fruibili da tutti.
Riassunto delle puntate precedenti
Android 3.0 HoneycombHoneycomb, rilasciato il 19 ottobre 2011, è il sistema pensato e ottimizzato per i tablet.Nascono "Holo", la UI attualmente in uso sui dispositivi di ultima generazione, ed il supporto ai processori multi-core.
Fino all'uscita di Jelly Bean, Android 2.3 Gingerbread e 3.0 Honeycomb viaggiano parallelamente.
Riassunto delle puntate precedentiAndroid 4.0 Ice Cream SandwichIl panino gelato di Google viene rilasciato il 19 ottobre 2011. Sebbene "Holo" sia sempre presente, la UI viene completamente riprogettata e introdotto Roboto, il nuovo font di sistema.Vengono introdotte un quintale di nuove funzioni e miglioramenti: pulsanti virtuali, launcher personalizzabile, app di sistema aggiornate, screenshots (prima occorreva il root), dettatura in tempo reale, face unlock, fotocamera migliorata, integrazione contatti con i social network.Le API 14 di Android 4.0 Ice Cream Sandwich sono supportate dal 63% dei dispositivi.
Android 4.1 Jelly BeanJelly Bean viene rilasciato il 9 luglio 2012 ed è la versione di Android più longeva e attualmente più utilizzata (34%).A colpire non sono le novità, ma la innumerevole quantità di miglioramenti: dalla CPU alle gestures, dalla condivisione al NFC, dal Play Store a Google Now.Viene definitivamente abbandonato Adobe Flash.Le versioni 4.2 e 4.3 avranno lo stesso nome.
Nella prossima puntata...
Android 4.4 KitKatRilascio previsto: ottobre 2013
Gli strumenti
● Eclipse standard (4.3)http://www.eclipse.org/downloads/
● Java SE Development Kit ¹ (JDK, 7u40)http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
● Java Runtime Environment (JRE, 7u40)http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html
● Android Software Development Kit (SDK, 22.2.1)http://developer.android.com/sdk/index.html > Download for other platforms
● Android Development Tools for Eclipse (ADT, 22.2.1)http://developer.android.com/sdk/installing/installing-adt.html
¹ utenti linux: disinstallare, se presente, OpenJDK e OpenJRE
Android ADT
UI designer di Android ADT
Le risorse indispensabili
● Android resource websitehttp://developer.android.com oppure http://d.android.com
● Android developers grouphttp://groups.google.com/group/android-developers
● Stack overflowhttp://www.stackoverflow.com
Design
Android User Interface
L'interfaccia utilizzata in Android si chiama
Holo
Android User Interface
1. Status bar (notifiche e stato del telefono)2. Navigation bar (tasti virtuali quando non ci sono i fisici)3. Combined bar (status + navigation)
Android User Interface
Elementi tipici di una schermata:
1. Action bar per interagire facilmente con l'app
2. View control* per navigare tra le schermate
3. Content area 4. Split action bar con azioni aggiuntive
importanti
* Nelle app più recenti è disponibileanche il Navigation drawer
Android User InterfaceIl navigation drawer è simile al view control ma si apre lateralmente
oppure trascinando lo schermo dal bordo sinistro verso destra
1. Icona dell'app2. View control3. Pulsanti di azione4. Altre azioni
Android User Interface
View control vs. Navigation drawer
Android User InterfaceLibero sfogo alla fantasia!
Android User InterfaceRisorse utili:http://developer.android.com/design/downloads/index.html
Un'applicazione, tanti dispositivi
Premessa: al 21 settembrei dispositivi supportati nelPlay Store sono...
Obiettivo: rendere disponibile la nostra app per tutti i dispositivi
Un'applicazione, tanti dispositivi
Premessa: al 21 settembre i dispositivi supportati nel Play Store sono 3.833.
Obiettivo: rendere disponibile la nostra app per tutti i dispositivi
Problema: ogni dispositivoha un display con unadiversa risoluzionee densità (dpi)
Un'applicazione, tanti dispositivi
Density-independent pixel (dip): ogni pixel viene scalato automaticamente in base alla densità del display.
Android permette la definizione di più versioni di ogni immagine per adattarsi ai vari display
Un'applicazione, tante categorie
● small● medium● large● xlarge
● mdpi● xdpi● xhdpi● xxhdpi
● land● port
● sw600dp
Tutte queste categorie di display possono essere combinate nella cartella drawable(drawable-mdpi-large)
Sviluppo
Il "manifesto"
Ogni app ha almeno un file manifest.xml che definisce tutte le specifiche e i requisiti dell'applicazione.
Nel manifest vengono indicati:
● Dettagli generici dell'app<application android:icon="@drawable/app_icon">
● Tutti i componenti definiti<activity> , <service> , <provider> , <receiver>
● Le interazioni delle activities con altre app<item-filter> <action android:name="android.intent.action.SEND" /></item-filter>
● Tutti i permessi richiesti<uses-permission android:name="android.permission.INTERNET" />
● Tutti i requisiti dei dispositivi<uses-sdk android:minSdkVersion="8" />
Le activities
Activity
Rappresenta una singola schermata con una precisa interfaccia utente.
Nota tecnica: il Fragment
Rappresenta una porzione di interfaccia utente di un'activity
Le activities
Un'activity principalecon 4 fragments:ultime notizie,foto,mappa,lista contatti
Una seconda activity con il testo completo di una notizia o un modulo di contatto
Una terza activity con una galleria fotografica
Le activities
Non è detto che in ogni applicazione ci sia sempre almeno un'activity...
Per avviare un'activity si usa il seguente blocco:Intent intent = new Intent(this, SignInActivity.class);startActivity(intent);
... è possibile passare dei parametri (Extra):Intent intent = new Intent(Intent.ACTION_SEND);intent.putExtra(Intent.EXTRA_EMAIL, recipientArray);startActivity(intent);
... oppure chiederne un risultato:Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);startActivityForResult(intent, PICK_CONTACT_REQUEST);
protected void onActivityResult() {...}
per terminare un'activity, si usa finish();
Avviare un'activity
Il ciclo di vita di un'activityOgni activity esegue sequenzialmente gli stati indicati dal diagramma.Ad ogni stato è possibile definire determinate azioni.
Per esempio...onCreate: recupera dati salvati nel sistema e carica il layoutonResume: in un cronometro fa partire il tempo o lo aggiorna quando l'app torna dal backgroundonPause: salva dati temporanei nel sistema che possono essere recuperati onResume
onDestroy e onRestart sono gli unici stati che potrebbero non essere chiamati.
Altri componenti di un'applicazione
Service
È un componente eseguito in background che esegue operazioni schedulate o lunghe oppure per sincronizzare un server remoto.
Un servizio non ha interfaccia utente.
Content provider
Gestisce una serie condivisa di dati di un'applicazione. È possibile salvare dati nel sistema, in un db SQLite, sul web o in qualunque posizione dove l'applicazione ha i permessi di accesso.
Broadcast receiver
È un componente che risponde a chiamate broadcast del sistema(esempio: caricabatteria collegato, wi-fi acceso, batteria al 10%, ecc.).
Le preferences si usano per salvare nella memoria del dispositivo coppie di variabili chiave-valore per poter essere successivamente riutilizzate (preferenze, variabili condivise, preferiti, ecc.).
Si dividono in:
● Preferences che sono salvate in un unico file● SharedPreferences sono salvate in un file il cui nome è definito
dall'utente (utili per salvare più file di preferenze)
Le preferences
Per salvare una preferenza:SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt("HighScore", newHighScore);
editor.commit();
Per leggere una preferenza:SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = 0;
long highScore = sharedPref.getInt("HighScore", defaultValue);
Le preferences
Distribuzione
Per pubblicare sul Play Store occorre innanzitutto una registrazione come sviluppatore all'indirizzo https://play.google.com/apps/publish/ e pagare una fee di 25 $ una volta sola.
Dopo una breve verifica si potrà accedere alla Google Play Developer Console
Google Play Developer Console
Nella Google Play Developer Console è possibile configurare la promozione delle applicazioni, visualizzare statistiche, commenti e segnalazioni di arresti anomali
Google Play Developer Console
Grazie per l'attenzione!Vi aspetto sulla pagina GDG Bari!
http://goo.gl/PO5SO5