Windows Phone 7 arriva sul mercato: ecco gli eventi di lancio!

Print Content | More

Faccio uno strappo alla regola pubblicando un secondo post nella giornata di oggi per ricordarvi che domani 21 Ottobre inizia la commercializzazione dei primi device Windows Phone 7: nei punti vendita Vodafone infatti sarà possibile acquistare l’LG Optimus 7, il primo device Windows Phone a fare la sua comparsa sul mercato.

Per motivi logistici legati alla distribuzione da parte di LG, non tutti i punti vendita Vodafone in Italia riceveranno il device: Microsoft ha però organizzato un evento di lancio nelle principali città in alcuni punti vendita in cui il device sarà sicuramente disponibile (ovviamente dipende da quanti device saranno venduti nel corso della giornata, le scorte non sono illimitate, perciò se siete interessati all’acquisto vi consiglio di andare al mattino).

I punti vendita sono i seguenti:

In ognuno di questi negozi, sia al mattino che al pomeriggio, ci saranno alcune persone della community di Windows Phone a illustrare il device e le applicazioni, nonchè a distribuire qualche gadget (che non guasta mai Smile). Ovviamente saranno disponibili anche a rispondere a qualsiasi domanda o dubbio legato alla nuova piattaforma mobile Microsoft: se quindi volete toccare con mano il device e soddisfare la vostra curiosità, si tratta sicuramente di un’occasione da non perdere!

Io sarò presente nel punto vendita di Milano in mattinata, assieme ad Andrea Benedetti: vi aspettiamo!


Windows Phone , Microsoft

0 comments

Observable Collection: impariamo ad utilizzarla

Print Content | More

Premessa: se avete già sviluppato applicazioni Silverlight, quasi sicuramente conoscerete già l’argomento di oggi, quindi potete anche risparmiarvi la lettura di questo post Smile

Se invece avete iniziato da interessarvi a Silverlight da poco grazie a Windows Phone, allora magari potreste non conoscere il tipo Observable Collection. Di cosa si tratta? Molto semplicemente, di una collezione di dati, che si comporta in maniera analoga a List: viene definita infatti come ObservableCollection<Type>, dove Type è il tipo di oggetti che conterrà la collezione. Ne deduciamo che una Observable Collection può contenere solamente oggetti dello stesso tipo.

Esattamente come le collezioni di tipo List, al contrario di un array non siamo obbligati a definirne la capacità in fase di definizione: offre infatti tutta una serie di metodi (come Add, Insert e Remove) per modificarne il contenuto a runtime. In più, permette di fare operazioni di ricerca al suo interno usando query LINQ.

La differenza principale però rispetto al tipo List è che implementa l’interfaccia INotifyPropertyChanged, che permette di notificare in automatico al controllo che è in binding con la collezione quando questa subisce delle modifiche. Questo significa che, ogni qualvolta aggiungiamo o rimuoviamo un elemento, il controllo si aggiorna automaticamente, senza bisogno da parte nostra di rifare il binding.

Proviamo a capire meglio il funzionamento della Observable Collection con un esempio pratico: apriamo il solito Visual Studio e creiamo un progetto di tipo Silverlight for Windows Phone. Nella pagina iniziale (MainPage.xaml) andremo ad inserire un piccolo form per gestire una ipotetica collezione di film, così strutturato:

  • Una textbox, dove inseriremo il titolo di un film.
  • Un pulsante Add, per aggiungere il film.
  • Un pulsante Refresh, per aggiornare la ListBox che è in binding con la collezione.
  • Una ListBox, che mostra i titoli dei film presenti nella collezione.

Ecco lo XAML da inserire nella Grid dal nome ContentGrid per realizzare il form:

<StackPanel>
    <StackPanel Orientation="Horizontal">
        <TextBox x:Name="txtTitle" Width="350"></TextBox>
        <Button x:Name="btnAdd" Content="Add" Click="btnAdd_Click"></Button>
    </StackPanel>
    <ListBox x:Name="listItems">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Title}"></TextBlock>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</StackPanel>

Ora andiamo a definire la classe Movie, che andrà a rappresentare il nostro film. Dato che ci serve solamente per scopi dimostrativi, definiremo una sola proprietà, il titolo del film. Creiamo perciò una nuova classe (tasto destro sul progetto, Add, New Item, selezioniamo Class e chiamiamola Movie.cs) e definiamola nel modo seguente:

public class Movie
{
    public string Title { get; set; }
}

Ora possiamo iniziare a utilizzarla nell’applicazione vera e propria: posizioniamoci nel code behind (MainPage.xaml.cs) e definiamo una nuova collezione a livello di classe, in modo che sia visibile a tutti i metodi ed eventi che definiremo.

1° esperimento: utilizziamo una collezione di tipo List

Facciamo prima una prova utilizzando una collezione di tipo List tradizionale: ecco il codice sorgente della nostra pagina.

public partial class List : PhoneApplicationPage
{
    private List<Movie> movies;

    public List()
    {
        InitializeComponent();
        movies=new List<Movie>();
    }

    private void btnAdd_Click(object sender, RoutedEventArgs e)
    {
        Movie movie = new Movie
                          {
                              Title = txtTitle.Text
                          };
        movies.Add(movie);
    }

    private void btnRefresh_Click(object sender, RoutedEventArgs e)
    {
        listItems.ItemsSource = null;
        listItems.ItemsSource = movies;
    }
}

