Nokia Developer Champion

Print Content | More

clip_image002

Venerdì sera, come ciliegina sulla torta di una bellissima e intensa giornata trascorsa al campus Microsoft per l’evento dedicato al gaming su Windows 8, ho ricevuto una inaspettata ma graditissima mail: welcome to the Nokia Developer Champion program!

Il Nokia Developer Champion program è un’iniziativa di Nokia che prema gli sviluppatori maggiormente attivi nelle community, che offrono il loro supporto in molti modi: tramite il proprio blog, scrivendo articoli, tenendo sessioni agli eventi e così via. In parole povere, si può considerare analogo, come spirito e come filosofia, al programma MVP di Microsoft, di cui ho già l’onore di fare parte.

Recentemente Nokia ha aperto il suo programma anche agli sviluppatori Windows Phone, dato che è la tecnologia adottata per gli smartphone di ultima generazione prodotti dalla casa finlandese.

E’ un onore per me ricevere questo premio che, più che al sottoscritto, è dedicato alle community: tutto questo è possibile solo grazie al contributo delle persone che vi fanno parte e che mettono tanta passione in quello che fanno.

E adesso? Ora si continua, con sempre più carica e passione!


Windows Phone , Nokia

0 comments

Slide e demo del mio intervento sui sensori hardware di Windows 8

Print Content | More

Venerdì 5 Ottobre ho avuto l’occasione di partecipare ad un evento organizzato da Microsoft sul gaming su Windows 8. Ho trascorso veramente un bel pomeriggio: la qualità degli interventi (molto affascinante soprattutto quello di Joe Wilson dal tema “The power of technology”, supportato da una presentazione multimediale originale e diversa dalle solite slide in Powerpoint), l’organizzazione eccellente da parte di Microsoft e la compagnia di tanti amici che fa sempre piacere rivedere hanno reso la giornata veramente memorabile.

L’evento si è chiuso con un intervento a cura di Francesco Baldassarri (community manager di Intel) e del sottoscritto, dedicato all’utilizzo dell’hardware in Windows 8: Francesco ha introdotto l’argomento parlando di tablet e ultrabook di nuova generazione, nei quali la presenza di sensori di varia natura (da quelli di movimento, al GPS passando per NFC e sensori di luce) è sempre più forte. Dopodichè ho avuto il piacere di prendere la parola per continuare il discorso con un occhio di riguardo agli sviluppatori, spiegando come utilizzare i vari sensori all’interno di un’applicazione per il Windows Store: quali namespace, quali API, ecc.

Di seguito trovate le slide utilizzate durante l’intervento nonchè una soluzione Visual Studio con alcune semplici demo che ho utilizzato nel corso della sessione. Vi segnalo solo che la soluzione contiene anche una piccola demo di utilizzo delle funzionalità di geolocalizzazione, che non ho potuto mostrare per motivi di tempo.

Nel corso della prossima settimana, in più, Microsoft caricherà su Channel 9 la registrazione dell’evento: appena sarà disponibile aggiornerò il post con il link.

Aggiornamento: Microsoft ha pubblicato su Channel 9 la registrazione dell’evento, trovate il video in fondo al post mentre, a questo indirizzo, trovate l’elenco di tutte le sessioni (con la possibilità, inoltre, di scaricare in locale i video in alta definizione).

Per dubbi, domande o chiarimenti il form di contatto è a vostra disposizione!


Windows 8

0 comments

Windows 8 e Gaming, Azure Day e WebNet Conference: eventi per tutti!

Print Content | More

Con l’inizio dell’Autunno le iniziative delle community hanno ripreso vita e sono tanti gli appuntamenti importanti nel prossimo futuro. Vediamone qualcuno dei più interessanti!

Windows 8 e gaming

Sviluppare Giochi per Windows 8

