Mettiti comodo

ottobre 2nd, 2010

Se tutti facessero cosi’ avremmo istantaneamente la meta’ dei parcheggi disponibili. Chissa se questo furbacchione s’e’ mai interrogato sul suo modo di agire…


Nasce Android Gears

ottobre 1st, 2010

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


Dalle nostre parti…

agosto 25th, 2010

… le giornate finiscono cosi’:

tramonto

(anticipo i pignoli polemici: la maglietta Java e’ del tutto casuale… almeno al mare dovro’ consumarle tutte le magliette che mi hanno regalato alle conferenze!!!!).

Posted in Java, Personale | 6 Comments

Strolghino di culatello

agosto 12th, 2010

Da tempo volevo pubblicare questo post, ma avevo miseramente perso le immagini. Finalmente le ho ritrovate, dunque… facciamo posto allo Strolghino di culatello, ovvero un salame molto particolare che ho trovato qualche mese fa al supermarket dove solitamente compro gli alimentari.

La particolarita’ di questo salame, peraltro particolarmente saporito, deriva dalla sua storia e dal fatto che non e’ facile trovarlo nella grande distribuzione. Per la decrizione, lascio la parola all’etichetta che trovate qui sotto:

Posted in Cucina | 7 Comments

C’e’ un motivo…

agosto 10th, 2010

… se tante persone desiderano passare le vacanze in Sardegna:

Sardegna (Arborea)

e’ l’isola piu’ bella del mondo e certi profumi li senti solo qui, certi colori li vedi solo qui….

(si, lo so, sono un attimo campanilista…)

Posted in Personale | 8 Comments

Statistiche device Android a fine luglio 2010

agosto 7th, 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:


Programmazione estrema

agosto 5th, 2010

Questo sviluppatore, sfruttando il design del Magic Trackpad, ha deciso di usare ben DUE tastiere per scrivere piu’ velocemente il codice…

Posted in Mobile, iPhone | 2 Comments

Primo contatto con l’iPhone 4

luglio 30th, 2010

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

luglio 13th, 2010

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.


Android 2.x copre il 50% della base installata

giugno 17th, 2010

Ci sono voluti 6 mesi, ma finalmente Android 2.x copre il 50% della base installata dei terminali Google. Il problema e’ che nel mercato vengono ancora venduti molti terminali 1.x (con la vaga promessa di aggiornamenti a 2.x…). Ecco il grafico aggiornato:


« Pagina precedentePagina successiva »