Archive for the 'Web 2.0' Category

RiminiCamp 2011: un resoconto parziale

La locandina del Riminicamp 2011Ho avuto la fortuna di partecipare (almeno parzialmente) a questa iniziativa che vi avevo segnalato qualche giorno fa, anche se per impegni personali ho potuto assistere soltanto alla prima tavola rotonda, senza purtroppo partecipare ai barcamp del pomeriggio.
Devo dire che la mia impressione è stata ottima. Il passaggio del testimone tra il primo gruppo di relatori (i padroni di casa, Pietro Leoni, Irina Imola, Mauro Ferri, rispettivamente dirigente, assessore e web content manager  del Comune di Rimini) e il secondo (Claudio Forghieri, moderatore, Gianni Dominici, Stefano Epifani, Ernesto Belisario, Laura Sartori)  ha reso bene quella che è la transizione che sta avvenendo. I promotori dell’incontro, ancora con un approccio tradizionale al web pubblico, ai suoi linguaggi, ma perfettamente consci di essere ad un punto di svolta, hanno lasciato la parola a relatori che hanno dispiegato una visione e un linguaggio nuovo. Sia chiaro che non si intende dare all’aggettivo “tradizionale” una connotazione negativa, va ricordato che solo il 18 ottobre scorso è stato messo online il portale dati.gov.it, la prima azione concreta della PA nel campo degli open data. Con la regione Emilia Romagna che, assieme a pochi altri, può essere ben considerata uno degli early adopters.

La transizione è ben descritta dall’oggetto della tavola rotonda cui ho assistito:  “web e PA: dalle reti civiche ai social media”

Ormai tutte le amministrazioni pubbliche, a tutti i livelli, hanno un loro sito web. A causa dell’interesse crescente delle persone nei confronti dei social network, e per consentire e favorire l’esercizio della cittadinanza digitale, è necessario fare un passo in più.
I capisaldi della rivoluzione del Governo 2.0 sono due: il presidio (non la semplice presenza) nei social network, e la convinta adesione all’open data, “liberando” i dati pubblici e mettendoli a disposizione di cittadini e imprese. In breve, passare dall’informazione alla conversazione.

Non è più soltanto un problema di trasparenza, ma qualcosa che va oltre: attivare conversazioni e liberare dati possono favorire la creazione di user generated content, lo sviluppo dell’intelligenza collettiva e di reale valore pubblico. L’obiettivo delle pubbliche amministrazioni deve essere dunque quello di riconcepire il ruolo del sito web istituzionale.

Il fatto è che preseguire questo obiettivo pone sul campo una serie di problemi impegnativi, che ho provato a schematizzare ma che in realtà si sommano e si compenetrano:

I costi
I costi di accesso ai network sociali è praticamente nullo, ma gli amministratori non si devono illudere. Attivare conversazioni con i propri cittadini richiede organizzazione e preparazione. Nessuna innovazione reale si fa a costo zero, nessuna conversazione proficua può essere gestita dagli stagisti  o con gli account di SNS che restano attivi giusto per il tempo della campagna elettorale (il dato esposto da Epifani è impressionante: il 78%)

Le competenze
Le competenze (skills) vanno analizzate sui due poli della comunicazione. Da una parte, l’età media della PA rimane alta e ciò non favorisce l’adozione di nuove tecnlogie. Saper utilizzare i SNS viene ancora vista come una competenza informatica, come se per aprire un libro fossero necessarie competenze tipografiche. Il grido di battaglia dovrebbe essere “Formazione, formazione, formazione” ma la formazione costa, e nei ranghi ridotti di alcune amministrazioni il costo della perdita di un’ora di produttività per un’ora di formazione è rilevante. L’idea può essere quella dell’autoformazione, oppure la creazione di una social media policy, sul solco di altre esperienze in tal senso (Department of Justice  of Victoria, Australia).
L’altra faccia della medaglia è quella dei cittadini. Restano più che urgenti in Italia politiche di inclusione digitale, certamente sul lato delle infrastrutture ma soprattutto sul lato dell’alfabetizzazione (il digital divide, a differenza di quanto ci si aspetterebbe, non riguarda soltanto la componente più anziana della popolazione, questo quanto emerso nel corso della tavola rotonda)

Il paradigma
Il cambiamento nelle PA deve riguardare innanzitutto la forma mentis. Penso, tanto per fare un esempio, alle due ultime grosse campagne pubbliche, la PEC e il “Mettiamoci la faccia”. Trasparenza e valutazione sono elementi importanti, ma la loro applicazione è figlia di un modo “vecchio” di aprirsi ai cittadini. Lascio al lettore la ricerca delle critiche sulla PEC, dico solo che sostituire la raccomandata cartacea con quella elettronica sembra una rivoluzione a metà. Ha senso uno standard tutto italiano? E ancora: le famose faccine di Brunetta sono un tipo di feedback assolutamente limitato. Il denaro pubblico speso per i monitor touch screen che troviamo in molti sportelli pubblici non poteva essere utilizzato per progetti migliori?