Venerdì 5 Ottobre si terrà, in sede Microsoft a Peschiera Borromeo (MI), un evento dedicato al gaming e a Windows 8. L’evento avrà inizio alle ore 14 e vari speaker si alterneranno sul palco parlando delle opportunità di Windows 8 e delle tecnologie e dei linguaggi disponibili per lo sviluppo di giochi (da C# a C++ e DirectX, passando per framework alternativi come Unity o MonoGame).

All’evento ci sarà una buona rappresentanza di DotNetLombardia: il sottoscritto, insieme a Francesco Baldassarri, community manager di Intel, parlerà dei vari sensori hardware disponibili nei tablet e  gli ultrabook di nuova generazione (come i sensori di movimento, GPS o NFC) e come sfruttarli all’interno di un’applicazione Windows 8.

Dan Ardelean, invece, ci parlerà di come utilizzare MonoGame per portare facilmente giochi sviluppati con XNA per Windows Phone in Windows 8.

Per l’agenda completa e per registrarvi vi rimando alla pagina ufficiale dell’evento.

Azure Day 2012

Windows_azure_r.png

DotNetLombardia è particolarmente attiva nell’ultimo periodo e, a breve distanza dall’ultimo appuntamento (il Visual Studio Day in collaborazione con Intel), vi proponiamo un nuovo evento, completamente dedicato alla tecnologia cloud Microsoft per eccellenza, Azure.

La grande novità è che, per la prima volta per DotNetLombardia, l’evento sarà costituito da due track: una dedicata agli sviluppatori e una ai professionisti dell’IT. Nella prima si affronteranno tematiche e problematiche relative allo sviluppo di applicazioni in grado di integrarsi e di sfruttare con efficacia le potenzialità del cloud; nella seconda, invece, imparerete come integrare Azure all’interno delle infrastrutture aziendali già esistenti, quali sono i vantaggi e quali sono le problematiche da tenere presente.

L’evento si terrà il 10 Ottobre in sede Microsoft, a Peschiera Borromeo: vi lascio al sito ufficiale per l’agenda completa e le iscrizioni.

WebNet Conference

Il mio amico Ugo Lattanzi, insieme a Simone Chiaretta (entrambi MVP su ASP.NET) hanno organizzato una conferenza completamente dedicata a tematiche web che si terrà a Milano Sabato 20 Ottobre, presso la sede di Avanade Italia, situata a 5 minuti a piedi dalla stazione centrale. Se avete avuto occasione di parteciparvi in passato, la location è la stessa degli ultimi eventi targati UgiAlt.Net.

Ugo e Simone sono riusciti nella difficile impresa di organizzare una conferenza di stampo europeo: le sessioni saranno perciò in inglese e diversi speaker e partecipanti arriveranno appositamente dall’estero per l’occasione. L’agenda è ricca di argomenti interessanti: Azure, Web API, Javascript, SignalR e tanti altri ancora.

Purtroppo (per voi che state leggendo questo post, non per chi l’ha organizzata ovviamente Smile) la conferenza ha catalizzato molto interesse e nel giro di poco meno di 3 ore i posti disponibili sono andati esauriti: se vi interessa paretcipare potete provare a registrarvi per la wait list, nel caso in cui si liberi qualche posto.

Trovate tutte le informazioni sul sito ufficiale.


Windows 8 , Azure , Web

0 comments

Utilizzare e testare i background task di Windows 8 – Parte 2

Print Content | More

Nel post precedente abbiamo creato e configurato un background task per la nostra applicazione Windows 8: abbiamo creato un progetto a parte per il task e abbiamo configurato il file di manifest. Ora è tempo di scrivere il codice necessario per registrare il task, così che l’applicazione possa utilizzarlo. Andremo a registrare il task che abbiamo creato nel post precedente: un semplice timer task che mostra una notifica toast.

Ecco il codice da inserire nel file MainPage.xaml.cs, ovvero il code behind della pagina che viene caricata quando l’applicazione viene lanciata.

private async void RegisterBackgroundTask()
{
    try
    {
        BackgroundAccessStatus status = await BackgroundExecutionManager.RequestAccessAsync();
        if (status == BackgroundAccessStatus.AllowedWithAlwaysOnRealTimeConnectivity || status == BackgroundAccessStatus.AllowedMayUseActiveRealTimeConnectivity)
        {
            bool isRegistered = BackgroundTaskRegistration.AllTasks.Any(x => x.Value.Name == "Notification task");
            if (!isRegistered)
            {
                BackgroundTaskBuilder builder = new BackgroundTaskBuilder
                {
                    Name = "Notification task",
                    TaskEntryPoint =
                        "BackgroundTask.NotificationTask.NotificationTask"
                };
                builder.SetTrigger(new TimeTrigger(60, false));
                builder.AddCondition(new SystemCondition(SystemConditionType.InternetAvailable));
                BackgroundTaskRegistration task = builder.Register();
            }
        }
    }
    catch (Exception ex)
    {
        Debug.WriteLine("The access has already been granted");
    }
}

La prima cosa da fare è chiedere all’utente il permesso di eseguire il task in background, chiamando il metodo RequestAccessAsync della classe BackgroundExecutionManager. Quando questo metodo viene eseguito, all’utente viene mostrata una finestra in cui gli viene richiesto il permesso di abilitare o meno il task: la scelta dell’utente viene restuita sotto forma di oggetto di tipo BackgroundAccessStatus, che è un enumeratore. Il codice appena descritto è contenuto all’interno di un blocco try / catch: questo perchè c’è un bug nelle API di WinRT che fa si che venga scatenata un’eccezione nel caso l’utente abbia già dato il suo consenso di eseguire il task in background.

Nel caso l’utente abbia dato il suo benestare, la prima cosa che facciamo è verificare se il task sia già registrato o meno. Al contrario di quanto avviene con Windows Phone, infatti, è possibile registrare più volte lo stesso task; nel mondo Windows Phone, invece, viene sollevata un’eccezione. Per raggiungere questo scopo dobbiamo accedere alla collezione di tutti i task registrati (BackgroundTaskRegistration.AllTasks) e cerchiamo un task dal nome Notification task: vedremo a breve che questo è il nome con cui identificheremo il task.

Se il task non è ancora registrato, creiamo una nuova istanza della classe BackgroundTaskBuilder e impostiamo due proprietà: Name, che è l’identificativo del task (è il nome che abbiamo usato in precedenza per controllare se era già registrato o meno) e TaskEntryPoint, che è lo stesso valore che abbiamo impostato nel parametro Entry point del file di manifest: è il nome completo della classe che ospita il task, compreso di namespace. Nel nostro esempio, l’entry point è BackgroundTask.NotificationTask.NotificationTask.

Il passo successivo è definire il tipo di background task: pre questo scopo utilizziamo il metodo SetTrigger dell’oggetto di tipo BackgroundTaskBuilder. Dato che nell’esempio abbiamo creato un timer task, definiamo un TimeTrigger e specifichiamo che deve essere eseguito ogni 60 minuti. Un’altra caratterisca dei background task di Windows 8 è il supporto alle conditons, ovvero condizioni che devono essere soddisfatte affinchè il task venga eseguito. Nel nostro caso, siccome andiamo a simulare un task che periodicamente controlla su Internet la presenza di nuove notizie, aggiungiamo una SytemCondition di tipo InternetAvailable. In questo modo il task sarà eseguito solo se c’è una connessione Internet attiva; in caso contrario, il task non sarà nemmeno eseguito.

Infine registriamo i ltask chiamando il metodo Register. Come ultima operazione, prima di iniziare i test, dobbiamo ricordarci di agiungere una reference del progetto del task al client: è sufficiente fare tasto destro sul progetto dell’applicazione, scegliere Add reference e, tramite la sezione Solutions, fare doppio clic sul progetto del background tas.

In the end we register the task by calling the Register method. Last but not the least, we need to add a reference of the background task’s project to the client: let’s right click on the client project, choose Add reference and, by using the Solutions tab, double click on the background’s task project.

It’s time to debug!

Ora che abbiamo creato un background task vogliamo testarlo per verificare che tutto funzioni correttamente: Visual Studio 2012, fortuntamente, offre un modo più intelligente che semplicemente farci attendere che le condizioni di esecuzione siano soddisfatte (nel nostro caso, la presenza di una connessione ad Internet e il raggiungimento del timer di 60 minuti).

La prima cosa da fare è registrare il task quando l’applicazione viene avviata: in questo esempio chiamiamo semplicemente il metodo RegisteredBackgroundTask che abbiamo appena definito nel costruttore della classe MainPage.

La prima volta che l’applicazione viene eseguita sarà mostrato il messaggio che vi chiede l’autorizzazione ad eseguire il task in background: una volta che avete confermato e l’applicazione è partita, tornate in Visual Studio. Fate clic con il tasto destro in uno degli spazi vuoti sotto il menu e abilitate la visualizzazione della toolbar Debug location. Accanto al nome del processo troverete un menu a tendina, con alcune utili opzioni che permettono di simulare i vari stati che può assumere durante il suo ciclo di via un’applicazione Windows 8 (Suspend, Resume o Suspend and shutdown): nel nostro caso, siccome abbiamo registrato un background task, troverete un’altra opzione con il nome del task.

image_thumb2

Cliccateci sopra e… voilà, il background task sarà eseguito: se avete impostato un breakpoint sul metodo Run del vostro task, avrete la possibilità di fare debuggging come fareste con qualsiasi altra applicazione.

E se qualcosa va storto? Ad esempio, il task non viene mostrato nell’elenco dei processi?

Ecco alcuni suggerimenti di problemi che possono causare malfunzionamenti nel vostro task:

  • Assicuratevi che il tipo del progetto contenente il background task sia Windows Runtime Component.
  • L’applicazione deve avere una reference al progetto del task: assicuratevi che sia elencato nella sezione References del vostro progetto.
  • Controllate le impostazioni dell’applicazione (tramite la charm bar) e verificate che sia le notifiche che i background task siano abilitati.
  • Verificate che l’entry point (sia nel manifest che nella registrazione nel codice) sia corretto. Deve essere il nome della classe comprensivo di namespace.

Se voltete fare esperimenti con quanto visto in questi post, ecco il link da cui scaricare il progetto di esempio utilizzato.


Windows 8 , Microsoft , Background task

0 comments

Utilizzare e testare i background task di Windows 8 – Parte 1

Print Content | More

Dopo diversi tentativi sono finalmente riuscito a capire qual è il modo corretto per utilizzare, configurare e testare i background task di Windows 8: dato che l’intera procedura potrebbe risultare poco intuitiva, ho pensato di condividere con voi la mia esperienza.

Prima di tutto faccio però un passo indietro: esattamente come in Windows Phone, anche le applicazioni Windows 8 non possono essere eseguite in background, in quanto vengono automaticamente sospese dal sistema operativo 10 secondi dopo che l’app non è più in primo piano (perchè ne abbiamo aperta un’altra, oppure siamo passati al desktop). Per non limitare eccessivamente gli sviluppatori, Windows 8 ha introdotto il concetto di background task, ovvero operazioni che possono essere eseguite in background quando viene soddisfatta una determinata condizione: è trascorso un intervallo di tempo, è arrivata una notifica push, lo stato del computer è cambiato, ecc.

Questo concetto dovrebbe essere famigliare agli sviluppatori Windows Phone: la versione 7.5 del sistema operativo mobile di Microsoft ha introdotto, infatti, lo stesso approccio per supportare l’esecuzione di operazioni in background. L’unica differenza è che i task di Windows 8 sono più potenti: in Windows Phone ci sono poche categorie di background task e, principalmente, sono quasi tutti basati su criteri di esecuzione temporali (pensiamo ai PeriodicTask). In Windows 8, invece, c’è una maggiore varietà di condizioni che possono essere monitorate per determinare l’esecuzione di un task in background.

Di contro, i task in Windows 8 sono più complessi da implementare e testare, principalmente perchè, al contrario del mondo Windows Phone, non esiste un template specifico in Visual Studio, perciò non è così immediato capirne il funzionamento.

La prima cosa da tenere a mente è che, esattamente come in Windows Phone, i background task sono un progetto separato di Visual Studio, che fa parte della stessa soluzione dell’applicazione vera e propria. Il primo passo, perciò, è quello di creare un nuovo progetto, facendo clic con il tasto destro sulla soluzione e scegliendo Add – New Project. Il template che andremo ad usare si chiama Windows Runtime Component, disponibile all’interno della categoria Windows Store.

SNAGHTMLbc5089b_thumb2

E’ importante usare questo template perchè in questo il tipo di output del progetto viene automaticamente impostato su Windows Runtime Component (questa informazione è visibile nel dropdown menu chiamato Output Type all’interno delle proprietà del progetto). Se provate ad utilizzare un altro tipo di progetto (come una generica Class Library), il background task non funzionerà.

image_thumb3

Ora che abbiamo il progetto possiamo iniziare a scrivere un po’ di codice: rinominate la classe che viene creata in automatico con il progetto, in modo da dargli un nome più significativo (ad esempio, NotificationTask nel mio caso) e cambiate la definizione in modo che la classe erediti dall’interfaccia IBackgroundTask.

Tale interfaccia vi “obbligherà” ad implementare il metodo Run, che è quello che viene invocato nel momento in cui il background task viene eseguito: conterrà tutta la logica necessaria per eseguire le operazioni in background. In questo esempio, creerò un semplice background task che mostra a video una notifica toast. Ecco il codice del metodo che invia la notifica, utilizzando uno dei template messi a disposizione da WinRT:

private void SendNotification(string text)
{
    XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText01);

    XmlNodeList elements = toastXml.GetElementsByTagName("text");
    foreach (IXmlNode node in elements)
    {
        node.InnerText = text;
    }

    ToastNotification notification = new ToastNotification(toastXml);
    ToastNotificationManager.CreateToastNotifier().Show(notification);
}

