Archivi categoria: Mobile

Nasce Android Gears

Da tempo volevo avviare un regolare blogging su Android, per condividere esperienze sullo sviluppo per questo interessante sistema operativo. Alla fine, per un motivo o per un altro, non ci sono riuscito. Scrivere un articolo richiede tempo, che e’ la risorsa che scarseggia di piu’.

Se il blogging non e’ possibile, proviamo con il microblogging, ovvero con Twitter. 140 caratteri, non uno di piu’. In fondo va bene cosi’: condividere conoscenza ed esperienze non deve passare necessariamente per articoli chilometrici. Basta una keyword, un link, una nota. Questo e’ cio’ che gli sviluppatori si scambiano quotidianamente mentre scrivono codice. “Ti ricordi come si fa questo?”, “A te e’ capitato questo errore?”, “Hai letto quell’articolo?”, “Guarda questa classe: puo’ essere utile in tante situazioni”. Ecco, Android Gears vuole essere il mio modo di cinquettare quel che scopro, imparo, sviluppo su Android. Senza presunzione, senza grandi pretese: solo volonta’ di condividere, niente di piu’. Spero possa essere utile a tutti i colleghi e gli appassionati di sviluppo software.

Come “effetto collaterale”, vorrei che la sequenza di tweet costituisse una collezioni di tips da scorrere, come se fosse una guida: rileggendola tra 4 mesi, o magari tra un anno, vorrei che il lettore trovasse comunque informazioni interessanti (ammesso, ovviamente, che le cose non siano cambiate radicalmente su Android), senza informazioni inutili come “e’ stato annunciato il terminale 123 della PQR Corporation”, info utilissima oggi ma inutile fra un mese. Finche’ possibile, dunque, evitero’ dei “tweet di annuncio” (ad esempio, “e’ uscito il firmware XYZ per il terminale ABC), ma meno che non si tratti di cose molto importanti e strettamente legate all’attivita’ di sviluppo (ad esempio, “e’ stato rilasciato l’SDK per Google TV”).

Poiche’ il web non e’ un mare di isole ma di “posti connessi”, qualche tweet conterra’ anche link a risorse per gli sviluppatori. Per lo stesso motivo di cui sopra, evitero’ segnalare link ben noti e scontati, ma segnalero’ quelli piu’ particolari o esoterici (ad esempio, come far funzionare ADB per un certo terminale ribelle).

That’s all, ho scritto fin troppo.

Se volete, potete seguirmi su http://twitter.com/androidgears

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:

Divina Commedia in crescita su App Store

Ad inizio di quest’anno ho presentato le statistiche dei download della Divina Commedia per iPhone e Android; la settimana scorsa ho presentato e commentato quei risultati (insieme ad altri, ovviamente!) a Better Software 2010 (trovate le slide su slideshare).

Durante il weekend ho ripreso i report dell’App Store relativi ai primi mesi del 2010, per confrontarli con l’andamento dello scorso anno. Ho lasciato fuori le statistiche Android, dato che il cumulativo Android 2009-2010 e’ inferiore ad un singolo mese iPhone. Magari lo introdurro’ nuovamente a fine anno.

Il grafico qui sotto e’ eloquente: 15% in piu’ a gennaio, 126% in piu’ a febbraio, 132% in piu’ a marzo, mentre ad aprile c’e’ stato un calo del 17% (significativo in senso assoluto, ma essendo riferito all’aprile 2009, che fu un mese eccezionale, puo’ essere considerato modesto); mediamente l’incremento e’ del 64%.