Abbiamo definito una nuova collezione di tipo List, che inizializziamo nel momento in cui viene instanziata la pagina (quindi dopo che viene chiamato il metodo InitializeComponent()).

Dopodichè andiamo a gestire gli eventi associati ai due pulsanti presenti nel form:

  • Quando viene premuto il pulsante Add, creiamo una nuova istanza della nostra classe Movie, impostiamo la proprietà Title con il valore inserito nella textbox txtTitle, dopodichè aggiungiamo il nuovo oggetto alla nostra collezione.
  • Quando viene premuto il pulsante Refresh, effettuiamo il binding vero e proprio, associando alla proprietà ItemsSource la nostra collezione. Prima di fare questa operazione, però, forziamo il refresh impostando il binding a null.

Ora possiamo provare la nostra applicazione: premiamo F5 e, una volta avviata, inseriamo del testo nella textbox, dopodichè premiamo il pulsante Add. All’apparenza non succederà niente: per vedere un cambiamento, dobbiamo premere il pulsante Refresh. A questo punto la nostra ListBox si aggiornerà e potremo vedere nell’elenco il titolo del film che abbiamo appena inserito. Possiamo ripetere l’esperimento quante volte vogliamo, il risultato sarà sempre lo stesso: per vedere l’elemento che abbiamo aggiunto nella ListBox dovremo sempre premere il pulsante Refresh.

2° esperimento: utilizziamo una collezione di tipo ObservableCollection

Ora modifichiamo leggermente l’applicazione, così da poter utilizzare una ObservableCollection. Ecco il nuovo codice:

public partial class ObservableCollection : PhoneApplicationPage
{
    private ObservableCollection<Movie> movies;

    public ObservableCollection()
    {
        InitializeComponent();
        movies=new ObservableCollection<Movie>();
        listItems.ItemsSource = movies;
    }

    private void btnAdd_Click(object sender, RoutedEventArgs e)
    {
        Movie movie = new Movie
                          {
                              Title = txtTitle.Text
                          };
        movies.Add(movie);
    }
}

 

Cosa è cambiato? Innanzitutto, abbiamo eliminato il pulsante Refresh: ora il binding viene fatto direttamente in fase di inizializzazione della pagina. E’ rimasto solamente il metodo associato al pulsante Add, che svolge lo stesso compito di prima: aggiungere un nuovo elemento alla collezione.

Ora lanciamo nuovamente l’applicazione e ripetiamo l’esperimento: questa volta, appena premuto il pulsante Add, il titolo appena inserito verrà mostrato nella ListBox, senza alcuna necessità da parte nostra di forzare il refresh. Cool vero? Smile

Lo stesso identico risultato lo avremmo ottenuto se avessimo eliminato un elemento dalla lista, oppure avessimo cambiato l’ordine degli elementi.

Di seguito trovate il link per scaricare il codice sorgente di un piccolo progetto d’esempio, dove, in due diverse pagine, sono implementati gli esempi riportati in questo post: uno che utilizza List e uno che utilizza ObservableCollection.


Windows Phone , Observable Collection , List

3 comments

WhyMCA: il ritorno della community mobile

Print Content | More
WhyMCA Spring 2010 Spread the Voice Logo Avevo già dedicato più post a WhyMCA, la community dedicata al mobile a 360° fondata da Alfredo Morresi, in occasione del grande evento di lancio che si è tenuto quest’anno presso il Politecnico di Milano. Adesso il WhyMCA ritorna dopo un periodo di pausa in una nuova veste: una tavola rotonda molto informale, organizzata in una location diversa dal solito (un lounge bar) e in cui ci sarà occasione non solo di seguire brevi interventi da parte di alcuni speaker ma anche di partecipare attivamente con domande e confronti sul tema del mobile.
  • Il primo intervento sarà a cura di Leandro Agrò e sarà incentrato sul futuro delle tecnologie mobile.
  • Il secondo intervento di Luca Mascaro (che ho già avuto il piacere di conoscere per alcuni corsi di UX tenuti in Gaia) sarà dedicato all’aspetto dell’interazione con i device mobile.
  • Il terzo e ultimo intervento sarà dedicato alle tecnologie e alle principali piattaforme di sviluppo attualmente esistenti e sarà tenuto da Alfredo stesso (per il mondo Android) e dal sottoscritto (per la parte iPhone e Windows Phone 7).

Il tutto si concluderà con un aperitivo in compagnia, così da avere un ulteriore possibilità di approfondire le tematiche viste nella tavola rotonda e di parlarne in maniera molto diretta e informale.

L’evento si terrà Giovedì 21 Ottobre alle ore 18 presso Il Volo a Milano, in Viale Beatrice d’Este. Per partecipare vi basta registrarsi sul sito ufficiale, l’evento è completamente gratuito.

Vi aspetto!


WhyMCA , Windows Phone , IPhone , Android

0 comments

Salvare lo stato della pagina in Windows Phone 7: Parte 2 - Memorizziamo la posizione

Print Content | More

Come anticipato nel precedente post, abbiamo già imparato come memorizzare il contenuto delle textbox in un tombstone in fase di sospensione di un’applicazione. Un altro aspetto molto importante per garantire continuità nel processo di sospensione / attivazione di un’applicazione è memorizzare l’ultimo controllo attivo, in gergo tecnico quello con il focus. Se l’utilità in un piccolo form può essere minima, diventa invece straordinariamente utile quando i nostri form sono più lunghi di una schermata: l’utente sarebbe costretto a scrollare per il form alla ricerca del campo che stava compilando nel momento in cui ha ricevuto un SMS e ha scelto di rispondere.