Utilizzando la classe ToastNotificationManager recuperiamo l’XML che identifica il template e ne modifichiamo il nodo text, che contiene il testo della notifica. Infine, creiamo una nuova ToastNotification utilizzando il template che abbiamo appena aggiornato e lo mostriamo usando nuovamente la classe ToastNotificationManager.

All’interno del metodo Run del bacgkround task andiamo semplicemente a richiamare il metodo appena definito passando un testo fittizio:

public void Run(IBackgroundTaskInstance taskInstance)
{
    SendNotification("This is a toast notification");
}

Una cosa importante da sottolineare è che il metodo Run porta con se un parametro di tipo IBackgroundTaskInstance, che contiene diverse informazioni sull’esecuzione corrente. Questo parametro è importante specialmente se dobbiamo scrivere del codice asincrono che faccia uso delle keyword async e await, in quanto, con l’architettura che abbiamo visto, il task terminerebbe prima che il codice asincrono abbia completato la sua esecuzione.

Per questo motivo, l’oggetto di tipo IBackgroundTaskInstance contiene il metodo GetDeferral che restituisce un oggetto di tipo BackgroundTaskDeferral, da utilizzare per gestire il codice asincrono:

public async void Run(IBackgroundTaskInstance taskInstance)
{
    BackgroundTaskDeferral deferral = taskInstance.GetDeferral();

    //we launch an async operation using the async / await pattern    
    await CheckNewItems();

    deferral.Complete();
}