La burocrazia
La P.A. non è snella, i livelli di responsabilità sono molti. L’ottica è ancora quella dell’emissione di un provvedimento (ottica importante, ma la PA moderna non può essere semplicementea una scatola nera con una istanza in ingresso e un provvedimento in uscita. Deve essere sempre più una rete di servizi, dove i cittadini contribuiscono al risultato. Sarebbe meraviglioso potenziare in senso social l’art. 11 della legge 241/1990 !

La resistenza
Molto semplicemente, davvero gli amministratori hanno voglia di mettersi in gioco? Comun-icare (mettere in comune cose) è faticoso, significa scoprire il fianco alle critiche, significa saperle gestire.

Il soggettivismo etico
Ai cittadini interessa davvero partecipare? Quanto ciò dipende dalla volontà reale di partecipazione stessa e quanto dall’usabilità della piattaforma per la comunicazione?

Insomma, di “carne al fuoco” ce n’è davvero tanta, ma spero, nell’estrema sintesi cui sono costretto, di avere dato qualche piccolissimo spunto di riflessione. Utilizzando la linkografia che vi propongo e con un bel giro per la Rete, potrete farvi un’idea della bellissima giornata di sabato. C’è una cosa che invece consiglio di fare di persona (Riminesi e non): una bella visita al Museo della Città, dove le dieci antenne wi-fi indoor (più le due esterne istallate nel 2010) assicurano una connessione stabile e veloce.

Concludo con la speranza che il Comune di Rimini, visto che il RiminiCamp del 3 dicembre ha coinciso con la Giornata Internazionale dell’open data , si adegui velocemente liberando quanti più dataset possibile. Spero inoltre che qualcun altro voglia segnalare qualche altro resoconto della giornata che copra la parte di evento che ahimè non ho potuto seguire.

Linkografia

Il sito web del Comune di Rimini
La pagina Facebook del Comune di Rimini
L’account twitter del Comune di Rimini
La timeline della discussione su twitter con hashtag #riminicamp2011
Il vademecum per le PA sugli open data
# Le slides di Salvatore Romano (intervento della seconda tavola rotonda)

BarCamp a Rimini

BarCamp RiminiSegnalo una iniziativa piuttosto interessante che una volta tanto si svolge a due passi da casa mia. Il Comune di Rimini ha organizzato per sabato 3 dicembre un Barcamp dal titolo “La Pubblica Amministrazione in Rete”.  Si tratta, cito direttamente dal wiki, di un “un evento organizzato dal Comune di Rimini per affrontare assieme ad esperti, tecnici e cittadini temi legati alla società dell’informazione e alla cittadinanza digitale con particolare riferimento al ruolo che una pubblica amministrazione può avere per favorire la crescita della conoscenza e la partecipazione dei cittadini“.

L’appuntamento, lo ripeto, è per Sabato 3 Dicembre, al Museo di Rimini, dalle 9.30 alle 17.30.

Rimando alla pagina dedicata per la consultazione del programma completo, ma desidero segnalare che, prima del barcamp vero e proprio, si terrà una tavola rotonda alla quale parteciperanno esperti del calibro di Stefano Epifani, Gianni Dominici, Ernesto Belisario che gli assidui frequentatori dei social network credo conoscano bene.

Io farò di tutto per esserci, e voi?

“Quando la Rete diventa pop”. Speranza o utopia?

Ricomincio a scrivere dopo tanto, troppo tempo, su questo blog raccontandovi di una bella serata trascorsa ieri.
Nell’ambito della manifestazione riminese Moby Cult – Incontro con l’autore, ho assistito, in compagnia di digitaladoptive, alla presentazione del libro “Network effect. Quando la rete diventa pop“, curato da Lella Mazzoli. Tra i contributi, quelli di Giovanni Boccia Artieri e di Laura Gemini, persone che ho avuto modo di conoscere durante le mie esperienze in Rete (e poi, fortunatamente, anche di persona). Il testo, a mio parere, è abbastanza complesso, non fosse altro per il fatto che la mia formazione non è di tipo sociologico. Ma è stato molto interessante apprezzare gli interventi degli autori che hanno tentato di diffondere le tematiche espresse nel libro a un audience eterogenea.

Vorrei condividere con voi le mie personali riflessioni scaturite dalla serata, riflessioni che mi hanno lasciato con una inquietudine di fondo.
E’ certamente un fatto la frequentazione dei SN da parte di strati sempre più vasti della popolazione, tanto vasti da considerare la Rete “pop” , secondo il titolo del volume. Tuttavia, a mio avviso, ci sono ancora difficoltà, o quantomeno punti non risolti. Lo stesso termine “pop”, per come è stato associato alla musica, rimanda a melodie semplici, adatte a tutti, indifferenziate, che più che creare si basano su modifiche di temi esistenti (mi sono permesso di rielaborare il lemma su Wikipedia).

Come tutte le “rivoluzioni” c’è certamente un ottimisimo di fondo, anche da parte degli studiosi di ieri sera. Le mie esperienze in Rete nascono nel 1994, ricordo bene quell’entusiasmo degli anni Novanta schiantarsi il 10 Marzo 2000, con il manifestarsi dell’Internet Bubble. Ed ecco perchè preferisco essere più cauto evidenziando le questioni ancora aperte:

1) L’effetto traino dei media tradizionali ha consentito l’accesso ai SN da parte di tantissimi utenti. Quanti di loro sfruttano davvero questi strumenti rivoluzionari? Spesso le relazioni sono superficiali, mantengono semplicemente un contatto con chi è lontano o semplicemente completa una relazione vicina con conversazioni di scarso spessore.