Windows Phone 7 ci permette di memorizzare questa informazione tramite una classe, chiamata FocusManager, che ci restituisce l’oggetto correntemente attivo. Il trucco sta nel salvare il nome del controllo attivo in fase di sospensione, per poi reimpostare il focus in fase di riattivazione. In questo tutorial vedremo come realizzare una semplice applicazione che gestisca questa casistica: andremo ad utilizzare il dictionary PhoneApplicationPage.State, dato che si tratta di una informazione relativa allo stato della pagina (come abbiamo visto nel post precedente).

Apriamo il nostro fido Visual Studio e realizziamo un nuovo progetto di tipo Silverlight for Windows Phone: posizioniamoci nel markup della MainPage (MainPage.xaml) e andiamo inserire tre textbox con relative etichette. Questi elementi andranno a comporre un ipotetico form dove faremo inserire al nostro utente nome, cognome e indirizzo e-mail. Ecco il codice da inserire all’interno della ContentGrid:

<StackPanel>
    <TextBlock Text="Insert your name"></TextBlock>
    <TextBox x:Name="txtName"></TextBox>
    <TextBlock Text="Insert your surname"></TextBlock>
    <TextBox x:Name="txtSurname"></TextBox>
    <TextBlock Text="Insert your e-mail address"></TextBlock>
    <TextBox x:Name="txtMail"></TextBox>
</StackPanel>

Ora che abbiamo un semplice form di esempio, possiamo pensare a come salvare il controllo correntemente selezionato. Nel post dedicato al tombstoning avevamo visto che per gestire questo tipo di informazioni dobbiamo utilizzare gli eventi OnNavigatedFrom e OnNavigatedTo. In realtà, per la gestione del focus, questo concetto è vero a metà: dobbiamo si salvare il controllo correntemente attivo quando ci spostiamo dalla pagina corrente, ma non possiamo impostare il focus immediatamente quando vi ritorniamo. Questo perchè, quando si scatena l’evento OnNavigatedTo, la struttura dei controlli della pagina non è ancora stata caricata completamente, perciò Windows Phone non ha modo di impostare il focus. Il trucco è quello di gestire il recupero dell’informazione dal tombstone e il settaggio del focus in un altro evento, Loaded, che si scatena quando l’intera pagina è stata completamente caricata. in questo modo, ci assicuriamo che la struttura dei controlli sia completamente caricata.

Riassumendo, perciò, quello che andremo a fare sarà:

  • Nell’evento OnNavigatedTo, che si scatena quando lasciamo la pagina corrente, andremo a salvare il controllo correntemente attivo.
  • Nell’evento Loaded, che si scatena quando la pagina è stata caricata completamente, andiamo a impostare il focus sul controllo che abbiamo salvato nel tombstone.

Salviamo il controllo attivo

Ecco il codice per implementare questa feature:

protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedFrom(e);
    object element = FocusManager.GetFocusedElement();
    string elementName=string.Empty;

    if (element != null)
        elementName = ((Control)element).Name;

    if (State.ContainsKey("FocusedElement"))
        State.Remove("FocusedElement");
    State.Add("FocusedElement", elementName);
    
}

Quello che andiamo a fare è salvare in un tombstone un riferimento al controllo correntemente attivo, nello specifico il nome (che nello XAML è definito nella proprietà x:Name). Per fare questo, utilizziamo il già citato FocusManager, che espone il metodo GetFocusedElement() che restituisce, sotto forma di generico object, il controllo attivo. Prima di recuperarne il nome, però, dobbiamo fare un cast dell’oggetto restituito dal FocusManager per convertirlo in un Control, che rappresenta un controllo all’interno della nostra pagina.

A questo punto, siamo pronti per salvare la proprietà Name dell’oggetto restituito in un tombstone: utilizziamo perciò il dictionary PhoneApplicationPage.State, dato che si tratta di un’informazione relativa allo stato della pagina (le pagine di WindowsPhone derivano tutte da PhoneApplicationPage, ecco perchè il dictionary State è disponibile senza specificare alcun namespace o singleton).

Il resto del codice dovrebbe esservi famigliare, dato che abbiamo già lavorato con i tombstone: prima di salvare il nome del dictionary, verifichiamo se una chiave con lo stesso nome esiste già e, in caso, la rimuoviamo.

Recuperiamo il controllo attivo

Ecco il codice per implementare questa feature:

public MainPage()
{
    InitializeComponent();
    Loaded += new RoutedEventHandler(MainPage_Loaded);
}

void MainPage_Loaded(object sender, RoutedEventArgs e)
{
     if (State.ContainsKey("FocusedElement"))
    {
        Control focusedElement = (Control)this.FindName(State["FocusedElement"].ToString());
        if (focusedElement!=null)
            focusedElement.Focus();
    }
}

In caso venga trovato nel dictionary State un oggetto con la chiave da noi utilizzata (nell’esempio, FocusedElement), andiamo a recuperare il nome del controllo salvato dal tombstone. Utilizziamo poi la funzione FindName messa a disposizione del framework che, dato il nome di un controllo, ce lo restituisce sotto forma di generico object. Facciamo il cast dell’oggetto restituito in un vero e proprio Control, dopodichè richiamiamo la funzione Focus che fa proprio quello che serve a noi: impostare il focus sul controllo, come se l’utente lo avesse selezionato. Il gioco è fatto!