Una volta in possesso di tale oggetto possiamo eseguire il nostro codice asincrono (nell’esempio, chiamiamo un metodo fittizio che controlla la presenza di nuove notizie da un feed) e, solo una volta che l’operazione è terminata, chiamiamo il metodo Complete.

Passiamo all’applicazione

Fino ad ora ci siamo concentrati su come creare il background task. Ma come facciamo a configurare il client (l’applicazione Windows 8 vera e propria) per utilizzare il task? Sono due gli step da seguire: il primo è dichiarare il task nel manifest. Fate doppio click sul file Package.appxmanifest, in modo da aprire l’editor visuale, e portatevi nella sezione Declarations: dal dropdown selezione Background Tasks e premete il pulsante Add. A questo punto occorre configurare:

  • Il tipo di background task: nel nostro esempio andiamo a definire un task di tipo timer, che può essere eseguito periodicamente.
  • L’entry point del background task, ovvero il nome della classe completo di namespace. Siccome nel nostro esempio abbiamo definito una classe NotificationTask all’interno di un progetto chiamato BackgroundTask.NotificationTask, l’entry point sarà BackgroundTask.NotificationTask.NotificationTask.

image_thumb7

Non abbiamo ancora finito di modificare il file di manifest: come potete vedere nell’immagine, una volta che abbiamo aggiunto la dichiarazione del background task è comparsa un’icona di avvertimento (la croce bianca su sfondo rosso) nel tab Application UI. Questo perchè, quando si include un task di tipo Timer, Push Notification o Control Channel, Visual Studio vi obbliga a specificare il comportamento da adottare per le lock notifications, ovvero le notifiche che vengono mostrare sulla lock screen. Tale requisito è richiesto perchè si tratta di tipologie di background task che vengono solitamente utilizzati per questo scopo.