2) La produzione di contenuti, paradigma fondante del web 2.0, è molto limitata. Più che creare qualcosa di nuovo, ci si mette sotto una bandiera. Più facile “far parte di” che non “contribuire a“. “Diventare fan” (parlo di FB) spesso si concretizza in una semplice etichetta.

3) La scarsa partecipazione porta spesso e volentieri alla noia. I SN hanno parecchi utenti ma poi quelli effettivi sono pochi (si parla di un terzo di quel terzo di italiani che usano Internet). E quei SN dove “l’investimento partecipativo” è alto, come ad esempio Second Life, addirittura desertificano. Neanche i blog  godono di ottima salute (il mio per primo): le riflessioni costano fatica, scrivere è faticoso, ed è molto più semplice cedere alle comunicazioni superficiali sui SN).

4) Il GROSSO problema della privacy. Pur essendo d’accordo sul fatto che per le nuove generazioni il confine tra pubblico e privato è più labile, permangono problemi di consapevolezza. Le campagne come “Think before you post” o l’opuscolo “Social network: attenzione agli effetti collaterali” pubblicato dal nostro Garante per la protezione dei dati personali.

5) Privacy a parte, è ancora forte il problema complessivo del digital divide, nell’accezione squisitamente culturale e non infrastrutturale (aspetto cui comunque il nostro Paese è parecchio indietro). Chi educa all’utilizzo corretto della Rete? E’ sufficiente la pratica o, come penso io, ci vogliono strumenti culturali che gran parte della popolazione (giovani generazioni comprese) non ha? E, anticipando il punto 6, la politica ha interesse in questa educazione all’uso?

6) Il problema della politica. Da un lato ci sono forze (i frequentatori dei SN), che mettono sullo stesso piano il loro “io” pubblico e privato, che spingono alla partecipazione e alla trasparenza aziende e amministrazioni pubbliche; Dall’altro lato, “curiosamente”, accade che in Europa, al forte sviluppo dei SN, si contrappone una produzione normativa volta ad imbrigliare l’utilizzo della Rete (la nota vicenda D’Alia, le limitazioni francesi alla net neutrality, i tentativi di equiparazione tra blog e carta stampata, solo per fare alcuni esempi). Propaganda e non partecipazione, questo è ciò che conta per chi governa (concetto ben espresso da H. Lasswell e dalla scuola di Chicago, oltre che ovviamente da quello che riesco a comprendere del concetto di “Cultura di massa”, di “Tolleranza repressiva” e di “Concessione di libertà apparenti” di Marcuse).

Considerando tutti questi elementi, sembra che l’instaurarsi di relazioni con un minimo di creatività passi allora per le élites, gruppi ristretti di popolazione cui non interessa la massa critica. Lo stesso intervento di Laura Gemini, sull’utilizzo della Rete come stimolo alla creatività, è passato per la citazione delle avanguardie, che, mi pare, altro non siano se non élites.

Anche l’intervento di Luca Rossi mi porta alla stessa conclusione. Il videogioco è una grande metafora della società, dove chi ha la passione, la scintilla creativa, gioca, crea relazioni, tenta le via del cambiamento, e che si ritira non  appena la qualità di quella relazione decade.

Riprendo una frase di Giovanni Boccia Artieri

Cosa accade nel momento in cui milioni di persone nel mondo non sono più semplicemente pubblico di massa […] ma possono produrre connessioni “di massa” tra loro, con e attraverso contenuti che imparano non solo a fruire ma a produrre?

