<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Rainbowbreeze &#187; Android</title>
	<atom:link href="http://www.rainbowbreeze.it/tag/android/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rainbowbreeze.it</link>
	<description>Alfredo Morresi personal website</description>
	<lastBuildDate>Sat, 28 Jan 2012 10:56:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Tethering dallo smartphone, ecco come gli operatori telefonici possono scoprirlo</title>
		<link>http://www.rainbowbreeze.it/tethering-dallo-smartphone-ecco-come-gli-operatori-telefonici-possono-scoprirlo/</link>
		<comments>http://www.rainbowbreeze.it/tethering-dallo-smartphone-ecco-come-gli-operatori-telefonici-possono-scoprirlo/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 08:07:16 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tethering]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1355</guid>
		<description><![CDATA[Molte delle promozioni per la navigazione web dal proporio smartphone precisano che l&#8217;accesso ad Internet e&#8217; consentito *solo dal device*, e non attaccando il device ad un computer attraverso il tethering (wifi o usb). Mi sono sempre chiesto come facessero i carrier a capire quando stavo navigando nell&#8217;uno o nell&#8217;altro modo, e grazie a questo [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2012/01/android_tethering2.jpg"><img class="alignleft size-full wp-image-1357" style="margin-top: 2px; margin-bottom: 2px; margin-left: 4px; margin-right: 4px;" title="android_tethering2" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2012/01/android_tethering2.jpg" alt="" width="240" height="155" /></a>Molte delle promozioni per la navigazione web dal proporio smartphone precisano che l&#8217;accesso ad Internet e&#8217; consentito <strong>*solo dal device*</strong>, e non attaccando il device ad un computer attraverso il tethering (wifi o usb). Mi sono sempre chiesto come facessero i carrier a capire quando stavo navigando nell&#8217;uno o nell&#8217;altro modo, e grazie a <a title="New ClockworkMod app offers free tethering to Android phones, sans root" href="http://www.theverge.com/2012/1/2/2677391/clockworkmod-tether-non-rooted-android-free-tethering#87381046" target="_blank">questo commento</a> a <a title="New ClockworkMod app offers free tethering to Android phones, sans root" href="http://www.theverge.com/2012/1/2/2677391/clockworkmod-tether-non-rooted-android-free-tethering" target="_blank">questo post</a> ho avuto la risposta, almeno per Android:</p>
<p><em>The built-in tether support acts as a WiFi hotspot and router. This does a USB tether, and acts as a network proxy. Very different.</em></p>
<p><em>The biggest difference, from the carrier’s end, is that routing is pretty easy to detect; each packet that goes through the router, the time-to-live (TTL) field in the IPv4 header is decremented. In addition, there is NAT going on, and there are heuristics to detect that. There are ways around this using Linux’s iptables that can masquerade the routing/NAT, but I’m unaware of any mainstream implementations of this on Android, and it would require root. This app doesn’t; I’m like 90% sure it’s all done over ADB (Android Debug Bridge), which every Android device supports.</em></p>
<p><em>With the USB tether acting as a network proxy, there is simply no routing/NAT going on, so there is no way for the carrier to detect what’s going on. It just appears to be data coming from the phone.</em></p>
<p>Ottimo, penso anche che il meccanismo sia estendibile anche ad altre piattaforme, non si finisce mai di imparare dai commenti! Prossima mossa, vedere se veramente il tethering USB non viene scoperto dai carrier.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/tethering-dallo-smartphone-ecco-come-gli-operatori-telefonici-possono-scoprirlo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Video dell&#8217;intervento &#8220;Sopravvivere a due anni di sviluppo con Android&#8221;</title>
		<link>http://www.rainbowbreeze.it/video-dellintervento-sopravvivere-a-due-anni-di-sviluppo-con-android/</link>
		<comments>http://www.rainbowbreeze.it/video-dellintervento-sopravvivere-a-due-anni-di-sviluppo-con-android/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 23:03:41 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Talk]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1343</guid>
		<description><![CDATA[Ecco i video dell&#8217;intervento che ho fatto il 22 Novembre al GTUG Milano, dove ho condiviso con i partecipanti alcuni consigli utili imparati dopo piu&#8217; di due anni di sviluppo per piattaforma Android. http://www.youtube.com/watch?v=zHmW4pX8114 http://www.youtube.com/watch?v=5dlCrE-PrxQ http://www.youtube.com/watch?v=4vKe2xNSUAs Qui di seguito, invece, le slides Android Survival Guide &#8211; Two years of software development View more presentations from [...]]]></description>
			<content:encoded><![CDATA[<p>Ecco i video dell&#8217;intervento che ho fatto il 22 Novembre al <a title="GTUG Milano" href="http://groups.google.com/group/gtug-milano" target="_blank">GTUG Milano</a>, dove ho condiviso con i partecipanti alcuni consigli utili imparati dopo piu&#8217; di due anni di sviluppo per piattaforma Android.</p>
<p><a href="http://www.youtube.com/watch?v=zHmW4pX8114">http://www.youtube.com/watch?v=zHmW4pX8114</a></p>
<p><span id="more-1343"></span>
<p><a href="http://www.youtube.com/watch?v=5dlCrE-PrxQ">http://www.youtube.com/watch?v=5dlCrE-PrxQ</a></p>
<p><a href="http://www.youtube.com/watch?v=4vKe2xNSUAs">http://www.youtube.com/watch?v=4vKe2xNSUAs</a></p>
<p>Qui di seguito, invece, le slides</p>
<div style="width:510px" id="__ss_9488886"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/rainbowbreeze/android-survival-guide-two-years-of-software-development" title="Android Survival Guide - Two years of software development" target="_blank">Android Survival Guide &#8211; Two years of software development</a></strong> <object id="__sse9488886" width="510" height="426"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=20110930-androidota-110930095545-phpapp01&#038;stripped_title=android-survival-guide-two-years-of-software-development&#038;userName=rainbowbreeze" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><param name="wmode" value="transparent"/><embed name="__sse9488886" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=20110930-androidota-110930095545-phpapp01&#038;stripped_title=android-survival-guide-two-years-of-software-development&#038;userName=rainbowbreeze" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="transparent" width="510" height="426"></embed></object>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/rainbowbreeze" target="_blank">Alfredo Morresi</a> </div>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/video-dellintervento-sopravvivere-a-due-anni-di-sviluppo-con-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linkflood 20111029: Holodesk ed applicazioni Android su Win/Mac</title>
		<link>http://www.rainbowbreeze.it/linkflood-20111029/</link>
		<comments>http://www.rainbowbreeze.it/linkflood-20111029/#comments</comments>
		<pubDate>Fri, 28 Oct 2011 09:26:30 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[LinkFlood]]></category>
		<category><![CDATA[PostIt]]></category>
		<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1331</guid>
		<description><![CDATA[The Essence of Google Dart: Building Applications, Snapshots, Isolates &#8211; Un articolo che parla un po&#8217; piu&#8217; in dettaglio di Dart, il nuovo linguagguio di programmazione per il web creato da Google. Problema di sicurezza iPad 2: la SmartCover scardina le password &#8211; Il codice di sicurezza degli iPad2 che protegge l&#8217;accesso al dispositivo ad [...]]]></description>
			<content:encoded><![CDATA[<p><a title="The Essence of Google Dart: Building Applications, Snapshots, Isolates" href="http://www.infoq.com/articles/google-dart" target="_blank">The Essence of Google Dart: Building Applications, Snapshots, Isolates</a> &#8211; Un articolo che parla un po&#8217; piu&#8217; in dettaglio di Dart, il nuovo linguagguio di programmazione per il web creato da Google.</p>
<p><a title="Problema di sicurezza iPad 2: la SmartCover scardina le password" href="http://www.macitynet.it/macity/articolo/Problema-di-sicurezza-iPad-2-la-SmartCover-scardina-le-password" target="_blank">Problema di sicurezza iPad 2: la SmartCover scardina le password</a> &#8211; Il codice di sicurezza degli iPad2 che protegge l&#8217;accesso al dispositivo ad estranei e&#8217; facilmente aggirabile usando la SmartCover. Un esempio di hardware hacking. Fortunatamente l&#8217;accesso e&#8217; completo al dispositivo, ma limitato alle app aperte prima di bloccarlo.</p>
<p title="Bluestacks"><a title="Bluestacks" href="http://www.bluestacks.com" target="_blank">Bluestacks</a> &#8211; Eseguire applicazioni Android su Windows non sembra piu&#8217; un sogno, grazie a Bluestack. Dalle prove che ho fatto, devo dire che &#8230;</p>
<p title="Bluestacks"><a title="Codify iPad" href="http://twolivesleft.com/Codify/" target="_blank">Codify iPad</a> &#8211; Un editor LUA per iPad, con la possibilita&#8217; di gestire la scrittura di codice anche in modo touch. Esperimento interessante, ma non mi convince molto, dato che la tastiera, e al limite il mouse, sono da sempre stati i migliori amici del dev. ;) Rimane pero&#8217; il fatto che e&#8217; un editor LUA per iPad con alcune interessanti funzioni (auto competition, project browser ecc).</p>
<p title="Bluestacks"><a title="MonoGame Goes Multi-platform: MonoGame 2.0 Announced" href="http://cocoa-mono.org/archives/400/monogame-goes-multi-platform-monogame-2-0-announced/" target="_blank">MonoGame Goes Multi-platform: MonoGame 2.0 Announced</a> &#8211; Si aggiunge un nuovo nato alla famiglia Mono / Monotouch/ MonoDroid: e&#8217; infatti arrivato MonoGame, versione crossplaform per desktop e mobile delle API XNA. Quindi Windows, Linux, Mac, Android, iPad. Supporto nativo del codice, invece, da parte di XBOX e Windows Phone 7. Decisamente un qualcosa da provare non appena trovo un po&#8217; di tempo libero!</p>
<p title="Bluestacks"><a title="Qualcomm Augmented Reality Mobile SDK" href="https://developer.qualcomm.com/develop/mobile-technologies/augmented-reality" target="_blank">Qualcomm Augmented Reality Mobile SDK</a>  &#8211; Un SDK per realizzare applicazioni in realtà aumentata rilasciato da Qualcomm per Android e iPhone. Stiamo parlando di riconoscimento di forme, non piu&#8217; solo location-base. Da tenere sott&#8217;occhio assieme agli SDK rilasciati da Layar e da Wikitude.</p>
<p title="Bluestacks"><a title="Holodesk bt Microsoft" href="http://blogs.technet.com/b/next/archive/2011/10/19/microsoft-research-shows-some-fresh-thinking-on-nui-and-touch-interface.aspx" target="_blank">Holodesk bt Microsoft</a> &#8211; Sensori 3D, Kinect, complesse computazioni, qualche specchio ben piazzato ed ecco nato un desktop olografico made in Microsoft, che da la possibilita&#8217; di interagire in maniera naturale con gli oggetti creati al suo interno.</p>
<p title="Bluestacks"><a title="Android Orphans: Visualizing a Sad History of Support" href="http://theunderstatement.com/post/11982112928/android-orphans-visualizing-a-sad-history-of-support" target="_blank">Android Orphans: Visualizing a Sad History of Support</a> &#8211; Un&#8217;infografica che mostra lo stato attuale della frammentazione del mondo Android per quanto riguarda la disponibilita&#8217; di aggiornamenti del sistema operativo rilasciati dai produttori dei dispositivi nell&#8217;arco di 3 anni. Una triste situazione, con moltissimi device lasciati a se stessi. Impossibile immaginare uno scenario diverso: i produttori hanno tutto l&#8217;interesse a far acquistare nuovi device, piuttosto che rilasciare aggiornamenti per mantenerli ancora competitivi sul mercato. Speriamo che quando dichiarato da Google al Google I/O, riguardante la policy sul supporto agli aggiornamenti del sistema operativo per almeno 18 mesi dalla data di rilascio di un dispositivo, sai davvero rispettata.</p>
<p title="Bluestacks"><a title="Trailer, le risposte della SIAE" href="http://punto-informatico.it/3319948/PI/Interviste/trailer-risposte-della-siae.aspx" target="_blank">Trailer, le risposte della SIAE</a> &#8211; Embeddate video di trailer cinematografici nel  vostro sito, che contengono colonne sonore coperte da diritto d&#8217;autore (come tutte quelle dei film)? Bene, dovete pagare la SIAE.</p>
<p title="Bluestacks"><a title="Continuous Integration for Mobile" href="http://engineering.linkedin.com/testing/continuous-integration-mobile" target="_blank">Continuous Integration for Mobile</a> &#8211; LinkedIn non e&#8217; nuova a scrivere dei dettagliati post che spiegano com&#8217;e&#8217; organizzata la sua struttura IT per gestire specifiche situazioni. Stavolta tocca all&#8217;ambiente di Continuous Integration per le applicazioni mobili del portale.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/linkflood-20111029/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Come installare Cyanogenmod, MIUI o una custom rom sul Nexus One</title>
		<link>http://www.rainbowbreeze.it/come-installare-cyanogenmod-miui-o-una-custom-rom-sul-nexus-one/</link>
		<comments>http://www.rainbowbreeze.it/come-installare-cyanogenmod-miui-o-una-custom-rom-sul-nexus-one/#comments</comments>
		<pubDate>Wed, 05 Oct 2011 08:35:19 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[CyanogenMod]]></category>
		<category><![CDATA[MIUI]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1319</guid>
		<description><![CDATA[Installare un sistema operativo personalizzato al posto di quello standard presente sul proprio smartphone e&#8217; una pratica consolidata. Gia&#8217; con Symbian era prassi comune quella di eliminare la versione customizzata che l&#8217;operatore telefonico installava nel telefono, spesso con crapware e limitazioni varie, per usarne una &#8220;stock&#8221;, ovvero pulita, spesso piu&#8217; aggiornata, piu&#8217; leggera e senza [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/10/upgraderom.png"><img class="alignleft size-full wp-image-1321" style="margin: 2px 4px;" title="Custom ROM for Android Nexus One" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/10/upgraderom.png" alt="" width="199" height="250" /></a>Installare un sistema operativo personalizzato al posto di quello standard presente sul proprio smartphone e&#8217; una pratica consolidata. Gia&#8217; con Symbian era prassi comune quella di eliminare la versione customizzata che l&#8217;operatore telefonico installava nel telefono, spesso con crapware e limitazioni varie, per usarne una &#8220;stock&#8221;, ovvero pulita, spesso piu&#8217; aggiornata, piu&#8217; leggera e senza vincoli. Con Windows Mobile c&#8217;e&#8217; stata un&#8217;esplosione di questa pratica e le <em>ROM coocked</em> create dalla comunita&#8217; erano spesso di gran lunga migliori di quelle standard: parecchi bugfix, driver e sistemi operativi aggiornati, utility precaricate per risparmiare spazio, Erano insomma capaci di prolungare la vita di un device di un anno o piu&#8217;. Dopotutto intendiamoci, i produttori di dispositivi non hanno interesse a rilasciare versioni aggiornate del firmare dei propri prodotti, preferiscono che si buttino via e si ricomprino nuovi con quanto di nuovo c&#8217;e&#8217; sul mercato.</p>
<p>Android, ovviamente, non fa differenza. Unica controindicazione di questo processo di customizzazione della ROM e&#8217; la perdita della garanzia, ma si puo&#8217; sempre ripristinare quella originale ;)</p>
<p><strong>Considerazione finale</strong> dopo aver sperimentato per un paio di giorni tutto: <strong>ma come ho fatto ad aspettare cosi&#8217; tanto tempo</strong> prima di usarle sul mio Nexus One!</p>
<p>&nbsp;</p>
<p><strong>I passi da seguire per un Nexus One</strong></p>
<p>Ovviamente ogni telefono ha una sua sequenza di comandi per essere sbloccato e personalizzato, di seguito quelli per il mio Nexus One:</p>
<ul>
<li>Sbloccare il bootloader del device per poter installare una nuova recovery image, al posto di quella standard (si usa fastboot).</li>
<li>Installare una Custom Recovery Image che permettera&#8217;, tra le altre cose, di installare delle ROM personalizzate (ClockWorld Mod).</li>
<li>Tramite la Custom Recovery Image, fare un salvataggio del sistema e poi caricare la nuova ROM personalizzata.</li>
<li>Installazioni aggiuntive.</li>
</ul>
<p>Purtroppo, la prima volta che si esegue questo processo, tutti i settaggi delle app saranno irrimediabilmente persi. Quindi addio punti nei giochi, impostazioni di programmi e tutto quello che non viene salvato nativamente nel cloud o sulla SD dalle singole applicazioni. Le volte successive, grazie all&#8217;accesso root al dispositivo e ai tool di backup esistenti, questo problema sara&#8217; solo un brutto ricordo. Ragione in piu&#8217; per fare il prima possibile lo sblocco, anche solo per avere un salvataggio completo di tutto, in caso di perdita del device.</p>
<p>&nbsp;</p>
<p><strong>Sbloccare il bootloader ed installare Fastboot</strong></p>
<p>Una volta il comando <em>fastboot</em> era installato nell&#8217;Android SDK, poi e&#8217; stato tolto. <a title="fastboot download" href="http://android.modaco.com/topic/299078-how-to-unlock-the-bootloader-on-your-nexus-one" target="_blank">Qui si puo&#8217; trovare un eseguibile multipiattaforma</a>: e questa e&#8217; <a title="Fastboot" href="http://wiki.cyanogenmod.com/wiki/Fastboot" target="_blank">la procedura dettagliata</a> per sbloccare il boot del device.</p>
<ul>
<li>Scaricare i pacchetti del fastboot per linux e copiati nella directory <em>platform-tools</em> dell&#8217;sdk Android</li>
<li>Boot del device nel bootloader (premere il trackpad e accendere il dispositivo). Apparira&#8217; uno schermo con dei robottini Android su uno skate.</li>
<li>Controllare che in alto a sinistra ci sia la scritta S-OFF, che indica il security off del dispositivo, quindi la possibilita&#8217; di sbloccarlo</li>
<li>Controllare che sia selezionato FASTBOOT e non HBOOT nelle voci del menu&#8217;</li>
<li>Connettere il device via USB al computer</li>
<li>Lanciare, dal computer, il comando <em>fastboot devices</em> e controllare che il proprio device sia elencato</li>
<li>Lanciare, dal computer, il comando <em>fastboot oem unlock</em> e confermare l&#8217;unlock del device</li>
</ul>
<p><strong>Tutti i dati saranno cancellati</strong> e il device verra&#8217; riavviato. Per controllare se e&#8217; effettivamente stato sbloccato, avviare nuovamente il bootloader e questa volta, in altro, dovrebbe apparire la scritta *** UNLOCKED ***</p>
<p>&nbsp;</p>
<p><strong>Installare una Custom Recovery Image</strong></p>
<p>Compito della Custom Recovery Image e&#8217; quello di installare custom rom, salvare dati, partizionare sd card, cancellare dati, resettare impostazioni particolari di sistema e molto altro. Ci sono diversi programmi molto usati e che fungono bene allo scopo, io ho scelto ClockWorldMod Recovery, <a title="What Is ClockworkMod Recovery And How To Use It On Android" href="http://www.addictivetips.com/mobile/what-is-clockworkmod-recovery-and-how-to-use-it-on-android-complete-guide/" target="_blank">ecco spiegato cos&#8217;e&#8217;</a>. Per installarlo, ho seguito <a title="ClockworkMod Recovery Installation" href="http://wiki.cyanogenmod.com/wiki/Nexus_One:_Full_Update_Guide#ClockworkMod_Recovery" target="_blank">questi passi qui</a>, che comprendono anche il link per il download del file img. In alternativa, c&#8217;e&#8217; anche <a title="Amon-Ra's" href="http://forum.xda-developers.com/showthread.php?t=611829" target="_blank">Amon-Ra&#8217;s</a></p>
<ul>
<li>Scaricato il file img nel computer</li>
<li>Boot del device nel bootloader</li>
<li>Connettere il device via USB al computer</li>
<li>Lanciare il comando <em>fastboot flash recovery /path/to/recovery-clockwork-3.0.0.5-passion.img</em></li>
<li>Riavviare il device. La Custom Recovery Image e&#8217; presente ed operativa.</li>
</ul>
<p>Ovviamente esiste una versione piu&#8217; nuova della 3.0.0.5, dopo l&#8217;installazione della custom rom ci sono le istruzioni per aggiornarla.</p>
<p>&nbsp;</p>
<p><strong><strong>Backup del sistema operativo, conosciuto anche come Nandroid backup, e i</strong>nstallare di una custom ROM</strong></p>
<p title="How To Perform And Restore A NANDROID Backup">Prima di installare una qualunque custom rom, e&#8217; buona cosa fare un backup dell&#8217;intero sistema operativo, che servira&#8217; anche nel caso in cui le cose vadano storte e il device non si riavvii piu&#8217;, ad esempio a a causa di una rom sbagliata, un errore nella sd che ha corrotto il file ecc. Inoltre e&#8217; l&#8217;immagine che va rimessa sul dispositivo in caso di invio in assistenza (assieme all&#8217;esecuzione del comando <em>fastboot oem lock</em> per ribloccare il bootloader e riportarlo allo stadio originale). Conosciuto anche come Nadroid backup, ecco i <a title="How To Perform And Restore A NANDROID Backup" href="http://www.addictivetips.com/mobile/how-to-perform-and-restore-a-nandroid-backup/" target="_blank">passi che ho seguito</a>:</p>
<ul>
<li>Fare il reboot in recovery mode: lanciare il bootloader, scegliere recovery, oppure, con il device connesso via usb, lanciare il comando <em>adb reboot recovery</em>.</li>
<li>Scegliere la voce di menu&#8217; Backup and Restore</li>
<li>Lanciare in backup e aspettare un paio di minuti</li>
<li>Per il restore, stessa procedura, ma selezionando restore invece di backup, e l&#8217;immagine da ripristinare (tramite data e ora del backup fatto)</li>
</ul>
<p>&nbsp;</p>
<p><strong>Installazione di una Custom ROM</strong></p>
<p>Ovviamente esistono tantissime custom rom, sia in base al device, sia in base all&#8217;orientamento che viene dato alla rom (performance, cool&amp;stylish, funzionalita&#8217; ecc). Personalmente, e per un Nexus One, ritengo che ci siano tre grandi alternative: installare una <a title="Stock ROMS" href="http://android.modaco.com/topic/300414-21oct-stock-roms-erd79-frg83-images-zip-online-kitchen-optional-root-insecure/" target="_blank">rom stock</a>, una <a title="Cyanogenmod" href="http://www.cyanogenmod.com/" target="_blank">Cyanogenmod</a> o una <a title="MIUI" href="http://en.miui.com/" target="_blank">MIUI</a>. Consiglio la prima scelta a chi usa il device per sviluppare e testare le proprie applicazioini, ma non vuole perdere i benefici di essere root: le rom customizzate, infatti, sono molto diverse da quella originale, quindi potrebbero anche avere dei comportamenti inattesi / fuori dagli standard che potrebbero pregiudicare il buon esito dei test di funzionamento. La Cyanogenmod, invece, e&#8217; <a title="Cyanogenmod features" href="Feature di Cyanogenmod: http://wiki.cyanogenmod.com/wiki/Features" target="_blank">tipicamente per gli smanettoni</a>: tantissimi settaggi, ottimizzazioni alle stelle e velocita&#8217; da urlo. MIUI, infine, e&#8217; esteticamente qualcosa di unico ed offre applicazioni di gran lunga migliori di quelle standard (player musicale, rubrica dei contatti, backup integrato ecc). A voi la scelta. Io le sto provando entrambe e, per ora, la MIUI mi ha conquistato. Seguiranno post piu&#8217; dettagliati.</p>
<p>A prescindere dal tipo di rom i passi sono molto simili, ecco quelli che ho seguito io per la Cyanogenmob, secondo la <a title="Nexus One: Full Update Guide" href="http://wiki.cyanogenmod.com/wiki/Nexus_One:_Full_Update_Guide#Flashing_CyanogenMod" target="_blank">guida ufficiale</a>.</p>
<ul>
<li>Scaricare nel computer il file della custom rom, prendendola dal sito o scaricandola con qualche app direttamente dal device. E&#8217; un file zip, che va copiato nella propria SD (dove si vuole, io ho creato la cartella /roms e le metto li sotto). Io ho preso la versione stable <a title="Cyanogenmod for Nexus One" href="http://wiki.cyanogenmod.com/wiki/Latest_Version#Nexus_One" target="_blank">da qui</a>.</li>
<li>Nel caso di una Cyanogenmod, se si vogliono anche le Google Apps (Market, GMail ecc), occorre scaricare l&#8217;<a title="Google apps for Cyanogenmod" href="http://wiki.cyanogenmod.com/wiki/Latest_Version#Google_Apps" target="_blank">apposito pacchetto</a>.</li>
<li>Fare il reboot in recovery mode: lanciare il bootloader, scegliere recovery, oppure, con il device connesso via usb, lanciare il comando <em>adb reboot recovery</em>.</li>
<li>Selezionare un Wipe data/factory reset e poi Wipe data/Cache partition: questo cancellera&#8217; tutti i dati presenti, ma e&#8217; fondamentale farlo quando si installa una nuova tipologia di ROM, non sempre richiesto quando si passa ad un nuova versione di rom della stessa famiglia.</li>
<li>Selezionare Install zip from sd card e poi Choose zip from sdcard e navigare fino a scegliere il file scaricato con la rom in precedenza</li>
<li>Ripetere il precedente passo, ma con il file delle Google Apps</li>
<li>Riavviare il sistema dall&#8217;apposito&#8217; menu.</li>
<li>Let&#8217;s the magic happens! La ROM e&#8217; pronta all&#8217;uso.</li>
</ul>
<p>&nbsp;</p>
<p><strong><span id="more-1319"></span>Prima di perdervi in questo nuovo mondo</strong></p>
<p>Consigli veloci da fare subito, per poi darsi alla sperimentazione selvaggia di tutto quello che c&#8217;e&#8217; di nuovo:</p>
<ul>
<li>Installate l&#8217;<a title="Clockworkmod" href="http://www.clockworkmod.com/" target="_blank">app ClockWorldMod ROM Managare</a> e aggiornate all&#8217;ultima versione disponibile la recovery image (prima voce del menu&#8217;)</li>
<li>Installare <a title="Titanium Backup Root" href="http://matrixrewriter.com/android/" target="_blank">Titanium Backup Root</a>, in modo da poter salvare applicazioni piu&#8217; i loro dati e ripristinare tutto con facilita&#8217; in caso di installazione di una nuova rom.</li>
<li>Una lista delle varie rom esistenti per Nexus One <a title="Nexus One Froyo custom roms list" href="http://www.nexusoneforum.net/forum/nexus-one-development-hacking/9307-custom-roms-list.html%20e%20http://alchemistar.blogspot.com/2010/10/nexus-one-froyo-custom-roms-list.html" target="_blank">e&#8217; qui</a>, mentre qui ci sono <a title="Favorite custom rom and why" href="http://www.nexusoneforum.net/forum/nexus-one-development-hacking/10075-favorite-custom-rom-s-why.html" target="_blank">alcune peculiarita&#8217; e considerazioni d&#8217;uso</a>.</li>
<li>Procedura di installazione troppo lunga e complessa? Si puo&#8217; provare <a title="SuperOnClick" href="http://shortfuse.org/" target="_blank">SuperOnClick</a>, compatibile con molti telefoni ed estremamente automatico.</li>
</ul>
<p>&nbsp;</p>
<p><strong>Spostare le applicazioni su SD per liberare spazio (APP2SD, A2SD, APP2Ext, APP2SD+)</strong></p>
<p>Prima di Froyo (Android 2.2), le applicazioni eran installate nella memoria interna del device. Il Nexus One ha circa 190 mega liberi da dedicare allo scopo ma, tra aggiormanenti di GMail, Maps, e poco altro, lo spazio a disposizione finiva in un baleno. Per questo, a partire da Froyo in poi, e&#8217; stato introdotto il supporto all&#8217;App2SD, la possibilita&#8217; di spostare un&#8217;applicazione sulla scheda sd. Si libera pareccha memoria interna (non tutta, perche&#8217; alcuni dati dell&#8217;app ancora rimangono li) e si puo&#8217; respirare un po&#8217; di piu&#8217;, ma e&#8217; una funzionalita&#8217; che la singola applicazione deve implementare e, ovviamente, molte non lo fanno (per precise ragioni o per pigrizia degli sviluppatori, dipende). Le principali custom ROM hanno abilitato un workaround che sposta automaticamente tutte le app nella memoria SD, a prescindere dal loro supporto o meno all&#8217;App2sd di Froyo. Grande comodita&#8217;, non si perde praticamente nulla in velocita&#8217;, solo forse si accorcia leggermente il ciclo di vita della propria SD (ma dipende sempre dall&#8217;utilizzo). <a title="App2sd explanation" href="http://forum.xda-developers.com/showpost.php?p=7458565&amp;postcount=8" target="_blank">Qui</a>, <a title="A2SD Explained" href="http://www.miui-au.com/faq/a2sd/" target="_blank">qui</a> e <a title="Using DarkTremor Apps2SD with Kang-o-rama" href="http://forum.xda-developers.com/showpost.php?p=8012686&amp;postcount=4342" target="_blank">qui</a> qualche info in piu&#8217; sulla cosa.</p>
<p>Brevemente, sia <a title="Cyanogenmod features" href="Feature%20di%20Cyanogenmod:%20http://wiki.cyanogenmod.com/wiki/Features" target="_blank">Cyanogenmod</a> che <a title="MIUI FAQ" href="http://en.miui.com/a-11.html" target="_blank">MIUI</a> hanno l&#8217;A2SD+ installato. Io per abilitarlo sulla seconda ho dovuto seguire questi passi (penso comunque utilizzabili anche per la prima)</p>
<ul>
<li>Creare una partizione EXT3 sulla mia SD (tramite GParted o un altro strumento). Ho scelto una dimensione di 600 mb, che penso sia abbastanza per installare moooolte cose.</li>
<li>Aprire una shell sul device (tramite applicazione del terminale o digitando adb shell dal pc attaccato al device)</li>
<li>Lanciare il comando <em>a2sd check</em> per verificare che non fosse gia&#8217; tutto abilitato. Si puo&#8217; capire nelle voci Apps e Private Apps, che hanno un &#8220;No Apps2SD Flag File not found.&#8221; selezionato.</li>
<li>Lanciare comando <em>as2d install</em> per abilitare il tutto, aspettato qualche minuto e il reboot del dispositivo.</li>
</ul>
<p>Se le applicazione supportano la modalita&#8217; App2sd di Froyo, si potranno ancora spostare sulla SD alla vecchia maniera (nella partizione fat32), se invece si lasciano nella memoria interna, verranno automaticamente messe nella nuova partizione ext3 creata. In aggiunta, si puo&#8217; anche spostare la cartella /data/data nella sd, liberando ancora piu&#8217; spazio in memoria interna, grazie al comando <em>a2sd datasd</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/come-installare-cyanogenmod-miui-o-una-custom-rom-sul-nexus-one/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NavigationBar in style iPhone UITabBarController per Android</title>
		<link>http://www.rainbowbreeze.it/navigationbar-in-style-iphone-uitabbarcontroller-per-android/</link>
		<comments>http://www.rainbowbreeze.it/navigationbar-in-style-iphone-uitabbarcontroller-per-android/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 07:00:26 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[#Anddev]]></category>
		<category><![CDATA[RadioButton]]></category>
		<category><![CDATA[UITabBarController]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1301</guid>
		<description><![CDATA[Nel porting di applicazioni iOS su piattaforma Android, ci sono casi in cui si vuole necessariamente una barra di navigazione nella parte bassa dello schermo, come quella presente in molte applicazioni iPhone/iPad. Ci sono diversi approcci che si possono seguire. Usare una libreria che rende anche possibile lo scrolling dei bottoni, un controllo personalizzato e [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/09/android_navigationbar1.png"><img src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/09/android_navigationbar1-200x300.png" alt="" title="android_navigationbar1" width="200" height="300" class="alignleft size-medium wp-image-1303" /></a> <a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/09/android_navigationbar2.png"><img src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/09/android_navigationbar2-200x300.png" alt="" title="android_navigationbar2" width="200" height="300" class="alignleft size-medium wp-image-1304" /></a>Nel porting di applicazioni iOS su piattaforma Android, ci sono casi in cui si vuole necessariamente una barra di navigazione nella parte bassa dello schermo, come quella presente in molte applicazioni iPhone/iPad. </p>
<p>Ci sono diversi approcci che si possono seguire. Usare <a href="http://code.google.com/p/mobyfactory-uiwidgets-android/" title="mobyfactory-uiwidgets-android - Custom UI for Android" target="_blank">una libreria che rende anche possibile lo scrolling dei bottoni</a>, un <a href="http://www.paxmodept.com/telesto/blogitem.htm?id=810" title="iPhone Like Toolbar for Android " target="_blank">controllo personalizzato</a> e gestito tutto via codice, dei <a href="http://android-pro.blogspot.com/2010/08/iphone-like-tab-bar-in-android.html" title="iPhone-Like Tab bar in Android" target="_blank">TabHost con dei TabWidget</a>, oppure inventarsi altro <a href="http://stackoverflow.com/questions/6827869/is-there-a-way-to-display-fragments-in-tabhost/6891923#6891923" title="Is there a way to display fragments in TabHost?" target="_blank">per gestire anche i Fragment</a>.</p>
<p>Invece io voglio ottenere lo stesso risultato con la massima flessibilita&#8217; possibile, quindi usando solo controlli standard e semplici, al massimo personalizzandone lo stile. Quindi il componente principale della navigationbar sara&#8217; un RadioGroup, all&#8217;interno del quale ogni elemento RadioButton rappresentera&#8217; un pulsante. Un diffuso uso di <a title="StateListDrawable" href="http://developer.android.com/reference/android/graphics/drawable/StateListDrawable.html" target="_blank">StateListDrawable</a> rendera&#8217; coerente l&#8217;aspetto grafico.</p>
<p>Di seguito il layout dell&#8217;activity principale, quella che conterra&#8217; la navigation bar: <strong>res/layout/actnavbar.xml</strong></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1301code6'); return false;">View Code</a> XML</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p13016"><td class="code" id="p1301code6"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;RelativeLayout</span></span>
<span style="color: #009900;">  <span style="color: #000066;">xmlns:android</span>=<span style="color: #ff0000;">&quot;http://schemas.android.com/apk/res/android&quot;</span></span>
<span style="color: #009900;">  <span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
<span style="color: #009900;">  <span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
<span style="color: #009900;">  <span style="color: #000066;">android:background</span>=<span style="color: #ff0000;">&quot;@android:color/white&quot;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;RadioGroup</span></span>
<span style="color: #009900;">    <span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;60dp&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000066;">android:layout_alignParentBottom</span>=<span style="color: #ff0000;">&quot;true&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000066;">android:orientation</span>=<span style="color: #ff0000;">&quot;horizontal&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000066;">android:background</span>=<span style="color: #ff0000;">&quot;@drawable/navbar_background&quot;</span></span>
<span style="color: #009900;">  <span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;RadioButton</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:id</span>=<span style="color: #ff0000;">&quot;@+id/btnAll&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">style</span>=<span style="color: #ff0000;">&quot;@style/navbar_button&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:drawableTop</span>=<span style="color: #ff0000;">&quot;@drawable/navbar_allselector&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:text</span>=<span style="color: #ff0000;">&quot;All&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;RadioButton</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:id</span>=<span style="color: #ff0000;">&quot;@+id/btnPicture&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">style</span>=<span style="color: #ff0000;">&quot;@style/navbar_button&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:drawableTop</span>=<span style="color: #ff0000;">&quot;@drawable/navbar_pictureselector&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:text</span>=<span style="color: #ff0000;">&quot;Pictures&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:layout_marginLeft</span>=<span style="color: #ff0000;">&quot;5dp&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;RadioButton</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:id</span>=<span style="color: #ff0000;">&quot;@+id/btnVideo&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">style</span>=<span style="color: #ff0000;">&quot;@style/navbar_button&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:drawableTop</span>=<span style="color: #ff0000;">&quot;@drawable/navbar_videoselector&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:text</span>=<span style="color: #ff0000;">&quot;Videos&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:layout_marginLeft</span>=<span style="color: #ff0000;">&quot;5dp&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;RadioButton</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:id</span>=<span style="color: #ff0000;">&quot;@+id/btnFile&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">style</span>=<span style="color: #ff0000;">&quot;@style/navbar_button&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:drawableTop</span>=<span style="color: #ff0000;">&quot;@drawable/navbar_fileselector&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:text</span>=<span style="color: #ff0000;">&quot;Files&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:layout_marginLeft</span>=<span style="color: #ff0000;">&quot;5dp&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/RadioGroup<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/RelativeLayout<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p><span id="more-1301"></span><br />
E il file con gli stili <strong>res/values/styles.xml</strong></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1301code7'); return false;">View Code</a> XML</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p13017"><td class="code" id="p1301code7"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;resources<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;style</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;navbar_button&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;android:layout_width&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>0dp<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/item<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;android:layout_height&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>wrap_content<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/item<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;android:button&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>@null<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/item<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;android:background&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>@drawable/navbar_backgroundselector<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/item<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;android:gravity&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>center_horizontal<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/item<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;android:layout_weight&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/item<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;android:textSize&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>12dp<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/item<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/style<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/resources<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Il trucchetto e&#8217; impostare a @null la proprieta&#8217; <em>android:button</em> (in pratica, il disegno di default del RadioButton) e poi impostare <em>android:drawableTop</em> del testo all&#8217;icona che si vuole far apparire nella navigationbar. Impostare invece <em>android:background</em> serve per ottenere l&#8217;effetto del glow quando il bottone e&#8217; schiacciato. <em>android:layout_width</em> a 0dp e <em>android:layout_weight</em> a 1 fanno occupare a tutti i bottoni lo stesso spazio, a prescindere dalla lunghezza del testo.</p>
<p>Al resto pensano gli <a href="http://developer.android.com/reference/android/graphics/drawable/StateListDrawable.html" title="StateListDrawable" target="_blank">StateListDrawable</a>, grazie ai quali vengono impostate le icone da usare quando il bottone e&#8217; Checked oppure no. Il framework sottostante pensera&#8217; poi a gestire cosa visualizzare a seconda dello stato.</p>
<p>Ecco quindi uno dei selector usati per i bottoni, il primo della navigation bar: <strong>res/drawable/navbar_allselector.xml</strong></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1301code8'); return false;">View Code</a> XML</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p13018"><td class="code" id="p1301code8"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;selector</span> <span style="color: #000066;">xmlns:android</span>=<span style="color: #ff0000;">&quot;http://schemas.android.com/apk/res/android&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span></span>
<span style="color: #009900;">    <span style="color: #000066;">android:state_checked</span>=<span style="color: #ff0000;">&quot;true&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000066;">android:drawable</span>=<span style="color: #ff0000;">&quot;@drawable/navbar_allselected&quot;</span></span>
<span style="color: #009900;">  <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">android:drawable</span>=<span style="color: #ff0000;">&quot;@drawable/navbar_allnormal&quot;</span>  <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/selector<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Gli altri sono tutti simili, cambiano solo le due icone utilizzate. Ovviamente il selector piu&#8217; essere esteso per includere anche icone quando il bottone e&#8217; disabilitato, oppure premuto e disabilitato e cosi&#8217; via.</p>
<p>Per ottenere invece l&#8217;effetto glow quando il bottone e&#8217; premuto, il file e&#8217; il seguente: <strong>res/drawable/navbar_backgroundselector.xml</strong></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1301code9'); return false;">View Code</a> XML</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p13019"><td class="code" id="p1301code9"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;selector</span> <span style="color: #000066;">xmlns:android</span>=<span style="color: #ff0000;">&quot;http://schemas.android.com/apk/res/android&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span></span>
<span style="color: #009900;">    <span style="color: #000066;">android:state_checked</span>=<span style="color: #ff0000;">&quot;true&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000066;">android:drawable</span>=<span style="color: #ff0000;">&quot;@drawable/navbar_highlight&quot;</span></span>
<span style="color: #009900;">  <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">android:drawable</span>=<span style="color: #ff0000;">&quot;@android:color/transparent&quot;</span>  <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/selector<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Anche il colore del testo potrebbe essere cambiato un base allo stato del bottone, basta impostare la proprieta&#8217; <em>android:textColor</em> del RadioButton all&#8217;apposito <a href="http://developer.android.com/reference/android/content/res/ColorStateList.html" title="ColorStateList" target="_blank">ColorStateList</a>. </p>
<p>Infine, il codice dell&#8217;Activity principale, src/com.test/NavbarActivity.java</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1301code10'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p130110"><td class="code" id="p1301code10"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> NavbarActivity  <span style="color: #000000; font-weight: bold;">extends</span> Activity <span style="color: #009900;">&#123;</span>
&nbsp;
  @Override
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onCreate<span style="color: #009900;">&#40;</span>Bundle savedInstanceState<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">onCreate</span><span style="color: #009900;">&#40;</span>savedInstanceState<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    setContentView<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">layout</span>.<span style="color: #006633;">actnavbar</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    RadioButton radioButton<span style="color: #339933;">;</span>
    radioButton <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>RadioButton<span style="color: #009900;">&#41;</span> findViewById<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">btnAll</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    radioButton.<span style="color: #006633;">setOnCheckedChangeListener</span><span style="color: #009900;">&#40;</span>btnNavBarOnCheckedChangeListener<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    radioButton <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>RadioButton<span style="color: #009900;">&#41;</span> findViewById<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">btnPicture</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    radioButton.<span style="color: #006633;">setOnCheckedChangeListener</span><span style="color: #009900;">&#40;</span>btnNavBarOnCheckedChangeListener<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    radioButton <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>RadioButton<span style="color: #009900;">&#41;</span> findViewById<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">btnVideo</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    radioButton.<span style="color: #006633;">setOnCheckedChangeListener</span><span style="color: #009900;">&#40;</span>btnNavBarOnCheckedChangeListener<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    radioButton <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>RadioButton<span style="color: #009900;">&#41;</span> findViewById<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">btnFile</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    radioButton.<span style="color: #006633;">setOnCheckedChangeListener</span><span style="color: #009900;">&#40;</span>btnNavBarOnCheckedChangeListener<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">private</span> CompoundButton.<span style="color: #006633;">OnCheckedChangeListener</span> btnNavBarOnCheckedChangeListener <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> CompoundButton.<span style="color: #006633;">OnCheckedChangeListener</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onCheckedChanged<span style="color: #009900;">&#40;</span>CompoundButton buttonView, <span style="color: #000066; font-weight: bold;">boolean</span> isChecked<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>isChecked<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        Toast.<span style="color: #006633;">makeText</span><span style="color: #009900;">&#40;</span>NavbarActivity.<span style="color: #000000; font-weight: bold;">this</span>, buttonView.<span style="color: #006633;">getText</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>, Toast.<span style="color: #006633;">LENGTH_SHORT</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">show</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>A questo link <a href="http://www.rainbowbreeze.it/site-media/develope/navigationbar_test.zip" title="Example source code">i sorgenti dell&#8217;esempio</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/navigationbar-in-style-iphone-uitabbarcontroller-per-android/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Linkflood 2011-09-05 &#8211; Clean Code in Android, algoritmi genetici e algoritmi che distruggeranno il mondo</title>
		<link>http://www.rainbowbreeze.it/linkflood-2011-09-05-clean-code-in-android-algoritmi-genetici-e-algoritmi-che-distruggeranno-il-mondo/</link>
		<comments>http://www.rainbowbreeze.it/linkflood-2011-09-05-clean-code-in-android-algoritmi-genetici-e-algoritmi-che-distruggeranno-il-mondo/#comments</comments>
		<pubDate>Mon, 05 Sep 2011 16:25:06 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[LinkFlood]]></category>
		<category><![CDATA[PostIt]]></category>
		<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1285</guid>
		<description><![CDATA[Clean Code in Android Applications &#8211; Dependency Injection, pattern MVVM, Roboguide e Annotation: una serie di librerie utili per lo sviluppo di codice Android ad un livello piu&#8217; professionale e in ottica di codice pulito e riusabile, con meno boilerplate possibili. Charting library for Android &#8211; Sempre in tema Android, una libreria per realizzare accattivanti [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Clean Code in Android Applications" href="http://blog.springsource.com/2011/08/26/clean-code-with-android/" target="_blank">Clean Code in Android Applications</a> &#8211; Dependency Injection, pattern MVVM, Roboguide e Annotation: una serie di librerie utili per lo sviluppo di codice Android ad un livello piu&#8217; professionale e in ottica di codice pulito e riusabile, con meno boilerplate possibili.</p>
<p><a title="Charting library for Android" href="http://code.google.com/p/achartengine" target="_blank">Charting library for Android</a> &#8211; Sempre in tema Android, una libreria per realizzare accattivanti grafici nelle proprie applicazioni.</p>
<p><a title="When algorithms control the world" href="http://www.bbc.co.uk/news/technology-14306146" target="_blank">When algorithms control the world</a> &#8211; Qualche riflessione ed esempio di fallimento dei complessi algoritmi e processi automatizzati che ormai gestiscono molte sfere della nostra vita, dalla borsa alla ricerca online. Riflessione necessaria dal momento in cui deleghiamo sempre piu&#8217; scelte a qualcosa fatto da noi, ma che non siamo noi.</p>
<p><a title="Genetic Algorithm - A 'Walt Disney' Introduction" href="http://www.codeproject.com/KB/recipes/GeneticAlgorithm.aspx" target="_blank">Genetic Algorithm &#8211; A &#8216;Walt Disney&#8217; Introduction</a> &#8211; Una semplice introduzione alla logica con cui sono costruiti gli algoritmi della famiglia chiamata &#8220;Evolutionary Computing&#8221; (Genetic Algorithm, Evolutionary Strategies, Evolutionary Programming e Genetic Programming).</p>
<p><a title="Intel ‘Temporarily’ Halting Meego Development" href="http://www.wired.com/gadgetlab/2011/09/report-intel-meego-no-go/" target="_blank">Intel ‘Temporarily’ Halting Meego Development</a> &#8211; Come era prevedibile, anche Intel ha dato un taglio allo svilupo di Meego. Dopo Symbian e WebOS, ecco il terzo grande ferito della guerra dei tre asset: hardware, sistema operativo e cloud.</p>
<p><a title="Firefox for Tablets" href="http://ianbarlow.wordpress.com/2011/08/30/firefox-for-tablets/" target="_blank">Firefox for Tablets</a> - Qualche screenshot della versione per Honeycomb di Firefox.</p>
<p><a title="The “designers should code” bullshit and a not so new idea" href="http://intenseminimalism.com/2011/designers-shouldnt-code-the-digital-duo/" target="_blank">The “designers should code” bullshit and a not so new idea</a> &#8211; Ma i designer devono sapere scrivere codice per essere dei buoni designer? Personalmente penso di no, ma ritengo anche necessario uno scambio di conoscenze tra chi costruisce e chi progetta, tra questi due mondi cosi&#8217; separati. Partendo dalla teoria delle intelligenze multiple, un approccio che propone che i designer &#8220;Know what code does&#8221;. E viceversa, aggiungerei, arrivando ad un fluido scambio di conoscenze tra membri di team eterogenei.</p>
<p><a title="Why Separate Mobile &amp; Desktop Web Pages?" href="http://www.lukew.com/ff/entry.asp?1390" target="_blank">Why Separate Mobile &amp; Desktop Web Pages?</a> &#8211; Nonostante il <em>Responsive Web Design Manifesto</em> consigli di usare una solo pagina HTML e poi ottimizzarla tramite Javascript e CSS in base alle caratteristiche del device che la sta richiedendo (layout, immagini, dimensione degli elementi ecc), in questo post vengono analizzati i pro dell&#8217;approccio inverso, ovvero realizzare e manutenere due separate versioni della stessa pagina, una per il desktop e una per il mobile.</p>
<p><a title="Don Norman: Google doesn’t get people, it sells them" href="http://gigaom.com/2011/09/05/don-norman-google-doesnt-get-people-it-sells-them" target="_blank">Don Norman: Google doesn’t get people, it sells them</a> &#8211; Ennesima critica mossa nei confronti di Google (ma si puo&#8217; sostituire con Facebook e altri servizi simili) che &#8220;usano&#8221; noi utenti come prodotti, per raccogliere quante piu&#8217; informazioni possibili sulla nostra vita e poi offrirle al miglior insersionista. Come criticarlo, in fondo?</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/linkflood-2011-09-05-clean-code-in-android-algoritmi-genetici-e-algoritmi-che-distruggeranno-il-mondo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutto il testing possibile per Android al BetterSoftware 2011</title>
		<link>http://www.rainbowbreeze.it/tutto-il-testing-possibile-per-android-bettersoftware-2011/</link>
		<comments>http://www.rainbowbreeze.it/tutto-il-testing-possibile-per-android-bettersoftware-2011/#comments</comments>
		<pubDate>Mon, 29 Aug 2011 08:55:09 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Talk]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1287</guid>
		<description><![CDATA[Ecco la registrazione del mio intervento &#8220;Tutto il testing possibile per Android&#8221;, che ho tenuto durante il BetterSoftware a Firenze. Purtroppo 20 minuti per il mio intervento sono stati veramente pochi (ne avevo chiesti il doppio), quindi mi sono dovuto adattare con quello che avevo, tagliando e accorciando come un forsennato. Scusatemi :( Qui il [...]]]></description>
			<content:encoded><![CDATA[<p>Ecco la registrazione del mio intervento <a title="Tutto il testing possibile su Android" href="http://www.bettersoftware.it/conference/talks/tutto-il-testing-possibile-su-android" target="_blank">&#8220;Tutto il testing possibile per Android&#8221;</a>, che ho tenuto durante il <a title="BetterSoftware" href="http://www.bettersoftware.it/" target="_blank">BetterSoftware</a> a Firenze. Purtroppo 20 minuti per il mio intervento sono stati veramente pochi (ne avevo chiesti il doppio), quindi mi sono dovuto adattare con quello che avevo, tagliando e accorciando come un forsennato. Scusatemi :(</p>
<div><video width="540" height="361" class="projekktor" controls="controls" src="/media/conference/videos/tutto-il-testing-possibile-su-android.mp4"><object width="540" height="361" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.rainbowbreeze.it/wordpress/wp-includes/js/tinymce/plugins/media/moxieplayer.swf" /><param name="flashvars" value="url=/media/conference/videos/tutto-il-testing-possibile-su-android.mp4&amp;poster=/wordpress/wp-admin/" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="true" /><embed width="540" height="361" type="application/x-shockwave-flash" src="http://www.rainbowbreeze.it/wordpress/wp-includes/js/tinymce/plugins/media/moxieplayer.swf" flashvars="url=/media/conference/videos/tutto-il-testing-possibile-su-android.mp4&amp;poster=/wordpress/wp-admin/" allowfullscreen="true" allowscriptaccess="true" /></object><br />
</video>
</div>
<p>Qui il <a title="Download del video dell'intervento" href="http://www.bettersoftware.it/media/conference/videos/tutto-il-testing-possibile-su-android.mp4">link diretto al file video</a>, mentre di seguito le slide.</p>
<div id="__ss_8445830"><strong style="display: block; margin: 12px 0 4px;"><a title="Testing in Android: automatici, di integrazione, TDD e scenari avanzati" href="http://www.slideshare.net/rainbowbreeze/testing-in-android-automatici-di-integrazione-tdd-e-scenari-avanzati" target="_blank">Testing in Android: automatici, di integrazione, TDD e scenari avanzati</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/8445830" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"></iframe></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/rainbowbreeze" target="_blank">Alfredo Morresi</a></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/tutto-il-testing-possibile-per-android-bettersoftware-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.bettersoftware.it/media/conference/videos/tutto-il-testing-possibile-su-android.mp4" length="179840391" type="video/mp4" />
		</item>
		<item>
		<title>Conflitti nella UX delle Google Android App</title>
		<link>http://www.rainbowbreeze.it/google-ux-conflict/</link>
		<comments>http://www.rainbowbreeze.it/google-ux-conflict/#comments</comments>
		<pubDate>Thu, 28 Jul 2011 14:29:50 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[User Interface]]></category>
		<category><![CDATA[UX]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1269</guid>
		<description><![CDATA[Magari ingenuamente, uno si puo&#8217; anche aspettare che le applicazioni fatte da Google per Android seguano una UX comune e, tra loro, abbiano una buona coerenza nell&#8217;interfaccia. E invece ecco cosa capita oggigiorno. Google Shopper: spunta una Navigation Bar in basso, in pieno stile iPhone TabBar, mai vista in altre app Google. Google Music: Nel [...]]]></description>
			<content:encoded><![CDATA[<p>Magari ingenuamente, uno si puo&#8217; anche aspettare che le applicazioni fatte da Google per Android seguano una UX comune e, tra loro, abbiano una buona coerenza nell&#8217;interfaccia. E invece ecco cosa capita oggigiorno.</p>
<p><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/07/googleux_shopper.png"><img class="size-medium wp-image-1270 alignnone" style="margin-top: 2px; margin-bottom: 2px; margin-left: 4px; margin-right: 4px;" title="Google Shopper" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/07/googleux_shopper-180x300.png" alt="Google Shopper" width="180" height="300" /></a><a title="Google Shopper" href="http://googlemobile.blogspot.com/2011/07/finding-great-deals-is-easier-with.html" target="_blank">Google Shopper</a>: spunta una <strong>Navigation Bar</strong> in basso, in pieno stile iPhone TabBar, mai vista in altre app Google.</p>
<p><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/07/googleux_music.jpg"><img class="alignnone size-medium wp-image-1271" title="Google Music" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/07/googleux_music-300x225.jpg" alt="Google Music" width="300" height="225" /></a><a title="Google Music" href="http://music.google.com" target="_blank">Google Music</a>: Nel secondo screenshot il <strong>menu&#8217; contestuale</strong> dell&#8217;elemento e&#8217; completamente diverso da come appare nei contatti e da come avevano caldamente consigliato al Google IO del 2010. L&#8217;<strong>Action Bar</strong> e&#8217; assente e spunta una <strong>Navigation Bar</strong> in alto, a scorrimento orizzontale, che ricorda molto l&#8217;interfaccia Panorama di WP7, dove per indicare che c&#8217;e&#8217; qualcosa a destra e a sinistra si lascia, appunto, troncato il titolo di quello che c&#8217;e&#8217; ai lati.</p>
<p><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/07/googleux_plus.png"><img class="alignnone size-medium wp-image-1272" title="GooglePlus" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/07/googleux_plus-180x300.png" alt="GooglePlus" width="180" height="300" /></a><strong>Google+</strong> utilizza l&#8217;<strong>Action Bar</strong>, mentre la <strong>Navigation Bar</strong> appena sotto e&#8217; molto diversa da quanto visto fino ad oggi. Difficile da leggere e da navigare al tocco, conta comunque sullo swipe delle schermate verso destra e verso sinistra, indicando con delle freccine che ci sono ancora contenuti ai quali accedere ai lati della vista su cui si e&#8217; focalizzati.</p>
<p><span id="more-1269"></span><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/07/googleux_docs.jpg"><img class="size-medium wp-image-1274" title="Google Docs" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/07/googleux_docs-180x300.jpg" alt="Google Docs" width="180" height="300" /></a><strong>Google Docs</strong> utuilizza la stessa <strong>Navigation Bar</strong>  di Google+, pero&#8217; ha un differente <strong>menu&#8217; contestuale</strong> degli elementi rispetto a Google Music.</p>
<p><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/07/googleux_market.png"><img class="alignnone size-medium wp-image-1273" title="Android Market" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/07/googleux_market-180x300.png" alt="Android Market" width="180" height="300" /></a>Anche il nuovo <a title="New Android Market" href="http://googlemobile.blogspot.com/2011/07/new-android-market-for-phones-with.html" target="_blank">Android Market</a> non scampa a qualche incoerenza con le altre app made-in Mountain View. <strong>Action Bar</strong> con navigazione incorporata (la freccia a sinistra), e appena sotto un panel che duplica la sezione dove siamo, con nessuna opzione di navigazione possibile.</p>
<p>Non sono un designer, ma se mi accorgo io di tutte queste macroscopiche incoerenze, figuriamoci l&#8217;occhio allenato di chi lo fa per mestiere. Tra l&#8217;altro, e&#8217; anche difficile prendere a modello qualcosa per poi seguirla e riprodurla nelle proprie applicazioni!</p>
<p>Qualche sito utile sul tema: <a title="Android UI Design Patterns" href="http://www.androiduipatterns.com/">Android UI Design Patterns</a>, <a title="Android Patterns" href="http://www.androidpatterns.com/" target="_blank">Android Patterns</a>, <a title="Top Tips for Android UIs - Getting the Magic on Tablets" href="http://www.slideshare.net/motodev/top-tips-for-android-uis-getting-the-magic-on-tablets">Top Tips for Android UIs &#8211; Getting the Magic on Tablets</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/google-ux-conflict/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Linkflood 2011-07-19: Migrare le proprie app sui tablet Android e Kinect sui dispositivo mobili</title>
		<link>http://www.rainbowbreeze.it/linkflood-2011-07-19-migrare-le-proprie-app-sui-tablet-android-e-kinect-sui-dispositivo-mobili/</link>
		<comments>http://www.rainbowbreeze.it/linkflood-2011-07-19-migrare-le-proprie-app-sui-tablet-android-e-kinect-sui-dispositivo-mobili/#comments</comments>
		<pubDate>Tue, 19 Jul 2011 20:36:55 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[LinkFlood]]></category>
		<category><![CDATA[PostIt]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Krati]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1260</guid>
		<description><![CDATA[Altra settimana, altra raccolta dei piu&#8217; interessanti link che ho trovato in giro per la rete. Sviluppo per mobile, ovviamente, piu&#8217; qualche digressione in tema economico e sulla cultura del lavoro. New programming jargon you coined? &#8211; Direttamente da StackOverflow, una lista dei termini che generazioni di programmatori hanno coniato nel tempo. Simpatico ed imperdibile! [...]]]></description>
			<content:encoded><![CDATA[<p>Altra settimana, altra <a title="Linkflood" href="http://www.rainbowbreeze.it/tag/linkflood/">raccolta</a> dei piu&#8217; interessanti link che ho trovato in giro per la rete. Sviluppo per mobile, ovviamente, piu&#8217; qualche digressione in tema economico e sulla cultura del lavoro.</p>
<p><a title="New programming jargon you coined?" href="http://stackoverflow.com/questions/2349378/new-programming-jargon-you-coined/2444303" target="_blank">New programming jargon you coined?</a> &#8211; Direttamente da StackOverflow, una lista dei termini che generazioni di programmatori hanno coniato nel tempo. Simpatico ed imperdibile!</p>
<p><a title="Android moves to the tablet" href="http://blog.evernote.com/tech/2011/07/18/android-moves-to-the-tablet/" target="_blank">Android moves to the tablet</a> - Il team di Evernote ha scritto un&#8217;interessante post tecnico sulla migrazione e 0ttimizzazione della propria applicazione per i tablet Android, partendo da quella gia&#8217; esistente per gli smatphone. Utilizzo di Fragment, ActionBar, e <a title="Krati" href="http://sna-projects.com/krati/" target="_blank">Krati</a>, una libreria a cui dovro&#8217; dare una guardata al piu&#8217; presto.</p>
<p><a title="Most branded apps are a flop says Deloitte. But why?" href="http://www.guardian.co.uk/technology/appsblog/2011/jul/11/branded-apps-flopping" target="_blank">Most branded apps are a flop says Deloitte. But why?</a> - Una rierca svela che l&#8217;80% delle applicazioni realizzate da piccoli e grossi brand a scopi promozionale vengono scaricate meno di 1000 volte. La chiave per il successo: risolvere un problema reale e creare una canale di comunicazione privilegiato e diretto con l&#8217;utente.</p>
<p><a title="Android: all the improvements from 1.6 to 3.0" href="http://www.androidiani.com/news/android-le-novita-di-tutte-le-distribuzioni-in-uninfografica-54356" target="_blank">Android: all the improvements from 1.6 to 3.0</a> - Infografica che mostra tutte le maggiori novita&#8217; nella piattaforma Android a partire dalla versione 1.6 fino alla 3.0. Un buon riassunto anche per i meno tecnici.</p>
<p><a title="Video for Kindle" href="http://www.frisnit.com/?p=142" target="_blank">Video for Kindle</a> &#8211; Partire da un video ed arrivare a una sequenza di immagini con dei sottotitoli. Ottimo per creare un documento riassuntivo oppure per &#8220;leggere&#8221; il video sul Kindle.</p>
<p><a title="Kinect, Nodejs, and Windows Phone 7 Mango" href="http://innovativesingapore.com/2011/07/kinect-nodejs-and-windows-phone-7-mango/" target="_blank">Kinect, Nodejs, and Windows Phone 7 Mango</a> &#8211; Una guida per utilizzare far dialogare un Kinect con un Windows Phone 7 tramite le socket connection e un server node.js. Stessa logica per utilizzarlo con Android, iPhone e qualunque altro dispositivo che supporti le socket connection.</p>
<p><a title="Developing Android Apps with NetBeans, Maven, and VirtualBox" href="http://netbeans.dzone.com/nb-developing-android-apps" target="_blank">Developing Android Apps with NetBeans, Maven, and VirtualBox</a> &#8211; Se l&#8217;emulatore Android fornito con l&#8217;SDK e&#8217; troppo lento, creare una virtual machine con VirtualBox dove installare un Android-x86 potrebbe risolvere il problema.</p>
<p><a title="What Happens When Your Phone Is Lost Or Stolen" href="http://mashable.com/2011/07/19/lost-stolen-phones/" target="_blank">What Happens When Your Phone Is Lost Or Stolen</a> - Un&#8217;infografica tutta americana con un po&#8217; di percentuali sulla possibilita&#8217; di ritrovare il proprio telefono una volta che lo si e&#8217; perso. Interessante il dato che dice che il 54% dei possessori di smartphone non lo blocca con nessuna password.</p>
<p><a title="Quanto guagna un professore" href="http://www.alfonsofuggetta.org/?p=5025" target="_blank">Quanto guadagna un professore</a> - un professore universitario, Alfonso Fuggetta, che parla della sua retribuzione come docente. Un po&#8217; di luce, con tanto di cedolini, sui miti e sulle leggende che circolano in questo ambiente.</p>
<p><a title="Bored People Quit" href="http://www.randsinrepose.com/archives/2011/07/12/bored_people_quit.html" target="_blank">Bored People Quit</a> - Piccoli segnali e strategie utili ad un team leader per riconoscere se uno dei suoi compagni sta pensando di andare via a causa di noia e routine ormai non piu&#8217; sopportabili.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/linkflood-2011-07-19-migrare-le-proprie-app-sui-tablet-android-e-kinect-sui-dispositivo-mobili/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linkflood 2011-07-11: mHealt, mPayments e punti deboli dei location-based service</title>
		<link>http://www.rainbowbreeze.it/linkflood-2011-07-11-mhealt-mpayments-e-punti-deboli-dei-location-based-service/</link>
		<comments>http://www.rainbowbreeze.it/linkflood-2011-07-11-mhealt-mpayments-e-punti-deboli-dei-location-based-service/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 08:49:54 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[LinkFlood]]></category>
		<category><![CDATA[PostIt]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Android Market]]></category>
		<category><![CDATA[LBS]]></category>
		<category><![CDATA[mHealt]]></category>
		<category><![CDATA[mPayments]]></category>
		<category><![CDATA[Skype]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1255</guid>
		<description><![CDATA[Il LinkFlood di questa settimana e&#8217; tutto dedicato al mobile. Buona lettura! The Future Of Mobile Is The Future Of Everything &#8211; Una visione sull&#8217;evoluzione del &#8220;concetto&#8221; di mobile nei prossimi 10 anni, fatta da CEO, co-founder e persone che questo mondo lo stanno innovando oggi. Sensored devices, discover rather search, connected device. The Future [...]]]></description>
			<content:encoded><![CDATA[<p>Il LinkFlood di questa settimana e&#8217; tutto dedicato al mobile. Buona lettura!</p>
<p><a title="The Future Of Mobile Is The Future Of Everything" href="http://www.businessinsider.com/future-of-mobile-experts-2011-6?op=1" target="_blank">The Future Of Mobile Is The Future Of Everything</a> &#8211; Una visione sull&#8217;evoluzione del &#8220;concetto&#8221; di mobile nei prossimi 10  anni, fatta da CEO, co-founder e persone che questo mondo lo stanno  innovando oggi. Sensored devices, discover rather search, connected  device.</p>
<p><a title="The Future of Hospital Apps" href="http://www.readwriteweb.com/archives/the_future_of_hospital_apps.php" target="_blank">The Future of Hospital Apps</a> &#8211; Passare dalle noiose schermate piene di dati indecifrabili a infografiche da portarti sempre dietro grazie ai tablet (iPad su tutti)</p>
<p><a title="Battleheart for Android" href="http://mikamobile.blogspot.com/2011/06/android.html">Battleheart for Android</a> &#8211; Riflessioni da parte di uno sviluppatore di un gioco a pagamento per Android: e&#8217; la qualita&#8217; che conta, ed e&#8217; possibile ottenere &#8220;meaningiful revenue&#8221; anche dal market di Google. Grazie, soprattutto, alla qualita&#8217; media bassa delle altre applicazioni presenti.</p>
<p><a title="What’s Wrong with Mobile Recommendations?" href="http://urbanmining.wordpress.com/2011/06/22/whats-wrong-with-mobile-recommendations/" target="_blank">What’s Wrong with Mobile Recommendations?</a> &#8211; Un post veramente be fatto e zeppo di link interessanti che spiega i punti deboli dei suggerimenti dei servizi location based.</p>
<p><a title="Android Market website ratings: a week of rants, reviews, and reality checks" href="http://androinica.com/2011/07/android-market-website-ratings-a-week-of-rants-reviews-and-reality-checks/" target="_blank">Android Market website ratings: a week of rants, reviews, and reality checks</a> &#8211; Un&#8217;analisi sui feedback dati dagli utenti alle applicazioni pubblicate sull&#8217;Android Market. Una storia di angry users, che danno 1 stella al primo errore che trovano, e qualche &#8220;angelo custode&#8221;, che cerca invece di difendere e diffondere il suo voto a 5 stelle.</p>
<p><a title="The Future of Mobile Payments" href="http://mashable.com/2011/07/08/the-future-of-mobile-payments-infographic/" target="_blank">The Future of Mobile Payments</a> &#8211; Come si evolvera&#8217; lo scenario dei pagamenti su mobile da qui ai prossimi 4 anni? G+ ha creato un&#8217;infografica che traccia un possibile scenario, tutto basato sulla sparizione del portafoglio fisico in favore dei chip NFC con cui i prossimi smartphone saranno equipaggiati.</p>
<p><a href="http://www.villainrom.co.uk/forum/showthread.php/4849-Skype-with-Video-Support-for-Various-Devices..." target="_blank">Skype per Android</a> &#8211; un apk modificato della nuova versione di Skype, che allarga il  numero di device sui quali e&#8217; possibile fare e ricevere videochiamate.  In attesa del supporto ufficiale.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/linkflood-2011-07-11-mhealt-mpayments-e-punti-deboli-dei-location-based-service/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Collegare G1 e Nexus One per il debug con Linux</title>
		<link>http://www.rainbowbreeze.it/collegare-g1-e-nexus-one-per-il-debug-con-linux/</link>
		<comments>http://www.rainbowbreeze.it/collegare-g1-e-nexus-one-per-il-debug-con-linux/#comments</comments>
		<pubDate>Sat, 02 Oct 2010 07:00:47 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[G1]]></category>
		<category><![CDATA[Nexus One]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1170</guid>
		<description><![CDATA[Il test delle proprie applicazioni Android su un device reale e&#8217; sempre un passo importante per lo sviluppo. Fortunatamente si puo&#8217; affrontare abbastanza semplicemente questa situazione grazie al supporto dell&#8217;SDK e del sistema operativo del telefono. Nel sito di Google questa operazione e&#8217; descritta molto bene, ma manca di alcuni particolari. Ad esempio, l&#8217;USB VendorID [...]]]></description>
			<content:encoded><![CDATA[<p>Il test delle proprie applicazioni Android su un device reale e&#8217; sempre un passo importante per lo sviluppo. Fortunatamente si puo&#8217; affrontare abbastanza semplicemente questa situazione grazie al supporto dell&#8217;SDK e del sistema operativo del telefono. Nel sito di Google questa operazione <a href="http://developer.android.com/guide/developing/device.html" target="_blank">e&#8217; descritta molto bene</a>, ma manca di alcuni particolari.</p>
<p>Ad esempio, l&#8217;<strong>USB VendorID</strong> da usare con un <strong>Nexus One</strong>, dato che non e&#8217; quello HTC di default, ma bensi&#8217; 18d1. Occorrera&#8217; quindi aggiungere, nel file <em>/etc/udev/rules.d/51-android.rules</em> questa riga</p>
<pre class="brush:bash">
SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1", MODE="0666"
</pre>
<p>Aggiungendo i vari device supportati otteniamo:</p>
<pre class="brush:bash">
#Acer
SUBSYSTEM=="usb", SYSFS{idVendor}=="0502", MODE="0666"
#Dell
SUBSYSTEM=="usb", SYSFS{idVendor}=="413c", MODE="0666"
#Foxconn
SUBSYSTEM=="usb", SYSFS{idVendor}=="0489", MODE="0666"
#Garmin-Asus
SUBSYSTEM=="usb", SYSFS{idVendor}=="091E", MODE="0666"
#HTC G1 and others
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
#HTC Nexus One
SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1", MODE="0666"
#Huawei
SUBSYSTEM=="usb", SYSFS{idVendor}=="12d1", MODE="0666"
#Kyocera
SUBSYSTEM=="usb", SYSFS{idVendor}=="0482", MODE="0666"
#LG
SUBSYSTEM=="usb", SYSFS{idVendor}=="1004", MODE="0666"
#Motorola
SUBSYSTEM=="usb", SYSFS{idVendor}=="22b8", MODE="0666"
#Nvidia
SUBSYSTEM=="usb", SYSFS{idVendor}=="0955", MODE="0666"
#Pantech
SUBSYSTEM=="usb", SYSFS{idVendor}=="10A9", MODE="0666"
#Samsung
SUBSYSTEM=="usb", SYSFS{idVendor}=="04e8", MODE="0666"
#Sharp
SUBSYSTEM=="usb", SYSFS{idVendor}=="04dd", MODE="0666"
#Sony Ericsson
SUBSYSTEM=="usb", SYSFS{idVendor}=="0fce", MODE="0666"
#Sony Ericsson
SUBSYSTEM=="ZTE", SYSFS{idVendor}=="19D2", MODE="0666"
</pre>
<p>Un po&#8217; accortezze varie che potrebbero far comodo in caso di problemi:</p>
<ul>
<li>Ricordardi di abilitare il debug mode sul dispositivo come descritto nella guida</li>
<li>Rilanciare UDEV per rendere attive le modifiche: <em>sudo restart udev</em></li>
<li>Rilanciare l&#8217;adb per prendere il carico il nuovo device: <em>adb kill-server</em> seguito da <em>adb start-server</em></li>
</ul>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;"><code>/etc/udev/rules.d/51-android.rules</code>.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/collegare-g1-e-nexus-one-per-il-debug-con-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Modello distribuivo Serial Filling per l’Android Market</title>
		<link>http://www.rainbowbreeze.it/modello-distribuivo-serial-filling-per-android-market/</link>
		<comments>http://www.rainbowbreeze.it/modello-distribuivo-serial-filling-per-android-market/#comments</comments>
		<pubDate>Fri, 24 Sep 2010 07:02:21 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Market]]></category>
		<category><![CDATA[Serial Filling]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1164</guid>
		<description><![CDATA[Un buon modello distributivo puo&#8217; contribuire in maniera sostanziale alla fortuna di un&#8217;applicazione per mobile. Posizionamento e parole chiave efficaci, buoni feedback, pubblicita&#8217; su piu&#8217; canali. Sono tante le strategie che possono aiutare, differenziate per tipo di applicazione, pubblico, target device e altri fattori. Ho notato che l&#8217;Android Market permette un modello distributivo ribattezzato simpaticamente [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-1165" title="android_market_logo" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2010/09/android_market_logo.jpg" alt="" width="200" height="224" />Un buon <strong>modello distributivo</strong> puo&#8217; contribuire in maniera sostanziale alla fortuna di un&#8217;applicazione per mobile. Posizionamento e parole chiave efficaci, buoni feedback, pubblicita&#8217; su piu&#8217; canali. Sono tante le strategie che possono aiutare, differenziate per tipo di applicazione, pubblico, target device e altri fattori.</p>
<p>Ho notato che l&#8217;<strong>Android Market</strong> permette un modello distributivo ribattezzato simpaticamente da un mio <a href="http://www.maurovanetti.info/" target="_blank">amico</a> &#8220;<strong>Serial filling</strong>&#8220;: in pratica si tratta di <strong>realizzare un&#8217;applicazione di base</strong> che va <strong>personalizzata</strong> verso un target molto specifico, per poi essere pubblicata e <strong>distribuita</strong> nelle <strong>tante versioni</strong> realizzate. In genere il guadagno e&#8217; dato dall&#8217;advertising interno all&#8217;applicazione, quasi mai dal suo costo di acquisto.</p>
<p>Prendiamo ad esempio un programma che mostra le citazioni piu&#8217; famose di un certo personaggio, la sua biografia, le foto su Internet ricercate grazie a Google Image, un suo eventuale account Twitter, video su YouTube che lo riguardano e qualche altra cosetta. Bene, create ora una versione dell&#8217;applicativo per ogni personaggio famoso che vi viene in mente, pubblicatela e boom! Abbiamo ottenuto il core-business iniziale di <a href="http://idolware.mobi/" target="_blank">Idolware</a>.</p>
<p>Questo particolare modello distributivo sembra <strong>realizzabile</strong>, nelle sue massime potenzialita&#8217;, <strong>solo sull&#8217;Android Market</strong>. La non necessita&#8217; di un&#8217;approvazione prima di vederla pubblicata come avviene sull&#8217;Apple Store o l&#8217;Ovi Store rende il compito molto piu&#8217; facile, altrimenti aspettare l&#8217;ok per 40-50 app molto simili tra loro potrebbe diventare un calvario. Anche il Marketplace di Windows Phone non permette questo approccio, dato che si possono distribuire al massimo 5 nuove applicazioni gratuite l&#8217;anno con la sottoscrizione di base, e ogni nuova applicazione costa 20 dollari. Se si e&#8217; sicuri dei guadagni allora si potrebbe anche affrontare la spesa, ma se non si e&#8217; sicuri, non ne vale proprio la pena&#8230;</p>
<p><span id="more-1164"></span>Ho adottato questo approccio con la serie di software della famiglia <a href="http://code.google.com/p/webcamholmes/" target="_blank">WebcamHolmes</a>, il porting su Android di un programma che avevo in passato realizzato per <a href="http://www.rainbowbreeze.it/webcam-holmes_it/" target="_blank">Windows Mobile</a> e che permette di visualizzare sul proprio dispositivo un&#8217;immagine proveniente da una webcam e pubblicata su Internet. L&#8217;idea e&#8217; di realizzare diverse versioni, ognuna con le webcam di una importante citta&#8217;, ed <strong>essere molto specifico nel testo presente sul Market</strong> in modo da ottimizzarlo per le ricerche. Ora come ora i risultati sono minimi, con tre versioni personalizzate (Roma, Parigi e Londra) e una omnicomprensiva con tutte le webcam disponibili, il guadagno medio tramite annunci AdMob all&#8217;interno dell&#8217;applicazione si attesta su circa un dollaro al giorno. Staremo a vedere quando ne avro&#8217; qualche decina pubblicate quello che succedera&#8217;.</p>
<p>Tra l&#8217;altro, gli strumenti di sviluppo per Android offrono alcune particolarita&#8217; che sembrano essere perfette per realizzare applicazioni atte al serial filling: le <a href="http://developer.android.com/guide/developing/eclipse-adt.html#libraryProject" target="_blank">librerie</a>, i file di risorse e uno script di build del programma.</p>
<p>Si <strong>realizza il programma di base</strong>, con l&#8217;accortezza di <strong>spostare tutto quello che va personalizzato nei file di risorge</strong> (immagini, stringhe, valori ecc), si fa diventare questo progetto una libreria e poi si <strong>crea un nuovo progetto</strong> per la versione finale e personalizzata: si include questa libreria, <strong>si cambia il namespace</strong> nell&#8217;AndroidManifest.xml in modo da renderlo univoco e si <strong>inseriscono le risorse personalizzate</strong>, e solo quelle. Al resto pensa tutto il sistema.</p>
<p>Quando poi c&#8217;e&#8217; da rilasciare una nuova versione delle applicazioni, magari per correggere un bug o introdurre una nuova funzionalita&#8217;, si cambia solo il codice nella libreria principale e si ricompilano tutti i progetti dove questa e&#8217; inclusa. Al limite quest&#8217;ultimo processo si puo&#8217; automatizzare con uno <a href="http://developer.android.com/guide/developing/other-ide.html#Building" target="_blank">script di build</a>.</p>
<p>Io in genere cancello anche la cartella dei sorgenti dalle app finali, visto che tutto il  codice, come dicevo prima, risiede nella libreria e per il namespace uso una radice fissa e una parte finale variabile, ad esempio <em>it.rainbowbreeze.webcamholmes.paris</em>, <em>it.rainbowbreeze.webcalholmes.rome</em> ecc ecc. Ora non so con le nuove versioni dell&#8217;ADT, <strong>ma non usate il carattere &#8216;-&#8217; nel nome della libreria</strong>, ci ho perso un giorno intero a capire che creava problemi!</p>
<p>Buon serial-filling!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/modello-distribuivo-serial-filling-per-android-market/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Appello agli sviluppatori Android per poter installare piu’ applicazioni nel proprio device</title>
		<link>http://www.rainbowbreeze.it/un-appello-agli-sviluppatori-android-per-installare-piu-applicazioni/</link>
		<comments>http://www.rainbowbreeze.it/un-appello-agli-sviluppatori-android-per-installare-piu-applicazioni/#comments</comments>
		<pubDate>Sat, 18 Sep 2010 09:16:50 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[AndroidManifest.xml]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1159</guid>
		<description><![CDATA[Buonaparte degli utilizzatori Android si saranno trovati a dover fronteggiare il problema della mancanza di spazio per installare nuove applicazioni. In passato a risolvere il prolema ci ha pensato App2SD, una piccola perla sviluppata dalla comunita&#8217; hacker che permette di muovere qualunque programma nella memoria SD. Unico problema, funziona solo sui rooted device. Dalla versione [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2010/09/AndroidSDcard.jpg"><img class="alignleft size-full wp-image-1160" style="margin: 2px 4px;" title="AndroidSDcard" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2010/09/AndroidSDcard.jpg" alt="" width="199" height="242" /></a>Buonaparte degli utilizzatori Android si saranno trovati a dover fronteggiare il problema della mancanza di spazio per installare nuove applicazioni. In passato a risolvere il prolema ci ha pensato <a href="http://wiki.cyanogenmod.com/index.php/Apps2SD" target="_blank">App2SD</a>, una piccola perla sviluppata dalla comunita&#8217; hacker che permette di muovere qualunque programma nella memoria SD. Unico problema, funziona solo sui rooted device.</p>
<p>Dalla versione 2.2 (SDK 8), Android permette nativamente di spostare le applicazioni nella SD, ma solo se queste <a href="http://developer.android.com/guide/appendix/install-location.html" target="_blank">sono progettate per farlo</a>. In soldoni, basta mettere questa riga nell&#8217;AndroidManifest.xml, nel tag &lt;manifest&gt;:</p>
<p><em>android:installLocation=&#8221;auto&#8221;</em> oppure <em>android:installLocation=&#8221;preferExternal&#8221;</em></p>
<p>Facile no? Peccato che moltissime applicazioni ancora non usino questa piccola accortezza. Per questo ho deciso di mandare una mail a tutti gli sviluppatori dei programmi che uso e che non la supportano ancora, chiedendogli di farlo. Se anche tu hai mancanza di spazio nel tuo device, guarda la mail dello sviluppatore nel market e inviagli il messaggio qui sotto ;)</p>
<p><span id="more-1159"></span></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Subject: <em>(app name)</em> support for storage memory installation</p>
<p>Dear developer,</p>
<p>I&#8217;m an happy user of your application. It will be great if you can add support for moving the application on storage memory, because it&#8217;s a common issue of Android devices to run out of app memory in a short time (like mine).</p>
<p>It&#8217; easy, you must only add this line inside the AndroidManifest.xml<em><br />
android:installLocation=&#8221;auto&#8221;</em></p>
<p>You can find more info here:</p>
<p>http://developer.android.com/guide/appendix/install-location.html</p>
<p>Thank you for your great work!</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Vediamo che effetto avra&#8217; questa mail: quando io ricevo email di questo genere, cerco sempre di accontentare chi mi scrive.</p>
<p>Update: ho mandato <strong>22 email</strong> ai diversi sviluppatori: nel giro di qualche giorno: <strong>5 mi hanno detto che avrebbero aggiunto queste feature</strong> nella prossima release, 2 che non potevano aggiungerla per caratteristiche particolari dell&#8217;app (supporto ai widget), 2 email non sono arrivate per errori nell&#8217;indirizzo. Sto aspettando le altre risposte, ma gia&#8217; cosi&#8217; direi che il risultato e&#8217; ottimo!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/un-appello-agli-sviluppatori-android-per-installare-piu-applicazioni/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Come ricevere e spedire email dall’emulatore Android</title>
		<link>http://www.rainbowbreeze.it/come-ricevere-e-spedire-email-dallemulatore-android/</link>
		<comments>http://www.rainbowbreeze.it/come-ricevere-e-spedire-email-dallemulatore-android/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 13:18:46 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Emulator]]></category>
		<category><![CDATA[k9mail]]></category>
		<category><![CDATA[mail]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1157</guid>
		<description><![CDATA[L&#8217;emulatore Android non ha installato nessun client di posta elettronica, cosiccome le altre applicazioni rilasciate direttamente ad Google (Market, Maps ed altre). Se occorre testare un&#8217;applicazione che spedisce una mail, magari con un allegato, non si ha quindi modo di farlo. In alternativa, si potrebbe fare il debug del proprio programma direttamente da un dispositivo [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="margin: 2px 4px;" title="k9mail" src="http://code.google.com/p/k9mail/logo?cct=1281457380" alt="k9mail logo" width="48" height="48" />L&#8217;emulatore Android non ha installato nessun client di posta elettronica, cosiccome le altre applicazioni rilasciate direttamente ad Google (Market, Maps ed altre). Se occorre testare un&#8217;applicazione che spedisce una mail, <a href="http://stackoverflow.com/questions/587917/trying-to-attach-a-file-from-sd-card-to-email" target="_blank">magari con un allegato</a>, non si ha quindi modo di farlo. In alternativa, si potrebbe fare il debug del proprio programma direttamente da un dispositivo fisico, cosa non sempre comoda e fattibile.</p>
<p>Per fortuna esiste <a href="http://code.google.com/p/k9mail/" target="_blank">k9mail</a>, un&#8217;applicazione che ha come obiettivo proprio quello di realizzare un client di posta elettronica prendendo spunto da quello rilasciato da Google stessa.</p>
<p>Una volta scaricato l&#8217;ultimo apk dell&#8217;applicazione disponibile sul sito, per installarlo nel dispositivo bastera&#8217; andare con il prompt dei comandi (Windows) o la console (Linux) dov&#8217;e&#8217; stato salvato il file .apk e lanciare il comando<br />
<em> adb install K-9-2.000.apk</em></p>
<p>Il package verra&#8217; installato nell&#8217;emulatore e, una volta configurato con un account di posta elettronica, sara&#8217; possibile fare tutte le prove del caso</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/come-ricevere-e-spedire-email-dallemulatore-android/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Consultare le mappe di Google Maps offline su Android</title>
		<link>http://www.rainbowbreeze.it/consultare-le-mappe-di-google-maps-offline-su-android/</link>
		<comments>http://www.rainbowbreeze.it/consultare-le-mappe-di-google-maps-offline-su-android/#comments</comments>
		<pubDate>Fri, 27 Aug 2010 07:30:57 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Google Maps]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1142</guid>
		<description><![CDATA[La possibilita&#8217; di connettere gli smartphone alla Rete in totale mobilita&#8217; rende i piu&#8217; disparati contenuti accessibili quando ci servono, senza aver pianificato di farlo. Caso tipico le mappe di Google Maps, Yahoo Maps, Microsoft Bing e altri servizi simili. Quando pero&#8217; andiamo all&#8217;estero o per qualche motivo siamo senza connessione, sono davvero pochissime le [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2010/08/bigplanettracks.png"><img class="alignleft size-full wp-image-1143" style="margin: 2px 4px;" title="bigplanettracks" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2010/08/bigplanettracks.png" alt="" width="213" height="320" /></a>La possibilita&#8217; di connettere gli smartphone alla Rete in totale mobilita&#8217; rende i piu&#8217; disparati contenuti accessibili quando ci servono, senza aver pianificato di farlo. Caso tipico le mappe di Google Maps, Yahoo Maps, Microsoft Bing e altri servizi simili. Quando pero&#8217; andiamo all&#8217;estero o per qualche motivo siamo senza connessione, sono davvero pochissime le applicazioni che permettono di salvare i dati per una consultazione offline&#8230; Ma a tutto esiste rimedio.</p>
<p>Prendiamo ad esempio <a href="http://code.google.com/p/big-planet-tracks/" target="_blank">Big Planet Tracks</a>, un programma che permette di accedere alla cartografia di Google Maps e registrare un percorso. Tra le opzioni c&#8217;e&#8217; quella di salvare le mappe scaricate in un database locale. Con un po&#8217; di pazienza, si potrebbe navigare in tutta la zona di nosto interesse, nei vari livelli di zoom e rendere queste informazioni accessibili anche offline. Ma se, ad esempio, ci si vuole portar dietro la cartografia dell&#8217;intera <a title="Corsica, tanto mare e completo relax" href="http://www.rainbowbreeze.it/corsica-tanto-mare-e-completo-relax/">Corsica per una passeggiata in mezzo al deserto degli Agriates</a>?</p>
<p>Proprio a questo scopo e&#8217; stato creato un alto programma, <a href="http://mobac.dnsalias.org/">Mobile Atlas Creator</a> (conosciuto anche come TrekBuddy Atlas Creator). Un software open-source, scritto in Java, da eseguire sul &#8220;computer di casa&#8221;. Selezionando una zona e dei livelli di zoom, questo scarichera&#8217; per noi tutte le mappe necessarie per poi salvarne in un formato compatibile con diversi applicativi che supportano la navigazione offline, come il sopracitato Big Planet Tracks e piu&#8217; di altri 20 tra Android, Windows Mobile e navigatori GPS.</p>
<p>I passi dettagliati da seguire sono riportati in questa <a href="http://code.google.com/p/big-planet-tracks/wiki/HowToSaveGoogleMapsForOfflineUseOnAndroid" target="_blank">pagina wiki</a>:</p>
<ol>
<li>Install the <a rel="nofollow" href="http://java.sun.com/javase/downloads/index.jsp">Java Runtime Environment</a> (JRE or JDK, at least JRE v1.6.0_14 or later).</li>
<li>Download and decompress <a rel="nofollow" href="http://android-map.googlecode.com/files/Mobile_Atlas_Creator_1.7_SQLite.zip">Mobile_Atlas_Creator_1.7_SQLite.zip</a> (Official Edition + SQLite Libs + Settings for &#8220;BigPlanet SQLite&#8221; format).</li>
<li>Copy the <tt>libsqlite_jni</tt> corresponding to your OS platform to the MOBAC folder (which <tt>Mobile_Atlas_Creator.jar</tt> is located).</li>
<li>Double click the <tt>Mobile Atlas Creator.exe</tt> on Windows (Run <tt>start.sh</tt> on Linux).</li>
<li>Use the left mouse button to select the download area and right mouse button to move the map after executing the MOBAC.</li>
<li>Click the <tt>"Add selection"</tt> button after selecting the multiple <tt>"Zoom Levels"</tt> of the map.</li>
<li>Confirm the <tt>"Map Source"</tt> to be <tt>"Google Maps"</tt> (default value, you can choose another types).</li>
<li>Confirm the <tt>"Format"</tt> of <tt>"Atlas settings"</tt> to be <tt>"BigPlanet SQLite"</tt> (default value).</li>
<li>Start downloading the map after clicking the <tt>"Create atlas"</tt> button.</li>
<li>After the download is finished, please click the <tt>"Open Atlas Folder"</tt> button to get the database named <tt>BigPlanet_maps.sqlitedb</tt>.</li>
<li>Copy <tt>BigPlanet_maps.sqlitedb</tt> to Android phone&#8217;s SD card whose folder is <tt>"/sdcard/RMaps/maps/BigPlanetTracks.sqlitedb"</tt> (You can use any filename as long as you use the same filename extension above).</li>
<li>Make sure to enable Android phone&#8217;s <tt>My Location</tt> setting (check <tt>"Use wireless networks"</tt> and/or <tt>"Use GPS satellites"</tt>).</li>
<li>Finally,  please execute Big Planet Tracks or RMaps, the map will be moving to  your location (if you successfully receive the latitude and longitude  coordinates from Internet or GPS satellites).</li>
</ol>
<p><span id="more-1142"></span>Personalmente ho verificato che un livello di zoom di 15, massimo 16, e&#8217; l&#8217;ideale per ogni tipo di cartografia, sia stradale che satellitare. Si possono anche scegliere certe aree della mappa e scaricare solo quelle ad un livello di zoom maggiore.</p>
<p>La suite completa dei vari programmi fin qui illustrati si puo&#8217; trovare nel <a href="http://code.google.com/p/android-map/" target="_blank">repository su Google Code</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/consultare-le-mappe-di-google-maps-offline-su-android/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