Per farlo, dobbiamo aprire il tab Application UI e:

  • Impostare alla voce Lock screen notifications se avete intenzione di mostrare come notifica solo un badge (l’icona con un numero) o se è supportata anche la visualizzazione di testo (come fa, ad esempio, l’applicazione del calendario, che mostra il titolo del prossimo appuntamento).
  • Impostare, nella sezione Notifications, l’opzione Toast capable su yes, siccome il background task che abbiamo creato è in grado di mostrare notifiche toast.

image_thumb2

E’ tempo di scrivere un po’ di codice… o quasi

Nel prossimo post vedremo come registrare il background task nel codice e quali sono gli strumenti che ci mette a disposizione Visual Studio 2012 per testarlo.


Windows 8 , Microsoft , Background task

1 comments

Windows Phone 8: piccole e grandi novità da Nokia

Print Content | More

Windows Phone 8 continua a svelarsi con il contagocce e l’evento di ieri di Nokia non ha fatto eccezione: la press conference organizzata dalla casa finlandese, infatti, si è concentrata quasi totalmente sui nuovi modelli della serie Lumia dedicati a Windows Phone 8, lasciando qualche minuto a Joe Belfiore di Microsoft per mostrare qualche caratteristica di Windows Phone 8, senza però svelare troppe novità.