A mio modo di vedere le mutazioni di cui parla Giovanni sono ancora infinitesimali, e quello che è peggio e che ci sono spinte contrarie.

La mia riflessione finale:  Internet è un fenomeno eversivo (intendiamoci, inteso come sovversione “culturale” dell’ordine costituito). L’élite che comanda la società facendo leva innanzitutto sul suo potere economico la osteggia, un’altra elite (gli “eversivi” di cui sopra) che fanno fatica a fare breccia sugli altri che, in ogni caso, utilizzano i SN con un modello che si rifà in gran parte ai media tradizionali.

Non posso far altro che concludere ringraziando gli autori per aver suscitato in me tali riflessioni, giuste o sbagliate che siano (ribadisco, non sono in grado di sostenere un approccio sociologico al problema). Ma almeno è un punto di partenza per un dibattito di cui, se vorrete, sarò felice di attenderne gli sviluppi. Nel frattempo, se volete acquistare il libro, sappiate che non ho concordato nessuna percentuale 🙂

Layout XML per la UI Android: primi passi

Per la costruzione della nostra prima, semplicissima, applicazione Android, ci siamo affidati a Java, linguaggio potente ma al tempo stesso complicato specie per chi non ha esperienze di programmazione (e di debugging).
Fortunatamente Android consente un’altra modalità di costruzione delle  interfacce utente (UI), basate su file XML. Scopo di questo articolo è appunto quello di ottenere lo stesso risultato del tutorial precedente utilizzando un layout XML.
Torniamo per un attimo all’applicazione dell’articolo precedente. Eclipse, o meglio un suo plugin, durante l’elaborazione ha creato automaticamente un file di layout denominato main.xml. Siccome la nostra prima applicazione ha utilizzato codice java, quel file è stato ignorato.
Ecco come eseguire le opportune modifiche alla nostra prima applicazione. Andiamo nell’Eclipse Package Explorer, poi nella cartella /res/layout/ e apriamo il file main.xml.
Per vederne la struttura, clicchiamo sulla scheda main.xml posizionato in fondo alla finestra di lavoro. Sostituiamo il contenuto col seguente codice e salviamo

<?xml version=”1.0″ encoding=”utf-8″?>
 <TextView   xmlns:android=”http://schemas.android.com/apk/res/android
     android:layout_width=”fill_parent”
     android:layout_height=”fill_parent”
     android:text=”@string/hello”
  />

Adesso andiamo dentro la cartella res/values/ e apriamo il file strings.xml. Qui inseriremo tutte le stringhe di testo necessarie alla nostra U(ser) I(nterface).  Nell’articolo precedente abbiamo cominciato con la visualizzazione dei testi identificati dalle variabili hello and app_name. Potremmo ad esempio apportare le seguenti modifiche:

<?xml version=”1.0″ encoding=”utf-8″?>
 <resources>
  <string name=”hello”>Questo testo è contenuto nel file strings.xml</string>
  <string name=”app_name”>Viva Android, specie se uso XML</string>
</resources>

Adesso apriamo la classe java che abbiamo creato per il primo esercizio e “diciamole” di utilizzare il layout xml appena definito:

package com.example.helloandroid;
  import android.app.Activity;
  import android.os.Bundle;
  public class HelloAndroid extends Activity
     {   
         @Override    public void onCreate(Bundle  
          savedInstanceState)  
                                                     super.onCreate(savedInstanceState);     
                                                     setContentView(R.layout.main);   
                                                  }
      } 

Invece di passare a setContentView() un oggetto View , gli abbiamo dato il riferimento al layout XML. Tale risorsa è identificata da R.layout.main, un oggetto compilato che rappresenta il layout definito in /res/layout/main.xml. Al di là delle stringhe visualizzate, il risultato è lo stesso della prima applicazione.

Tornando al file main.xml, diamo un’occhiata agli attributi (quattro) dell’elemento TextView

xmlns:android
Dichiarazione di namespace, che associa al prefisso android lo spazio dei nomi definito all’indirizzo http://schemas.android.com/apk/res/android.

android:layout_width
definisce quanto dello schermo disponibile deve essere riservato alla View.

android:layout_height
identico a android:layout_width, solo che si riferisce all’altezza dello schermo disponibile.

android:text
Definisce il testo che TextView deve visualizzare. Nell’esempio, le stringhe non sono inserite direttamente ma vengono “pescate” dal file string.xml. E’ una buona pratica perchè, in caso di modifica dei testi da visualizzare, modificheremo quest’ultimo file anzichè modificare il file di layout.