Piccola curiosità: in molti esempi di codice che trovate in rete (e anche in uno dei tutorial ufficiali Microsoft, a dire la verità) il codice per recuperare l’ultimo controllo attivo e impostare il focus viene comunque gestito all’interno dell’evento OnNavigatedTo. Il fatto che, sull’emulatore, il codice non funzionasse veniva imputato ad un bug della versione beta. In realtà, come abbiamo visto, non si tratta affatto di un bug, ma di una errata comprensione degli eventi che scandiscono il ciclo di vita di una pagina. Un ringraziamento speciale a Corrado per avermi illuminato su questa cosa Smile

Come sempre, di seguito trovate il link per scaricare un progetto d’esempio che implementa quando abbiamo visto: oltre al codice già riportato in questo post, troverete implementato anche il codice per salvare in un tombstone il contenuto delle varie textbox.


Windows Phone , Tombstone

1 comments

Salvare lo stato della pagina in Windows Phone 7: Parte 1 - Qual è il luogo più appropriato?

Print Content | More

Open_Book-for-dictionary-site

Nel tutorial che ho dedicato al tombstoning e al modello di esecuzione delle applicazioni di Windows Phone 7, nello specifico in questo post, avevamo salvato dei dati in un dictionary speciale, chiamato State, il cui contenuto vien mantenuto in memoria anche quando l’applicazione viene sospesa.

Vi avevo anche detto, però, che non si trattava del posto più corretto dove salvare quel tipo di informazione, ma che, in quel momento, non era importante perchè mi serviva per farvi capire come scrivere e leggere informazioni da un tombstone.

In questo tutorial vi spiegherò il perchè non si trattava del posto più corretto e quali altre alternative abbiamo a disposizione.

Due tipologie di informazioni da salvare

Possiamo distinguere le informazioni che avremo necessità di salvare in un tombstone grossomodo in due categorie:

  • Lo stato della pagina, in modo che l’utente, quando ritorna alla nostra applicazione, la trovi esattamente come l’aveva lasciata. Scopo del tombstoning è proprio quello di dare l’impressione all’utente che l’applicazione non sia mai stata chiusa.
  • I dati veri e propri della nostra applicazione.

Prendiamo l’esempio della solita applicazione per gestire la nostra videoteca. Nel primo caso, possiamo pensare al form di inserimento di un nuovo film: è importante salvare i valori delle textbox (e magari anche quale textbox era selezionata) quando l’applicazione viene sospesa, così che l’utente ritrovi tutto com’era prima al suo ritorno e non debba inserire le informazioni da capo.

Nel secondo caso, invece, possiamo pensare all’intera collezione di video, che probabilmente sarà memorizzata in un XML nell’Isolated Storage. Ha molto senso salvare la nostra collezione in un tombstone quando l’applicazione viene sospesa, per evitare di dover ricaricare tutte le volte i dati dal file XML (l’Isolated Storage non brilla per performance in quanto a velocità di lettura / scrittura).

Le linee guida per gli sviluppatori Windows Phone 7 distinguono proprio tra queste due casistiche: i tool mettono perciò a disposizione due diversi State dictionary, a seconda della situazione.

  • PhoneApplicationPage.State è il dictionary che deve essere utilizzato per salvare lo stato della pagina. Tipicamente, questo dictionary viene utilizzato negli eventi OnNavigatedTo e OnNavigatedFrom, che si verificano quando ci spostiamo da e verso la pagina corrente.
  • PhoneApplicationService.State è il dictionary che deve essere utilizzato per memorizzare i dati veri e propri. TIpicamente, questo dictionary viene utilizzato negli eventi Application_Activated e Application_Deactivated, che già conosciamo e che si verificano quando l’applicazione viene ripristinata o sospesa. Vedremo meglio questo aspetto in uno dei prossimi post, quando parleremo di Isolated Storage e dati permanenti.

In realtà, entrambi i dictionary hanno le stesse caratteristiche: sono di tipo IDictionary<string, object> ed entrambi vengono mantenuti in memoria quando l’applicazione viene sospesa. La differenza quindi è più teorica che pratica: come abbiamo visto nel post dedicato al tombstoning, abbiamo usato il dictionary PhoneApplicationService.State per lo scopo sbagliato, ovvero salvare lo stato della pagina, eppure tutto funzionava correttamente. Dato che però Microsoft da delle linee guida ben precise, è importante attenersi ad esse, così da rendere il codice sorgente più chiaro e facile da mantenere anche per sviluppatori di terze parti.

Una nota molto importante: PhoneApplicationPage viene istanziato e mantenuto a livello di pagina, mentre PhoneApplicationService viene mantenuto a livello di applicazione. Ciò significa se che salvate dei dati nel dictionary PhoneApplicationPage.State questi vengono mantenuti solo se l’applicazione viene sospesa: se vi spostate in un’altra pagina della stessa applicazione, viene creata una nuova istanza della classe PhoneApplicationPage, perciò perderete i dati che avete salvato nella proprietà State. Se volete perciò mantenere dei dati anche nello spostamento da una pagina all’altra, dovete utilizzare PhoneApplicationService.State.

Nel post dedicato al tombstoning abbiamo già visto come mantenere i valori delle textbox ad applicazione sospesa: nel prossimo post vedremo come salvare anche un’altra importante informazione sullo stato della pagina, ovvero il controllo correntemente attivo nel momento in cui l’applicazione viene sospesa.


Windows Phone , Tombstone

0 comments