Dal punto di vista del software, infatti, Microsoft ha sottolineato alcune delle feature già conosciute (come la nuova start screen) e ne ha mostrato qualcuna di nuova (come la possibilità di scattare screenshot o la nuova versione dell’applicazione per interagire con la fotocamera). Rimangono perciò non confermate le feature consumer che sono trapelate in qualche modo negli ultimi mesi.

Massima segretezza anche per la nuova versione dell’SDK: chi si aspettava qualche novità nella giornata di oggi sarà rimasto deluso, visto che Microsoft non ha rilasciato alcunchè nè ha svelato la data di uscita ufficiale. C’è però una notizia interessante: tramite un post sul blog ufficiale Microsoft fa sapere che l’SDK è già nelle mani di alcuni sviluppatori selezionati e aziende partner, allo scopo di preparare applicazioni di alto livello per il lancio ufficiale. A partire dal 12 Settembre, Microsoft estenderà la disponibilità della preview dell’SDK ad altri sviluppatori tra coloro che hanno già pubblicato applicazioni per Windows Phone 7. Aspettate però prima di esultare: a quanto pare il numero di persone selezionate sarà molto ristretto. Appuntamento per il 12 Settembre sul blog ufficiale del team di Windows Phone, nel quale saranno pubblicate maggiori informazioni sulla procedura per entrare a far parte del programma di beta testing.

Lumia 920 e Lumia 820

Se Microsoft può avere lasciato un po’ l’amaro in bocca a chi si aspettava qualche annuncio in più, Nokia non ha invece tradito le aspettative, presentando due nuovi telefoni Windows Phone 8 della serie Lumia.

Il primo è il Lumia 920 e va a prendere il posto del Lumia 900 come telefono top di gamma, adeguandosi alle nuove specifiche hardware di Windows Phone 8: risoluzione più alta (1280x768), processore dual core, NFC e 1 GB di memoria RAM. A questa dotazione hardware di primo piano si affianca una fotocamera di altissima qualità, dotata della nuova tecnologia PureView di Nokia, uno schermo generoso (4.5 pollici), uno storage capiente (32 GB) e qualche chicca decisamente interessante, come il supporto alla ricarica wireless (tramite un’apposita base fornita con il telefono) e uno schermo touch screen di nuova generazione molto sensibile, che può essere utilizzato anche indossando dei guanti (molto comodo in inverno Smile).

Trovate l’elenco completo delle caratteristiche in questo articolo pubblicato su Plaffo.

Ecco il video ufficiale di Nokia:

Il Lumia 820 invece è il fratello minore, con caratteristiche inferiori al 920 ma comunque molto interessanti: dotato anch’esso di supporto alla ricarica wireless e disponibile in diversi colori grazie alla presenza di cover intercambiabili, è dotato come il fratello maggiore di un processore dual core da 1.5 GHz, ma ha uno schermo di dimensioni inferiori (4.3 pollici) e con la stessa risoluzione dei Lumia della precedente generazione (800x480). Di minore qualità anche la fotocamera, dotata comunque di 8 MPixel ma senza la tecnologia PureView che contraddistingue il fratello maggiore. Ridotta anche la capacità di storage (8 GB), compensata però da una delle novità di Windows Phone 8: il supporto alle microSD per memorizzare musica, foto e film.