Linkografia
1) Per la realizzazione di questo piccolo post si è attinto largamente alla documentazione ufficiale di Android relativa alle UI.
2) Per la spiegazione concettuale di cosa sia un namespace si può attingere al lemma su Wikipedia , a questa risorsa di html.it o all’ottimo documento del Prof. Fabio Vitali dell’Università di Bologna.

Inserimento markers su Google Maps V3

Dopo l’articolo nel quale abbiamo imparato a visualizzare una semplice Google Map V3, tentiamo di costruire qualcosa di più utile. L’esigenza potrebbe essere quella di visualizzare su di una mappa centrata una serie di punti particolari.
Con lo scopo di facilitare la comprensione dei termini utilizzati, ricordo che secondo le specifiche di Google Maps tutto ciò che può essere identificato da coordinate geografiche é definito overlay. Un particolare tipo di overlay è il marker, cioè il singolo punto sistemato su una mappa.
Nell’esempio che vi propongo, su una Google Map vengono visualizzati i markers relativi ai luoghi dove ho abitato io e alcuni elementi della mia famiglia. Al passaggio del mouse su ogni marker viene visualizzato il tipo di scuola.
Prima  di cominciare abbiamo bisogno delle coordinate dei punti che desideriamo visualizzare. A tale scopo o annotiamo i dati forniti dal nostro gps oppure utilizziamo applicazioni di geocoding, in grado di estrarre le coordinate da un indirizzo. Possiamo far riferimento a servizi come http://mygeoposition.com/ .

Una volta ottenuti i dati, si tratta di “passarli” al nostro codice. La scelta che ho fatto è stata quella di caricare i dati in tre vettori (array), uno per le latitudini, uno per le longitudini e uno per le descrizioni dei markers.
In fase di visualizzazione, i dati dei vettori verranno letti attraverso un ciclo iterativo for.

var i = 0;
for (i=0; i<lat[1].length; i++)
{
var marker = new google.maps.Marker({
position: new google.maps.LatLng(lat[i], long[i]),
map: map, title: descr[i] });
}

Il risultato lo trovate qui mentre qui sotto potete esaminare un estratto del codice usato.

<html>
<head>
<meta name=”viewport” content=”initial-scale=1.0, user-scalable=no” />
<meta http-equiv=”content-type” content=”text/html; charset=UTF-8″/>

<script type=”text/javascript” src=”http://maps.google.com/maps/api/js?
                 sensor=false”></script>
<script type=”text/javascript”>

function carica_variabili() {

//definizione coordinate su cui centrare la mappa
var lat_centro = “44.114773”;
var long_centro = “9.8517”;

//inizializzazione vettori
var lat = new Array();
var long = new Array();
var descr = new Array();

//popolamento vettori. Per aggiungere punti è sufficiente inserire una nuova terna di
// valori:  lat[4], long[4], descr[4] e cosi’ via

lat[0] = “44.111206”;
long[0] = “9.834749”;
descr[0] = “Qui ho abitato fino al 1990”;

lat[1] = “44.117701”;
long[1] = “9.871722”;
descr[1] = “Qui ho abitato fino al 2000”;

lat[2] = “44.113025”;
long[2] = “9.843195”;
descr[2] = “Qui abita mia zia Maria”;

lat[3] = “44.118320”;
long[3] = “9.846319”;
descr[3] = “Qui abita mia sorella”;

//Opzioni della mappa: zoom livello 14, centrata su un punto particolare,
//modalità IBRIDA

var Opzioni = {
        zoom: 14, center: new google.maps.LatLng(lat_centro, long_centro),
        mapTypeId: google.maps.MapTypeId.HYBRID,
       scaleControl: false    }

var map = new google.maps.Map(document.getElementById(“map_canvas”), Opzioni);

//ciclo FOR per la lettura dei valori dei vettori e relativa visualizzazione su
//mappa

var i = 0;
for (i=0; i<lat[1].length; i++)
    {  var marker = new google.maps.Marker({
       position: new google.maps.LatLng(lat[i], long[i]),
      map: map, title: descr[i] });
    }

}
</script>
</head>

<body style=”margin:5px; padding:2px;” onload=”carica_variabili()”>

<div id=”map_canvas” style=”width: 60%; height: 60%;”></div>

</body>
</html>

Linkografia
@ Maps API V3 Overlays  (Google Code – inglese)
@ Esempio visualizzazione markers singolo (Google Code – inglese)

Installazione AVD e prima applicazione Android

In questo articolo cominceremo a familiarizzare con l’emulatore Android e scriveremo la nostra prima semplicissima applicazione.