Il lancio di Windows Phone 7: no more secrets!

Print Content | More

Come anticipato dal post di ieri, finalmente è arrivato il grande lancio di Windows Phone 7! La vera attesa era per i device e le applicazioni: del sistema operativo infatti si conosce già praticamente tutto e non c’è stata (quasi) alcuna novità dell’ultima ora. I device erano però ancora top secret: certo, nell’ultimo mese sono circolate foto, specifiche e rumors di ogni tipo, ma ufficialmente non era mai stato confermato nulla.

L’evento di New York, trasmesso in streaming, ha visto una prima parte di presentazione dei device che saranno disponibili al lancio americano, tenuta da Steve Ballmer. La seconda parte è stata invece un’occasione per mostrare nuovamente al pubblico le principali feature del sistema operativo in maniera molto dettagliata, hub per hub. Degna di nota la presentazione di alcune app che saranno disponibili al lancio, tra cui Twitter e eBay.

L’evento italiano ha avuto una struttura simile, con due differenze principali: i device presentati (la line up europa è diversa da quella americana) e le applicazioni; sono state presentate infatti le principali apps dedicate al mercato italiano, come Rai, Corriere, Gazzetta, TgCom, ecc. (quattro delle quali sono state sviluppate proprio da Gaia).

Ho avuto il piacere di partecipare all’evento serale e l’aria era quella delle grandi occasioni: location di grande impatto, una presentazione che ha saputo mostrare al pubblico le principali caratteristiche di Windows Phone 7 senza annoiare (molto gradita la presenza di Nicola Savino che ha “alleggerito” la serata) e un buon numero di device a disposizione dei partecipanti per essere provati e testati.

Ma veniamo al dunque: l’evento americano ha visto la presentazioni di parecchi device (10 per l’esattezza), che vedranno la luce sul suolo statunitense a partire dall’8 Novembre. Vi rimando a Engadget per approfondimenti e dettagli su di essi: in questo post mi voglio concentrare infatti sui telefoni che saranno disponibili in Italia.

Premessa: i device reali sono tutta un’altra cosa rispetto ai protototipi, sia come velocità sia come qualità costruttiva. Se già sui terminali usati durante i lab di Microsoft la prima impressione era positiva, nei device reali la fluidità e la reattività dell’OS è ancora maggiore.

LG Optimus 7

10x1011iubwewdlgopot7

Il device di LG dovrebbe essere l’unico che sarà disponibile nei negozi sin dal 21 Ottobre e spicca per il rapporto qualità / prezzo decisamente vantaggioso: il prezzo di listino è infatti di 399 euro e vanta una dotazione hardware di tutto rispetto, che include processore da 1 Ghz, schermo da 3.8 pollici, fotocamera da 5 MP con flash incorporato e, unico tra i device disponibili al lancio, 16 GB di storage. La prima impressione che ho avuto dalle foto pubblicate su Internet non è stata delle migliori: sono stato però felice di ricredermi vedendolo dal vivo, perciò non fidatevi delle apparenze Smile Inoltre, il device LG ha preinstallate una serie di applicazioni decisamente interessanti: una sorta di Around Me che fa uso della realtà aumentata per localizzare posti di interesse intorno a noi e un client DLNA, che vi permette di fare streaming dei contenuti audio e video del device verso i dispositivi (televisori, home theater, ecc.) che supportano questa tecnologia. Dulcis in fundo, trovate preinstallata anche un'applicazione che vi consente di realizzare foto panoramiche con la fotocamera integrata, permettendovi di scattare una serie di foto in successione e poi unirle in automatico.

I difetti sono essenzialmente due: la RAM disponibile (256 MB contro i 512 MB degli altri device) e la qualità della memoria flash utilizzata per lo storage, che offre prestazioni in termini di velocità di lettura e scrittura non eccelse (riscontrabili soprattutto nella sincronizzazione dei dati con lo Zune Client).