Anche in questo caso, vi segnalo l’articolo di Plaffo con l’elenco completo delle caratteristiche tecniche e vi propongo il filmato ufficiale del prodotto.

Nessuna comunicazione per il momento per quanto riguarda il prezzo e la data di lancio, anche se si sa che avverrà entro la fine dell’anno, periodo per il quale è atteso il rilascio di Windows Phone 8. Il divertimento deve ancora iniziare! Smile


Windows Phone , Microsoft , Nokia

0 comments

Il mio primo articolo cartaceo… con qualche rettifica!

Print Content | More

Nel numero di Settembre della rivista PC Professionale trovate il mio primo articolo pubblicato sulla carta stampata, dedicato allo sviluppo di applicazioni per Windows Phone. In più, nel DVD trovate anche un webcast della durata di circa 30 minuti che vi guiderà passo passo nella creazione di un semplice progetto, ovvero un’applicazione per leggere un feed RSS.

Mi sembra doveroso però, in questa sede, specificare alcune rettifiche, dovute ad alcune scelte editoriali non di mia competenza.

La prima è relativa al titolo dell’articolo riportato nell’indice, ovvero Windows Phone si allinea a Windows 7: tale titolo è palesemente sbagliato, dato che non vuol dire niente Smile Come ben sapete, Windows Phone 7 è basato su un subset di Silverlight, che è una delle tante tecnologie disponibili nel mondo Microsoft.

La seconda rettifica è relativa al sottotitolo che è stato pubblicato nell’articolo vero e proprio, ovvero: Windows Phone 8 allinea il sistema operativo mobile di Microsoft con Windows 8 dal punto di vista del core e dell’approccio allo sviluppo. Come potete immaginare, si tratta di un’informazione decisamente errata: l’SDK di Windows Phone 8 non è ancora stata rilasciata, perciò sarebbe stato impossibile per me scrivere un articolo dedicato allo sviluppo di applicazioni per la nuova piattaforma, viste le poche informazioni rivelate da Microsoft all’evento del 20 Giugno scorso. L’articolo è, ovviamente, incentrato su Windows Phone 7.5.

Vi segnalo infine che l’articolo riporta foto e informazioni inerenti il vecchio App Hub: purtroppo questo non è un errore mio o dell’editore, ma è una conseguenza del fatto che spesso il mondo tecnologico è più veloce dei tempi editoriali delle riviste cartacee; il nuovo Windows Phone Dev Center, infatti, è stato reso pubblico ad articolo già consegnato.

Fatte queste doverose precisazioni, vi auguro una buona lettura dell’articolo e, se avete dubbi o domande, non esitate a contattarmi tramite l’apposito form!

Aggiornamento: mi sono accorto ora che anche la copertina del DVD inclusi alla rivista è sbagliato. All’interno, infatti, troverete un webcast introduttivo allo sviluppo per Windows Phone 7.5 e non, come riportato, su Windows Phone 8.


Windows Phone

0 comments

Un evento online dedicato a Windows Phone il 7 Settembre

Print Content | More

Se siete sviluppatori Windows Phone vi segnalo un interessante appuntamento organizzato da Microsoft per il 7 Settembre: a partire dalle ore 15 alcuni esperti saranno disponibili online per rispondere alle vostre domande, dubbi e difficoltà nello sviluppo di applicazioni per la piattaforma mobile Microsoft.

L’evento si svolgerà tramite l’utilizzo di Lync, la tecnologia Microsoft per i meeting e le conferenze online: alla pagina ufficiale trovate il link per la registrazione e per scaricare Lync Attendee (la versione gratuita di Lync che permette di partecipare ai meeting ma non di crearli).

Nei giorni precedenti all’evento riceverete le istruzioni per collegarvi e per prepararvi adeguatamente. Ovviamente, è altamente consigliato avere già installati sul vostro computer i tool di sviluppo per Windows Phone 7.5, che potete scaricare da qui.

Vi aspettiamo numerosi!


Windows Phone , Microsoft

