Dive into Android - GDG Bari

Preview:

DESCRIPTION

Durante il Makers start-up bootcamp in Fiera del Levante, una panoramica sulle potenzialità di Android

Citation preview

Dive into AndroidFrancesco Saverio Giordano

fs.giordano@gmail.com

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