Prima di lanciare l’emulatore, è necessario prima creare una AVD (Android Virtual Machine). Che cos’è una AVD? E’ un insieme di specifiche che ci permette di emulare un dispositivo Android anzichè un altro, diverso per configurazione hardware (la tastiera, la memoria, la presenza di una fotocamera, ecc.), la forma (skin) del dispositivo, ed altro ancora. Naturalmente possiamo creare tutti gli AVD che desideriamo, uno per ogni dispositivo da “mimare”.

Per creare un AVD usiamo uno dei tools forniti da Android SDK.

Apriamo un prompt di sistema, ed eseguiamo la riga di comando:

android create avd --target 2 --name ilmioprimoavd
Alla domanda “Do you wish to create a custom hardware profile?” premete Invio per rispondere di no.

Questo è tutto. Abbiamo il nostro AVD denominato ilmioprimoavd. Adesso siamo pronti per creare un nuovo progetto Android.

Apriamo Eclipse, selezionamo File > New > Project.
Selezioniamo “Android Project” e clicchiamo su Next.
Inseriamo i dettagli del progetto come nella figura seguente:

Nella sezione che segue qualche nota sul significato dei diversi campi. Per adesso potete anche prendere tutto per buono, saltare la parte che segue e andare avanti

---------------------------- cut here -------------------------------------------------

Project Name: il nome della directory che conterrà i file del progetto.
Application Name: il nome dell’applicazione che apparirà sul nostro dispositivo Android.
Package Name: il significato sarà certamente chiaro a chi ha familiarità con i packages del linguaggio Java. Per semplificare,  si tratta di un namespace, di un “contenitore” dove è contenuto tutto il codice. Il nome del package deve essere univoco tra tutti i packages installati sul sistema Android; per questa ragione è molto importante usare una codifica standard del tipo domain-style. L’esempio proposto utilizza il namespace “com.tutorial“, dedicato appunto al codice che scriveremo durante i nostri tutorial. Quando saremo in grado di scrivere le nostre applicazioni, sarà opportuno utilizzare namespace appropriati (es. euripide.gps.vicinoame dove  lo sviluppatore di nome Euripide  includerà tutte le versioni dell’applicazione “Vicinoame” che sfrutta il rilevatore GPS di Android).
Create Activity: campo opzionale che identificherà la sottoclasse Activity. Per ora vi basti sapere questo.
Min SDK Version: specifica il livello minimo della versione API richiesta dalla nostra applicazione e ne definisce la compatibilità col nostro dispositivo. Se l’applicazione richiede un API Level superiore a quello supportato dal dispositivo, l’applicazione non sarà installata. La compatibilità verso il basso sarò invece assicurata.

---------------------------- cut here -------------------------------------------------

Cliccate su Finish. Il progetto è pronto ed è visibile nel Package Explorer sulla sinistra (vedi figura).

Aprite il file VivaAndroid.java, presente in src>com.tutorials.prima_applicazione.  Questo il codice creato:

package com.tutorials.prima_applicazione;
 import android.app.Activity;
 import android.os.Bundle;
 public class VivaAndroid extends Activity
  {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState)

    {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
    }
  }

Per il momento non ci preoccupiamo del significato delle istruzioni, che comunque potete cercare nell’apposita sezione reference della guida per sviluppatori Android. Limitiamoci a lavorate sul codice proposto apportando le seguenti modifiche:

package com.tutorials.prima_applicazione;
 import android.app.Activity;
 import android.os.Bundle;
 import android.widget.TextView;
 public class VivaAndroid extends Activity
 {
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState)

   {
    super.onCreate(savedInstanceState);
    TextView tv = new TextView(this);
    tv.setText("Questa è la mia prima applicazione   
               Android!!!");
    setContentView(tv);
   }
}

Non vi resta che andare nel menu Run e selezionare “Android application“. Eclipse compilerà il file java e lo passerà all’emulatore per il risultato:

Links utili
@ Hello World (dalla guida ufficiale per sviluppatori Android)
@ Descrizione della classe TextView e del metodo setText (dalla guida ufficiale per sviluppatori)
@ Un breve tutorial video (inglese) che riprende i contenuti di questo post (nel video l’AVD non viene creato a riga di comando ma direttamente su Eclipse)

Applicazioni per Android: predisporre e configurare l’ambiente di sviluppo

 Android è il sistema operativo per dispositivi mobili più citato del momento. Per chi desidera cimentarsi con lo sviluppo di applicazioni, ecco il primo di alcuni tutorials.

Le istruzioni che seguono riguardano l’installazione di ambiente e tools Android SDK (Android Software Development Kit) su S.O. Windows.
La prima cosa da fare è naturalmente quella di scaricare il pacchetto SDK, che potete trovare qui. Una volta scompattato il file, troverete i files nella cartella 