0 comments

MVVM e Windows Phone – Gestire gli eventi tramite Command (6° parte)

Print Content | More

Nel post precedente abbiamo visto come utilizzare i command, ovvero il meccanismo che ci permette di gestire le interazioni dell’utente con la UI direttamente nel ViewModel, rispettando i principi del pattern MVVM ed evitando così di andare ad inserire logica nel code behind.

I command però si “limitano” a soddisfare lo scenario di interazione principale offerto dal controllo (ad esempio, il tap di un pulsante): se in questo modo andiamo a coprire la maggior parte dei casi d’uso reali, può capitare però la necessità di interagire con uno degli altri eventi esposti dal controllo.

Sempre rimanendo nell’ambito del controllo Button un esempio è dato dall’evento DoubleTap, che permette di gestire la doppia pressione del pulsante da parte dell’utente. Per soddisfare questo scenario ci vengono in aiuto i behavior di Silverlight e, nello specifico, uno di quelli inclusi nel MVVM Light Toolkit, chiamato EventToCommand. Questo behavior è in grado di fare il mapping tra un evento e un command, dandoci la possibilità di usare il binding.

Vediamo come utilizzarlo: come prima cosa definiamo nel ViewModel il nostro command, esattamente come abbiamo fatto nel post precedente.

private RelayCommand _buttonDoubleTap;

public RelayCommand ButtonDoubleTap
{
    get
    {
        return _buttonDoubleTap
            ?? (_buttonDoubleTap = new RelayCommand(
                                  () =>
                                      {
                                          MessageBox.Show("Double tapped!");
                                      }));
    }
}

Si tratta di un command molto semplice, che si limite a mostrare un messaggio a video. Ora vediamo invece come collegarlo all’evento DoubleTap di un pulsante nello XAML: la prima cosa è dichiarare due namespace che ci serviranno, il primo per accedere ai behavior e il secondo per accedere a quello specifico del toolkit.

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:Command="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WP71"

Se abbiamo aggiunto MVVM Light tramite NuGet troveremo automaticamente referenziate queste due librerie.

Dopodichè possiamo utilizzare il behavior EventToCommand come nell’esempio:

<Button Content="Double tap">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="DoubleTap">
            <Command:EventToCommand Command="{Binding Path=ButtonDoubleTap}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</Button>

La sintassi è molto semplice: nella proprietà EventName del controllo EventTrigger si specifica l’evento del controllo che si vuole gestire, mentre nella proprietà Command del behavior EventToCommand si indica, tramite binding, il command da eseguire dichiarato nel ViewModel. E’ possibile anche utilizzare i command con parametri (come abbiamo visto nel post precedente) semplicemente utilizzando la proprietà CommandParameter.

In conclusione

Di seguito trovate il link per scaricare il progetto di esempio sui command aggiornato con una demo della funzionalità vista in questo post.


Windows Phone , MVVM

2 comments

Visual Studio Day by DotNetLombardia e Intel

Print Content | More

Molti di voi saranno ancora in vacanza, lontani da computer, codice da scrivere e progetti da compilare. Putroppo però le vacanze non durano per sempre e prima o poi dovremo tornare tutti a fare i conti con la realtà di tutti i giorni: perchè non riprendere nel migliore dei modi con un evento community?

Giovedì 20 Settembre si terrà, presso la sede di Assago (MI) di Intel, un pomeriggio organizzato da DotNetLombardia e Intel interamente dedicato alla nuova versione di Visual Studio, la cui RTM è stata rilasciata pochi giorni fa.

Sul palco si alterneranno speaker di Intel, che parleranno delle opportunità offerte dagli ultrabook di nuova generazione nello sviluppo di applicazioni, a speaker del mondo community, che vi faranno toccare con mano le novità di Visual Studio 2012.

Tra gli speaker ci sarò anche io, con una sessione dal titolo Visual Studio 2012 Tips & Tricks, in cui vi guiderò alla scoperta delle feature più interessanti del nuovo ambiente di sviluppo targato Microsoft.

Trovate l’agenda completa, le indicazioni per raggiungere il luogo e il link per iscrivervi sul sito ufficiale. Vi aspettiamo numerosi!


Visual Studio , Microsoft , DotNetLombardia , Intel

0 comments