Errata corrige: LG ha confermato (tramite l'account ufficiale su Twitter) che l'Optimus 7 monta 512 MB di RAM, come tutti gli altri device previsti per il lancio.

Il prezzo potrebbe essere però la chiave di successo di questo device: con una cifra che è quasi la metà di quella di un iPhone vi portate a casa infatti uno smartphone di fascia medio – alta.

A questa pagina di Engadget trovate una ricca photogallery e un video.

Samsung Omnia 7

10x1011ui34fddmarsamonia7

Il device Samsung ha una dotazione hardware nella media degli altri device, si distingue però principalmente per una caratteristica: lo schermo, della dimensione di 4 pollici e di tipo Super AMOLED, che restituisce una qualità visiva e una fedeltà dei colori eccezionale, di gran lunga superiore a quella degli altri device. Rispetto al telefono LG offre inoltre il doppio della RAM, ma perde dal punto di vista dello storage: solo 8 GB, anche se le prestazioni della memoria flash sono decisamente superiori.

Errata corrige: il testo è stato modificato dopo l'aggiornamento da parte di LG sulla presenza di 512 MB di RAM anche sull'LG Optimus 7.

Questo device dovrebbe essere disponibile circa una settimana dopo il lancio del 21 Ottobre; non è ancora chiaro il prezzo: su Internet alcuni hanno parlato di 499 euro, mentre altre fonti hanno indicato prezzi leggermente più alti.

A questa pagina di Engadget trovate foto e video del device in azione.

HTC Mozart e HTC HD7

HTC sarà presente al lancio con due device, anch’essi disponibili circa una settimana dopo il 21 Ottobre: il Mozart e l’HD 7. I due device presentano forme estetiche differenti, ma condividono le stesse caratteristiche tecniche, ovvero processore da 1 GHz e 512 MB di RAM. Uniche differenze:

  • Lo schermo: 3.8 pollici del Mozart contro i 4.3 pollici dell’HD 7, che lo rende il device con lo schermo più grande tra tutti quelli presentati.
  • La fotocameria: 8 MP del Mozart contro i 5 MP dell’HD 7.

I prezzi non saranno bassissimi: si parla di 550 euro per il Mozart e di 600 euro per l’HD7. La mia impressione? Il Mozart è un device (anche esteticamente) molto valido, l’HD 7 ha dimensioni invece un po’ troppo generose che rischiano di renderlo poco pratico da utilizzare.

Nota di “demerito” alla HTC per non aver saputo sfruttare la sua posizione di vendor (almeno al lancio iniziale): le applicazioni presintallate (il famoso HTC Hub) sono ben fatte ma peccano un po’ di utilità (avere la classica schermata con meteo e orario come home di sistema, come su Android o Windows Mobile, ha un senso; un po’ meno se si tratta di un’applicazione dedicata che devo lanciare ogni volta). Inoltre, al contrario di LG, non sfruttano in alcun modo la possibilità data in esclusiva ai vendor di fare uso di alcune librerie normalmente non accessibili (pensiamo ad esempio all’applicazione della realtà aumentata di LG).

htcmozarthandson2010-10-11

10x1011iub234rtwedsdahd7

Qui trovate la pagina di riferimento su Engadget per l’HTC Mozart, mentre qui quella per l’HTC HD 7: entrambe mostrano video e numerose foto dei device in azione.

Il marketplace

Ha finalmente aperto il Marketplace per gli sviluppatori, ora chiamato App Hub: si tratta di un unico punto di accesso che è possibile utilizzare per fare il submit sia di applicazioni Windows Phone che di giochi per Xbox Live. L’indirizzo è http://create.msdn.com/ e richiede un account valido sul Marketplace che deve essere stato abilitato per l’upload di applicazioni WP7, altrimenti l’unica opzione che avrete disponibile alla voce OS sarà Windows Mobile 6.5.

Copia e incolla?

Come vi dicevo all’inizio, l’evento non ha riservato “quasi” nessuna sorpresa dal punto di vista del sistema operativo. Ho detto quasi perchè in realtà un annuncio finale c’è stato: agli inizi del 2011 arriverà un primo update dell’OS che introdurrà il tanto richiesto copia e incolla. Mi fa molto piacere questa notizia, non tanto per la feature in sè (comunque molto gradita), ma perchè dimostra che Microsoft ha intenzione di supportare attivamente e di continuare a lavorare sulla sua piattaforma e non di “abbandonarla” dopo il lancio. Ricordo che, grazie all’architettura di Windows Phone (che non consente personalizzazioni del device da parte dei vendor, come invece avviene per Android e Windows Mobile 6.5), l’update sarà disponibile direttamente da Microsoft per tutti i device.

Conclusione

Gli obiettivi di Microsoft sono molto ambiziosi, sia in termini di device venduti che in termini di applicazioni disponibili sul Marketplace nei prossimi anni: non sarà facile raggiungerli, il mercato mobile è molto agguerrito e device come l’iPhone al giorno d’oggi sono quasi più uno “status symbol” che uno smartphone. Le carte in regola ci sono tutte: la piattaforma si dimostra veloce, reattiva, solida e con delle ottime potenzialità per gli sviluppatori (per non dire eccelse, credo che al momento Windows Phone 7 sia la miglior piattaforma mobile sul mercato per quanto riguarda lo sviluppo). Certo, non è ancora perfetta: i tempi ridotti hanno costretto il team di sviluppo a fare delle scelte e a lasciare fuori alcune feature secondarie ma comunque importanti per raggiungere la piena maturità. L’annuncio del copia e incolla è però il segnale che si sta lavorando nella direzione giusta e sono convinto che non ci vorrà molto perchè Windows Phone arrivi a offire le stesse possibilità degli altri competitor. Senza dimenticare che ci sono alcuni campi in cui Windows Phone si distingue già in meglio rispetto agli altri: l’integrazione con XBox Live, Office, il supporto nativo ai social network, la concezione di hub e la freschezza dell’interfaccia grafica Metro.

L’augurio è che l’evento di oggi non sia la fine di un lungo percorso, ma l’inizio di una strada che possa portare Microsoft a riscattarsi nel settore mobile e a diventare un punto di riferimento per gli utenti che nei prossimi anni si troveranno a dover acquistare uno smartphone.


Windows Phone , Microsoft , Marketplace , HTC , Samsung , LG

12 comments

Windows Phone is coming to town

Print Content | More

sPromo-WP-PHONESCHOICEv1-238x136

Se seguite i principali social network e siti di settore, non sarà una novità per voi che questa è la settimana di lancio di Windows Phone 7. Oggi infatti si terranno diversi eventi nel mondo, nei quali verranno ufficialmente svelati i device che usciranno nei prossimi giorni e presentate le prime applicazioni che saranno disponibili sul Marketplace. L’attesa è finalmente finita!

Non mi dilungherò troppo in questo post: nei prossimi giorni avrò modo di parlarvi più approfonditamente dei primi device e delle prime applicazioni. Oggi voglio solo darvi qualche informazione che può essere utile per seguire al meglio quello che accadrà dei prossimi giorni.

L’evento di lancio

Per noi italiani sono due gli appuntamenti da tenere d’occhio: il primo è l’evento di lancio mondiale, che si terrà a New York e a cui presenzierà Steve Ballmer in persona, e che si terrà alle 15:30 circa ora italiana. L’evento verrà trasmesso in streaming all’indirizzo http://www.microsoft.com/presspass/presskits/windowsphone/.

Alle 15 inizierà invece l’evento italiano, che si terrà a Milano e che vedrà la partecipazione dei partner che hanno collaborato per il lancio di Windows Phone 7 (tra cui sono orgoglioso di dire che c’è anche Gaia). Questo evento non sarà trasmesso in streaming, ma è prevista la copertura live da parte di alcuni siti di settore che sono stati invitati all’evento. Vi segnalo ad esempio Telefonino.net (qui l’annuncio ufficiale) e Windows Phone Italy (qui l’annuncio ufficiale).

apps-and-games-site-apps-and-games-hero

Il marketplace

Gli sviluppatori in possesso di un account sul Marketplace (tra cui il sottoscritto) hanno ricevuto pochi giorni fa una serie di mail, che dava loro la possibilità di essere tra gli early adopters del Marketplace per Windows Phone 7, così da poter pubblicare le applicazioni per il lancio dei device. Bene, l’attesa è finalmente finita anche per noi sviluppatori: da domani sarà possibile effettuare il submit delle applicazioni, così da essere poi online per il download in tempo per il 21 Ottobre, data confermata da diversi rumors in cui verranno messi in vendita i device. L’altra ottima notizia per gli sviluppatori è che finalmente potremo dotarci di un device con cui fare i test “reali”, anche se Microsoft da questo punto di vista ha fatto un ottimo lavoro, grazie ai numerosi lab organizzati in questi mesi che hanno dato la possibilità a tante persone di provare le proprie applicazioni.

Il sito ufficiale è online

In sordina ha aperto i battenti il sito ufficiale di Windows Phone, che da una panoramica piuttosto completa della piattaforma. Troviamo le descrizioni delle app native, alcune guide d’uso (ad esempio, il significato delle varie icone di sistema) e tanto altro materiale. Unica informazione assente (per ovvi motivi): la sezione Device contiene un laconico messaggio “No devices available”. Aspettatevi un aggiornamento oggi al termine dell’evento. Il sito ufficiale è disponibile (anche in Italiano) all’indirizzo http://www.microsoft.com/windowsphone/it-it/default.aspx


Windows Phone , Microsoft , Marketplace

1 comments

Community Bridge: un’alternativa a NNTP Bridge per accedere ai forum MSDN

Print Content | More

CommunityBridge

In uno dei miei vecchi post vi avevo parlato dell’inaugurazione del forum MSDN italiano dedicato allo sviluppo di applicazioni Windows Phone 7. Il forum non è ancora frequentatissimo, ma le carte in regola per diventare un punto di riferimento per la community degli sviluppatori Windows Phone italiani ci sono tutte. L’augurio è che con l’uscita dei primi device l’interesse della comunità italiana verso questa piattaforma possa crescere e popolare maggiormente il forum. Inoltre, proprio da pochi giorni, sono diventato moderatore di questo forum (un grazie di cuore per l’opportunità), perciò questo augurio vale il doppio per il sottoscritto Smile

A tal proposito, vi segnalo che, grazie ad una collaborazione con Daniel, l’amministratore del forum (che ringrazio pubblicamente), alcuni dei tutorial tecnici che trovate (e troverete in futuro) su questo blog sono disponibili anche sul forum all’indirizzo http://social.msdn.microsoft.com/Forums/it-IT/phoneit/thread/4b5eab22-e8eb-481a-8ce3-3ada1689e50a

Ma non è questo l’argomento di cui voglio parlarvi: nel post di qualche tempo fa vi parlavo di NNTP Bridge, un tool che vi permette di continuare ad utilizzare i forum MSDN come se fossero dei newsgroup, consultabili perciò con uno dei tanti client a disposizione.

NNTP Bridge però soffre di qualche problemino, alcuni piuttosto gravi (l’ordine dei post completamente sfasato rispetto alla data di inserimento), altri minori ma fastidiosi (l’obbligo di effettuare il login con le proprie credenziali di Live ad ogni avvio).

A compensare queste lacune ci ha pensato un piccolo gruppo di sviluppatori che ha realizzato un’alternativa all’NNTP Bridge, distribuita in maniera del tutto gratuita (codice sorgente incluso) su Codeplex.

L’applicazione si chiama, molto semplicemente, Community NNTP Bridge e ha un’interfaccia utente molto più spartana di NNTP Bridge. Ha però tutta una serie di feature decisamente interessanti, tra le quali:

  • Unifica entrambe le tipologie di forum MSDN (social e answers): con NNTP Bridge era necessario impostare due server differenti.
  • Marca automaticamente i thread in cui intervenite pubblicando un post: in questo modo, indipendentemente dal client che utilizzate, avrete modo di tenere sempre sott’occhio le discussioni a cui state partecipando.
  • Permette di memorizzare le credenziali di Live, in modo da non richiederle ad ogni utilizzo.
  • Riconosce automaticamente se al vostro account è associato uno status particolare (MVP, Admin, ecc.) e lo visualizza in automatico nell’header (l’immagine sottostante mostra l’esempio di un post  dell’amministratore del forum italiano dedicato a WP7 visualizzato con MesNews)

adm

  • Supporta la conversione automatica di post da HTML a plain text, in caso il vostro client non lo supporti.

La lista di feature è decisamente più lunga e la potete trovare nella home page del progetto, da cui potete anche scaricare il tool. Il funzionamento è identico a quello dell’NNTP Bridge: una volta avviato, vi basta aprire il vostro client newsgroup e puntare all’indirizzo localhost. Solo un’avvertenza: se state già utilizzando l’NNTP Bridge, il consiglio è quello di rimuovere il server dal vostro client e aggiungerlo nuovamente. Questo perchè i MessageID (che identificano univocamente i post) cambieranno e quindi il client avrebbe qualche problema a ricostruire la struttura di tutti i thread.

Dategli una chance e fatemi sapere come vi trovate: io sono molto soddisfatto, da quando lo utilizzo tutti i problemi che avevo sono finalmente risolti! E già che ci siete, fate un salto sul forum italiano dedicato a Windows Phone 7, non ve ne pentirete Smile Se volete collegarvi tramite newsgroup reader, il nome del forum è msdn.it-IT.phoneit, se volete collegarvi via web invece l’indirizzo è http://social.msdn.microsoft.com/Forums/it-IT/phoneit/threads


Windows Phone , NNTP Bridge , Community NNTP Bridge , Forum

68 comments

Community Tour 2010: Windows Phone tra i protagonisti!

Print Content | More

CT2010_banner

Riparte nuovamente il Community Tour di Microsoft, uno degli eventi più apprezzati dagli sviluppatori italiani, che coniuga il supporto e la competenza ufficiale di Microsoft con la passione e l’esperienza delle community italiane. I temi caldi di questo Community Tour saranno Azure, Windows Phone 7 e Internet Explorer 9, ovvero tre delle tecnologie più recenti e importanti presentate da Microsoft.

Il community tour si divide in due categorie: eventi TechEd ed eventi MSDN. I primi sono soprattutto rivolti ai sistemisti e a chi si occupa di infrastrutture di rete: verranno trattate tecnologie come Sharepoint, Windows Server 2008, virtualizzazione, Hyper-V, ecc. I secondi sono rivolti principalmente agli sviluppatori e vedranno come protagonisti Windows Phone 7, HTML5, cloud computing e così via.

Quasi tutte le tappe vedranno la partecipazione di un Evangelist Microsoft (ad esempio, Lorenzo terrà la maggior parte delle sessioni su Windows Phone 7), al quale si affiancheranno MVP o membri delle community per le altre sessioni.

La pagina di riferimento è http://www.microsoft.com/italy/eventi/tour/: trovate l’elenco di tutte le tappe (di entrambe le tipologie di eventi) con un link per vedere l’agenda dettagliata della giornata, avere tutte le indicazioni pratiche su orari e luoghi e, ovviamente, iscrivervi.

Farò anche io la mia piccola parte: mi occuperò infatti della sessione relativa a Windows Phone 7 nella tappa di Bergamo che si terrà il 10 Novembre e che è organizzata da DotNetteria, DotNetLombardia e UmbracoItalia. L’argomento è ancora da definire (l’agenda è ancora provvisoria): quello che è sicuro è che si tratterà di una sessione multispeaker, in cui io, Roberto Freato (MVP nella categoria Device Application Development ed esperto di Azure) e Alessandro Ghizzardi (fondatore di Umbracoitalia, community dedicata ad uno dei più importanti CMS basati su .NET) cercheremo di fare qualche “magheggio” e mostrarvi come, sfruttando dei servizi, integrare tre ambienti molto diversi tra loro come il cloud, un device mobile e un sito web.

Se siete sviluppatori .NET si tratta di un evento sicuramente da non perdere, perciò non perdete tempo e iscrivetevi alla tappa più vicina a voi (se venite a quella di Bergamo poi ancora meglio Smile ).

Piccola nota se siete sviluppatori Windows Phone: domani a Milano si terrà un nuovo lab che vi darà la possibilità di testare le vostre applicazioni sui device reali per le ultime “rifiniture” prima della pubblicazione sul Marketplace, che avverrà a giorni (gli sviluppatori che erano già iscritti al Marketplace stanno ricevendo proprio in queste ore le mail con le istruzioni da seguire per entrare a far parte degli “early publishers”).

Il lab, come da tradizione, sarà seguito da una cena: trovate tutte le indicazioni sul blog ufficiale MSDN, mentre per l’iscrizione alla cena c’è una pagina su Facebook dedicata.


Windows Phone , Microsoft , Community Tour , Azure , Internet Explorer 9 , HTML 5

0 comments

Un nuovo logo per il mio blog

Print Content | More

Come avrete notato, da ieri sul mio blog è apparso un vero e proprio logo al posto del semplice titolo testuale. Scrivo questo post per ringraziare pubblicamente mio fratello Stefano per averlo realizzato: ha fatto veramente un ottimo lavoro (ho sempre detto che è un grafico mancato Smile); il logo mi piace molto, dato che richiama lo stile Metro e la mia passione per Windows Phone 7.

In realtà l’originale era ancora più bello e completo, ma mal si sposava con la grafica attuale del blog: sarebbe stato necessario un rifacimento della skin, ma in questo periodo la mia priorità è su altre attività, perciò mi sono limitato ad adattare il logo.

Eccolo qui in tutta la sua interezza.

logo


Windows Phone , Logo , Blog

0 comments