android-sdk-windows

Per comodità, può essere rinominata in ‘android‘ e collocata nella root

c:\android

Per cominciare, cliccare su Setup. L’applicazione tenterà di collegarsi ad Internet per scaricare il resto dei files.

Può capitare che subito venga visualizzato l’errore

Failed to fetch URL https://dl-ssl.google.com/android/repository/repository.xml

In questo caso cliccate su “Settings” (menu a sinistra) e mettete il segno di spunta su:

Force https://… sources to be fetched using http://…

Fatto ciò, tornate su “Available Packages” e premete nuovamente il tasto  “Refresh”.

Tutti gli strumenti di sviluppo (debugger, emulatore Android, ecc.) sono contenuti all’interno della cartella

c:\android\tools

E’ opportuno, sotto windows, impostare il percorso tra le variabil di ambiente, in modo da poter lanciare i vari tools da riga di comando senza ogni volta scrivere l’intero percorso.

Per far ciò, basta cliccare col tasto destro su Risorse del Computer (su Windows XP) o Computer (su Vista), Proprietà, Avanzate, Variabili di Ambiente, cliccare due volte su Path e aggiungere c:\android\tools dopo averlo fatto precedere da “;“.

Il passo successivo è installare Eclipse, l’ambiente di sviluppo con l’Android Development Tools (ADT) Plugin. Il pacchetto da scaricare lo potete trovare qui

Il pacchetto da scaricare è  Eclipse IDE for Java Developers (92 MB).
Una volta installato il software, è necessario fare il download dell’ADT plugin ed installarlo nell’ambiente Eclipse.

Questi i passi da seguire:

  1. Lanciate Eclipse.  Vi sarà chiesto il nome del workspace dove salvare le nostre applicazioni: c:\android\eclipseworkspace e selezionare Help, poi Install New Software
  2. Cliccare su Add
  3. Inserire un nome nel campo “Name“. Nel campo “Location” inserire  https://dl-ssl.google.com/android/eclipse/
  4. Cliccare su OK
  5. Tornando nella sezione “Available Software View“, dovreste ora vedere “Developer Tools“. Spuntare la checkbox (vedrete le voci Android DDMS e Android Development Tools). Cliccate su Next.
    Le due voci appariranno anche nella sezione “Install Details“. Cliccate su Next per accettare i termini della licenza, poi cliccate su Finish. Al messaggio di Warning (“You are installing software that contains unsigned content. The authenticity or validity of this software cannot be established. Do you want to continue with the installation?“) non vi preoccupate e date l’OK.

Adesso è necessario installare l’ADT plugin:

  1. Riavviate Eclipse, Verificate che il workspace sia quello inserito al passo 2 del paragrafo precedente.
  2. Selezionate Window, Preferences
  3. Selezionate Android dal pannello a sinistra
  4. Cliccate su Browse e andate nella directory dove si trova SDK (C:\android)
  5. Cliccate Apply, poi OK

L’ambiente di sviluppo a questo punto è pronto e configurato, vedremo in seguito come creare la nostra prima semplice applicazione. Buon lavoro!

Introduzione alle Google Maps API V3

Con questo articolo vorrei cominciare a introdurre la nuova versione (V3) delle API di Google Maps. Nexus One è alle porte, i dispositivi basati su sistema Android si moltiplicano. La versione V3 di queste API è stata appositamente progettata per funzionare perfettamente anche sui dispositivi mobili, iPhone compreso. A differenza delle “vecchie” API, non è necessario richiedere una API Key per ogni applicazione. Tutte le funzionalità sono contenute in un file javascript che viene caricato all’avvio dell’applicazione assicurando la velocità dell’esecuzione.
Il primo codice che vi propongo è davvero molto semplice e ci permetterà di visualizzare una mappa centrata in un punto ben preciso:

<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<script type="text/javascript"
  src="http://maps.google.com/maps/api/js?sensor=false"></script>
//Il parametro sensor (true/false) indica se l'applicazione usa
//un sensore per determinare la posizione dell'utente

