Archivi categoria: Java

Statistiche device Android a fine luglio 2010

Google ha appena pubblicato i dati sulla diffusione delle diverse versioni di Android aggiornati alla fine di luglio 2010 (ricordo che queste informazioni sono pubblicate con cadenza bisettimanale all’indirizzo http://developer.android.com/intl/fr/resources/dashboard/platform-versions.html).

Questa l’istantanea della distribuzione:

E’ interessante notare che Eclair (Android 2.1) abbia praticamente raggiunto il 60% del mercato e che la Froyo (Android 2.2) cominci ad apparire significativamente (oltre il 4%). Poiche’ in autunno e’ previsto l’aggiornamento dei terminali piu’ recenti dei manufacturer piu’ importanti (per l’Europa penso a Motorola Milestone, HTC Wildfire/legend/Desire, Samsung GalaxyS/Corby), quest’ultima percentuale e’ destinata a crescere. E’ importante notare infine che Android 1.x copre ancora il 35% del mercato: poiche’ difficilmente quei terminali saranno aggiornati e soprattutto con poca probabilita’ i loro possessori, che hanno affrontato l’acquisto nei mesi scorsi, ne compreranno uno nuovo a breve, la base installata di Cupcake e Donut avra’ una certa importanza ancora per parecchi mesi.

In chiusura, ecco il grafico comulativo con tutti i dati via via pubblicati da Google nei mesi scorsi:

Primo contatto con l’iPhone 4

Grazie al caro Roberto Fraboni, stamattina ho potuto provare l’iPhone 4 appena disponibile in Italia. Ovviamente ci vuole tempo per poter valutare il prodotto (e verificare il leggendario problema di ricezione), ma una cosa e’ certa: il display e’ assolutamente spettacolare, i pixel non sono visibili ad occhio nudo e i testi sembrano stampati con qualita’ tipografica. Anni luce rispetto alla concorrenza. E l’effetto e’ ancora piu’ evidente sui componenti grafici, come i pulsanti, i bordi delle frecce e tutti quei tratti obliqui che soffrono di imperfezioni sui display tradizionali. Ora che il limite del’occhio umano e’ stato raggiunto, non resta che perfezionare colore, luminosita’ e riflessioni.

Il confronto con il Motorola Milestone e’ interessante: l’alta risoluzione del terminale Android non e’ comunque sufficiente ad eguagliare la qualita’ dell’iPhone.

Infine, la Divina Commedia (progettata per l’iPhone 3G…) si vede perfettamente sull’iPhone 4 ed e’ spettacolare la qualita’ del testo.

Sulla frammentazione Android

Molti l’avevano previsto, alcuni hanno fatto finta di non vederla, Google l’ha negata con tutte le sue forze, ma alla fine e’ arrivata: la frammentazione della piattaforma Android.

Lasciando perdere la prima release e la versione 1.1 (ormai abbandonata in tutto il mondo, tranne che sugli HTC Dream venduti da TIM), la giostra delle versioni vede il succedersi della Cupcake (1.5), Donut (1.6), Eclair (2.0, 2.0.1 e 2.1) e Froyo (2.2). La 1.5 rappresenta un netto miglioramento di prestazioni rispetto alla 1.1 ed ha introdotto gli App Widget. La 1.6 ha visto il supporto a risoluzioni diverse dalla 320×480. La 2.0 ha introdotto multitouch, Bluetooth e tante cosette belline, facendo la sua comparsa sul Motorola Droid/Milestone e ricevendo una toppa al volo con la 2.0.1. Arriva poi il Nexus One, che porta in dote la 2.1, che tra le altre novita’ ha portato i Live Wallpaper. Finche’ si arriva al maggio di quest’anno, con la 2.2 per ora disponibile ufficialmente solo per il Nexus One.

Il primo problema e’ arrivato con il passaggio dalla 1.5 alla 1.6: la gestione delle risorse, infatti, ha richiesto il suffisso -v4 per fare in modo che il runtime 1.5 non si “perdesse” tra le risorse organizzate per diverse risoluzioni dello schermo. Dalla 1.6 alla 2.x sono arrivate tante nuove API, alcune hanno semplicemente cambiato package (di veda il caso Telephony). E anche dalla 2.0/2.1 alla 2.2 sono cambiate diverse cose, tant’e’ che il team di Google ha dovuto pubblicare ben tre articoli sul blog dedicato agli sviluppatori per salvaguardare portabilita’ e compatibilita’:

Backward Compatibility for Applications
http://developer.android.com/intl/zh-TW/resources/articles/backward-compatibility.html

Android Compatibility
http://developer.android.com/intl/zh-TW/guide/practices/compatibility.html

On Android Compatibility
http://android-developers.blogspot.com/2010/05/on-android-compatibility.html

Anche loro si sono trovati nella condizione di scrivere un’applicazione d’esempio che funzionava solo sulla 2.2:

“Several weeks ago we took a look at how to handle multitouch on Android 2.0 (Eclair) and above, and by the end we had a simple demo app. That app uses features exclusive to Android 2.2 (Froyo) which as of this writing hasn’t had a chance to reach many devices yet.”

How to have your (Cup)cake and eat it too
http://android-developers.blogspot.com/2010/07/how-to-have-your-cupcake-and-eat-it-too.html

Personalmente sono giunto a questa conclusione: non potendo trascurare la base installata di terminali 1.5/1.6 (alcuni dei quali sono ancora in vendita, vedi il LinkMe o il Magic, e non saranno mai aggiornati ad una 2.x) ma volendo allo stesso tempo guardare al futuro, puo’ avere senso fare DUE versioni diverse della stessa applicazione, una per Android 1.x e una per Android 2.x, avendo cura poi, su ciascuna build, di gestire le differenze intrinseche di ciascun subset (dunque la differenza tra 1.5 e 1.6 e tra le varie 2.x). E’ senz’altro uno sforzo considerevole, ma sarebbe comunque inutile avere uno spaghetti code che tenga conto di tutte le differenze, delle eccezioni di questa o quell’altra piattaforma. Questo e’ ancora piu’ vero quando si usano API particolari, come quella per il Bluetooth (ufficiale su Android 2.x, disponibile come progetto indipendente per Android 1.x). Non ultimo, i device 2.x hanno una maggiore quantita’ di memoria per singolo processo (solitamente 24MB al posto dei soliti 16MB) e dunque si possono usare strategie diverse nella gestione della memoria. A tendere, la versione 1.x sfumera’, mentre quella 2.x potra’ essere consolidata per far spazio alle nuove feature della piattaforma. Non dimentichiamo, infatti, che Gingerbread (3.0) e’ dietro l’angolo.

Poiche’ Android distingue le applicazioni in base al package name, ho deciso di lavorare in questo modo:

– la versione per Android 1.x ha package del tipo

com.qualcosa.qualcosaltro.NOME_APPLICAZIONE.android1

e nel Manifest e’ presente una dichiarazione che vincola SDK minimo e massimo:

<uses-sdk android:minSdkVersion=”3″ android:maxSdkVersion=”4″/>

– la versione per Android 2.x ha package del tipo:

com.qualcosa.qualcosaltro.NOME_APPLICAZIONE

(oppure com.qualcosa.qualcosaltro.NOME_APPLICAZIONE.android2)

e nel Manifest e’ presente una dichiarazione che vincola SDK minimo e imposta il target alla versione piu’ recente:

<uses-sdk android:minSdkVersion=”5″ android:targetSdkVersion=”8″/>

Probabilmente non e’ la soluzione migliore per tutti i progetti, sicuramente altri sviluppatori avranno elaborato strategie piu’ efficaci e che non comportano la gestione di due progetti separati. A me semplifica la vita perche’ mi consente di isolare i due mondi Android, eventualmente decidendo che una feature per una versione non e’ disponibile sull’altra, specie se lo sforzo del porting e’ eccessivo.

Samsung Corby Smartphone GT-I5500: Android very entry level!

Ho avuto il piacere di provare in anteprima il nuovissimo Samsung Corby GT-i5500, smartphone equipaggiato con Android 2.1 recentemente annunciato nel nostro Paese (ne parlano, ad esempio, quelli di Androidiani http://www.androidiani.com/news/samsung-annuncia-il-corby-i5500-comunicato-stampa-11082). Si tratta del primo terminale con prezzo ufficiale inferiore ai 200 euro e ci sono buone possibilita’ che in breve tempo lo street price scenda ulteriormente.

Si tratta ovviamente di un terminale molto entry-level, ma a parte la risoluzione dello schermo (QVGA, 256×320, impossibile pretendere di piu’ in questa fascia di prezzo) e’ davvero notevole. Molto veloce, molto stabile, ottima sensibilita’ dello schermo. Samsung ha inserito alcune applicazioni extra, oltre alla normale dotazione dei terminali Android; la customizzazione piu’ interessante, pero’, e’ quella della notification bar: on top, prima delle notifiche, appaiono 4 pulsanti per controllo WiFi, Bluetooth, Vibrazione e Suoneria.

Come hanno gia’ detto in tanti, il vero successo di Android potrebbe arrivare proprio da questi terminali entry level (combattere iPhone 4 con i terminali attuali mi sembra una battaglia persa).

Ovviamente non poteva mancare un test con la Divina Commedia:

WHYMCA: pensieri a valle di una bella giornata

Scrivo queste note mentre sono in treno, di ritorno da WHYMCA 2010 (ma le ho completate a casa, con latte caldo e biscotti al cioccolato!).

Devo confessarlo: inizialmente ero in dubbio se presentare una proposta per questa conferenza, visto che avevo gia’ partecipato a Better Software questo mese (ogni tanto bisogna darsi un limite!). Poi, visto l’entusiasmo contagioso di Alfredo Morresi, ho realizzato che WHYMCA si stava configurando con un evento di quelli ai quali non bisogna mancare.

E ora che e’ finito mi dico: meno male che son venuto! 🙂

E’ stata una giornata estramamente interessante ed e’ stato bello passare ascoltare tanti talk interessanti e potersi confrontare con persone molto esperte e motivate. Come un Java Day, ma ovviamente non solo Java (c’era iPhone, c’era Flash…), ma tanto tanto mobile. Avrei voluto seguire piu’ talk, ma non e’ stato possibile: tra strette di mano con vecchi amici, cordialita’ con le nuove conoscenze e approfondimenti sul mio talk il tempo e’ davvero volato via! In particolare, avrei voluto seguire gli interventi su Flash, magari partecipando alla lunga sessione del caro Andrea Trento che non vedevo dal meeting JMDF di Bologna (non mi ricordo neppure che anno fosse!). Sono sicuro che non manchera’ occasione se, come credo, WHYMCA10 ha innescato un meccanismo virtuoso i cui frutti non tarderanno ad arrivare.

Con mia grande sorpresa, ho scoperto che tra i “mobilist” c’e’ tanto interesse per Bluetooth e per l’interfacciamento a sensori, e tante domande sono arrivate anche su QuadraSpace. Cosi’, dopo il talk, ho avuto il piacere di fare una piccola sessione demo con Android e Arduino incollati con il Bluetooth e mostrare un piccolo prototipo ad una piccola ma vivace platea. E fare questa presentazione pratica e informale mi ha fatto venire voglia di proporre, per la prossima conferenza, uno speech BREVE (magari mezzora) e una sessione di DEMO a parte un po’ piu’ LUNGA (diciamo un’ora). Ma se ne parla piu’ avanti, magari dopo un anno sabbatico…

Torniamo a WHYMCA. E’ stato un bell’evento, senza dubbio. Perfettibile, come ogni iniziativa che cresce rapidamente. E rispetto alla moltitudine di aspetti positivi, qualche neo (ad esempio, sono rimasto senza pizza!!!) passa decisamente in secondo piano. Merito di tutto questo va al team che ha organizzato tutto, curando tanti aspetti complessi. Io credo che l’intera comunita’ italiana degli sviluppatori mobile debba esprimere una energico e corale GRAZIE a questi ragazzi (Alfredo Morresi, Riccardo Bosio, Andrea Piovani e Paolo Sinelli), che hanno avviato qualcosa di cui c’era bisogno. Eventi come WHYMCA, fatti dagli sviluppatori per gli sviluppatori, sono una preziosissima occasione per imparare cose nuove, scambiare esperienze, fare nuove conoscenze, trovare spazi per nuove collaborazioni. E malgrado i presuntuosi ritengano che eventi del genere non servono a niente, “che tanto tutto cio’ che mi serve si trova in rete”, perdono la parte piu’ importante di questo mestiere che non e’ la mera risoluzione del singolo problema applicativo, ma piuttosto la crescita complessiva (per la fettina che gli spetta) della nostra economia e della nostra cultura, che si basa sulle relazioni e sulla creazione di un sistema. Perche’ dove non c’e’ scambio concredo non c’e’ cultura e non c’e’ economia. Sembrano cose banali e scontate, ma proprio perche’ le si considera tali, vengono sempre trascurate e mortificate.

Ora credo che sia utile meditare su un periodo sabbatico, in cui mandare avanti i progetti e lasciando nella polvere Keynote… A proposito: quelle che seguono sono le slide del talk di venerdi’.

Froyo e Android Market: interessanti novita’

Ho appena installato Android 2.2 “Froyo” (Frozen Yogurt) sul Nexus One e devo ammettere che la prima impressione e’ ottima. Il telefono e’ molto veloce e alcuni cambiamenti rendono decisamente piu’ piacevole l’utilizzo di questo sistema.

Si sentono molti pareri positivi su Android 2.2, forse quelli piu’ felici sono gli amanti di Flash. Il supporto su Froyo e’ ben fatto, ma siamo ancora lontani dalla perfezione. Ad esempio, eseguendo un’applicazione pesantuccia (la pagina dei premi del programma Vodafone One… ho provato quella perche’ spesso manda KO anche il PC!) il plug-in ha comportamenti strani. Ad ogni modo, si tratta ancora di una beta.

Cio’ che mi ha colpito di piu’ sono le modifiche all’Android Market e alla gestione delle applicazioni. Prima di tutto, e’ finalmente possibile installare le applicazioni sulla SD card, liberando prezioso spazio sul dispositivo. Tipiche applicazioni da installare sulla SD sono i giochi oppure gli e-book. Ho provveduto ad aggiornare la Divina Commedia, cosi’ da liberare quasi 2MB dalla memoria del sistema di coloro che vorranno installare l’applicazione sul Nexus One appena aggiornato.

Ecco come si presenta il nuovo Android Market sul telefono:

Come si vede, ora i commenti sono in tab separato, mentre le statistiche di voto e download non sono piu’ sul titolo.

Android 2.2 introduce la possibilita’ di avere l’aggiornamento automatico delle applicazioni. Peccato che nella localizzazione italiana l’opzione di autoaggiornamento abbia qualche problema di layout:

Nel pannello di configurazione delle applicazioni, ora e’ possibile vedere le applicazioni scaricate, quelle in esecuzione, tutte quelle installate sul sistema e quelle presenti nella SD.

Interessante constatare che la Divina Commedia, installata sulla SD card, occupa sul terminale poche decine di K: questa e’ un’ottima cosa!

Il pannello di gestione della singola applicazione consente poi di spostare avanti e indietro alla e dalla card SD:

Infine, un grande apprezzamento per il pannello di gestione delle applicazioni sul sito developer dell’Android Market: finalmente e’ possibile conoscere i crash avvenuti sui terminali degli utenti, con lo stack trace. Questo e’ grandioso! Siamo lontani dal contesto ideale, visto che non e’ possibile conoscere il nome del terminale in uso, ma e’ gia’ un primo passo. Qui sotto, ad esempio, si vedono i report di alcune NullPointerException avvenuti sull’applicazione Bluetooth Samples:

e il dettaglio su una di queste:

Il mio talk per Better Software 2010…

… e’ ormai pronto e le slide saranno disponibili su Slideshare dal prossimo 6 Maggio. Ecco l’abstract del mio intervento:


Il modello di distribuzione inaugurato dall’iPhone ha riscosso grandissimo successo tra gli utenti ed è stato rapidamente emulato da tutti gli altri produttori di smartphone. L’illusione che bastasse avere un application store per dare successo alla piattaforma e la speranza che bastasse avere un’applicazione qualsiasi sullo store per diventare ricchi ha deluso rispettivamente manufacturer e sviluppatori. Nonostante questo, l’interesse per questo settore è in continua crescita e sempre più utenti si aspettano strumenti potenti, completi e flessibili. Per cogliere le opportunità che questo mercato offrirà nel prossimo biennio è necessario, dunque, abbandonare l’approccio da “corsa all’oro” e rivedere la progettazione e l’offerta delle applicazioni per smartphone con atteggiamento razionale ed equilibrato. Questo intervento si propone di offrire alcuni spunti di riflessione sulle caratteristiche delle application store, sulle tipologie di applicazioni, sulla profonda varietà di utenza che può affacciarsi su questo mercato, soffermandosi principalmente sui fenomeni iPhone e Android.

Se partecipate alla conferenza, passate a salutarmi! 🙂