<script type="text/javascript">
function initialize() {
    var latlng = new google.maps.LatLng(44.112909 , 9.835415); //centra la mappa in un punto preciso
    var myOptions = {
      zoom: 11,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.HYBRID  //imposta la mappa come ibrida.
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
  }

  <div id="map_canvas" style="width:60%;height:87%;"></div>
</body>
</html>

Il risultato finale lo potrete trovare qui.

Links utili

@ Google Maps API V3 Basics

@ Map V3 Tutorial

Inviti per Google Wave

Un piccolo flash per comunicarvi che ho ancora a disposizione diversi  inviti per Google Wave. Chi fosse interessato può lasciare un commento a questo post e gli invierò un invito fino all’esaurimento della mia disponibilità. In cambio, quando sarete abilitati, vi chiedo di segnalarmi le waves più interessanti alle quali siete iscritti
Vi ricordo che l’abilitazione non è immediata poichè, come dice lo staff di Google, “Invitations will not be sent immediately. We have a lot of stamps to lick“.
E chi  non sa cosa sia Google Wave? Beh, può godersi il video allegato (n.d.a. l’ottima traduzione in italiano è a cura di BananAffair.it, blog su tecnologia e tendenze della Rete che vi consiglio di visitare). Buon divertimento.

P.S. AGGIORNAMENTO del 10/12/2009. Ho terminato gli inviti. Mi spiace per chi non sia riuscito ad arrivare in tempo. Spero abbiate più fortuna con altri, ad esempio giapox oppure Sartomiki.net che hanno gentilmente segnalato la loro disponibilità a fornire altri inviti. Ciao

Introduzione alle Yahoo! Maps

Sempre stimolato da digitaladoptive, unico antidoto contro la cronica mancanza di tempo necessaria per riempire di contenuti questo blog, stavolta voglio introdurre ai neofiti del mashup le API di Yahoo! Maps.
Per chi ha avuto la pazienza di leggere i miei post riguardanti le API di Google Maps, si accorgerà che i metodi e le sintassi sono molto molto simili.
Il semplice obiettivo di questo post è di inserire una Yahoo! Map, centrata in un particolare punto del globo terracqueo, in una pagina web.
Per iniziare a lavorare, abbiamo bisogno di un account Yahoo! su quale chiedere una chiave (“application id“). Almeno nelle prime fasi, non avremo bisogno di uno spazio web: a differenza delle API di Google Maps, le API di Yahoo! Maps lavorano anche in locale, cioè sul proprio PC (purchè collegato alla Rete, evidentemente)

Per chiedere la chiave, come si diceva, è necessario avere un account Yahoo! e andare alla seguente pagina

Si presenterà la seguente schermata dove inserire alcuni dati:

Alcune delucidazioni:

1. Il Vostro account Yahoo! apparirà di default
2. Selezionate “Generic”
3. Potete inserire qualunque cosa
4. Potete inserire qualunque cosa
5. Non è un campo obbligatorio ma, a vostra futura memoria, suggerisco di inserire l’indirizzo della pagina web dove inserirete la mappa
6. Inserite la vostra e-mail
7. Inserite una breve descrizione

Il resto non consideratelo.

Nella pagina che segue otterrete una stringa di caratteri che copierete nel codice qui in basso dove indicato.

Il codice è diffusamente commentato, non dovreste avere problemi di comprensione (ma sono qui a vostra disposizione!)

<head>
<script type=”text/javascript” src=”http://api.maps.yahoo.com/ajaxymap?v=3.0&appid= INSERITE_QUI_LA_YAHOO_ID_RICHIESTA_SUL_SITO”></script>

<!– Definizione struttura pagina: messa la mappa di dimensioni 550×450 px //–>

<style type=”text/css”>
#spaziomappa {
width: 550px;
height: 450px;
align: center;}
</style>

</head>

<body>
<div id=”spaziomappa” align=”center”></div>
<script type=”text/javascript”>

// centra la mappa alle coordinate indicate (lat, long)
var lat = 44.063889;
var long = 9.883333;

// definizione coppia di coordinate che identificano il Golfo della Spezia
var punto = new YGeoPoint(lat, long);
var livellozoom = 7

// Definisce l’oggetto map che caricherà una mappa nell’elemento “spaziomappa” della pagina web
var map = new YMap(document.getElementById(‘spaziomappa’));

// Aggiunge la barra di controllo che consente tre tipi di visualizzazione:
// cartina (REG), satellite (SAT) e ibrida (HYB)
map.addTypeControl();

// Aggiunge il controllo per lo zoom
map.addZoomLong();

// Imposta il tipo di mappa, in questo caso ibrida; per altri tipi di visualizzazione
// Si può usare SAT (satellite) o REG (cartina)
map.setMapType(YAHOO_MAP_HYB);

// Mostra la mappa centrata alle coordinate definite dalla variabile ‘punto’al
// livello 7 di zoom
map.drawZoomAndCenter(punto, livellozoom);

</script>
</body>

Il risultato lo potete trovare qui.
Nelle prossime puntate cercheremo di fare qualcosa di più, per adesso mi limito a suggerirvi i links alla documentazione ufficiale di Yahoo! Maps API (inglese):


Creative Commons License
Questo/a opera è pubblicato sotto una Licenza Creative Commons.

Addthis

AddThis Social Bookmark Button

Flickr Photos