Using Bing SDK in Windows 8 Metro Apps

Vediamo come possiamo utilizzare Bing SDK nelle nostre Metro Style Apps.

Inanzitutto dobbiamo scaricare dal sito Microsoft il package Bing Maps SDK for Windows Store apps a questo indirizzo:  http://visualstudiogallery.msdn.microsoft.com/bb764f67-6b2c-4e14-b2d3-17477ae1eaca, dove troviamo anche alcune indicazioni per noi sviluppatori.

Una volta scaricato/installato il package lo dobbiamo aggiungere come Reference alla nostra applicazione, a questo punto se siamo sviluppatori C# o VB.NET ci manca ancora un requisito obbligatorio, cioè: Microsoft C++ Runtime Package.

Bene, ora che abbiamo tutti gli strumenti che ci servono per sviluppare ci manca ancora il Map Developer Account che possiamo creare sul sito http://www.bingmapsportal.com/.

Qui possiamo accedere con il nostro LiveId così da creare una SecretKey (che ci servira dopo per usufruire del servizio) associata alla nostra App:

Ecco qui una screenshot:

Ora possiammo vedere qualche esempio di codice

Per iniziare dobbiamo mettere come resource la SecretKey così che sia sempre disponibile nella nostra App (possiamo usare il App.xaml):

Adesso non ci rimane che mettere il controllo Map via XAML in questo modo:

L’App di esempio che ho fatto mette a disposizione quattro funzionalità nell’AppBar:

ZoomIn (fattore di ingrandimento sulla mappa)
ZoomOut (fattore di ridimensionamento sulla mappa)
SetLocation (posizione attuale)
ChangeView  (cambio di vista)

Qui una screenshot completa:

Adesso vediamo il codice che serve per le funzionalità sopra alencate.

ZoomIn / ZoomOut

Per fare questo tipo di operazioni sulla mappa, molto semplicemente ci basta accedere all’oggetto mappa definito prima e impostare il nuovo ZoomLevel che ci interessa e successivamente fare un SetZoomLevel sulla mappa con il nuovo fattore di Zoom.

Ecco come:

Change Map Type

Per cambiare visualizzazione è sufficiente cambiare il valore l’enumerativa  MapType dell’oggetto Map impostato precedentemente.

Ecco un esempio:

Set Location

Per impostare la nostra posizione attuale sulla mappa dobbiare creare un’istanza dell’oggetto Geolocaltor e invocare il metodo async GetGeopositionAsync che a sua volta ci restuirà indietro un oggetto GeoPosition con latitudine e longitudine.

Ora possiamo creare un oggetto Location date le coordinate appena recuperate e fare un SetView sull’oggetto Map creato in precedenza dove ci viene richiesto un oggetto Localtion e il fattore di Zoom che volgliamo.

Ecco un esempio:

Nell’esempio sopra ho aggiunto la possibilità tramite un Tap sulla mappa di impostare un pushpin (come memo.

Ecco il link per scaricare l’esempio.

Buon Divertimento

Maurizio

Using SQLite in Windows 8 Metro Style Apps

Con grande stupore, visto che all’uscita di Windows 8 non era previsto nessun supporto nativo per database, ora è finalmente disponibile una versione del noto database SQLite (precompiled) sia per WinRT che per Windows Phone 8.  🙂

Da ora in poi saremo in grado di sviluppare applicazioni che possono condividere il layer di accesso ai dati basato su SQLite, quindi semplificare l’integrazione tra le due piattaforme: Windows 8 e Windows Phone 8.

Fatta questa premessa, vediamo i passi da seguire per poter integrare SQLite nelle nostre Windows 8 Apps.

Di cosa abbiamo bisogno?

Inanzitutto dobbiamo andare sul sito ufficiale www.sqlite.org alla sezione download scaricare il package per WinRT che si chiama Precompiled Binaries for Windows Runtime ed eseguire l’installazione.

Una volta completata la fase d’installazione possiamo aprire la nostra Windows 8 App e aggiungere la reference al progetto.
Ecco la screenshot:

SQLite ReferenceSe, a questo punto, la nostra applicazione non dovesse compilare, sarebbe dovuto dal fatto che essendo SQLite una libreria di codice nativo dobbiamo impostare dal Configuration Manager di Visual Studio x86 o x64 (e non AnyCPU)  non essendo ancora supportato ARM.


Adesso non ci rimane che scaricare tramite NuGet una libreria chiamata sqlite-net che ci semplifica la vita e fornisce il supporto LINQ per lavorare con i dati e il supporto all’async pattern.
NuGet scaricarà nella root del nostro progetto 2 files: SQLite.cs (supporto sincrono) e SQLiteAsync.cs (supporto asincrono), che sono appunto le classi che ci vengono in supporto per lo sviluppo.

Ora scriviamo del codice:

In questo post vedremo come iniziare a usare SQLite in un App XAML / C#, come creare un database e eseguire delle operazioni CRUD sui dati.

Il primo passaggio è quello di creare un oggetto SQLiteAsyncConnection, o SQLiteConnection (per la versione sicnrona), che identifica la connessione al database.
Ecco un esempio di creazione Db Sincrona:

Ecco un esempio di Creazione Db Asyncrona:
Ora però ci serve almeno una tabella quindi definiamo una classe e andiamo a decorare le Proprietà in questo modo:

In questo esempio possiamo notare alcuni attributi utili per decorare in modoo opportuno la nostra classe:

AutoIncrement: utile per dire a SQLite che quella colonna sarà un numero auto incrementato.
PrimaryKey: serve per identificare una colonna come chiave primaria.

Per creare la tabella appena definita chiamiamo il metodo CreateTableAsync <T>, o CreateTable<T> (per la versione sincrona), per ogni tabella che si desidera creare, dove T è il tipo di dati che andremo a riporre in essa.

Ora ci tocca inserire dei dati e per farlo possiamo usare il metodo InsertAsync, o Insert (nella versione sincrona), che accetta come parametro una istanza di oggetto che andremo a salvare… oppure possiamo usare, in caso di inserimento massivo, InsertAllAsync che accetta come parametro una istanza di un oggetto enumerabile.
Ecco un esempio della versione Asyncrona:
E qui la versione sincrona:

Come si può notare per la versione sincrona ho utilizzato il metodo RunInTransaction che ci permette di scrivere del codice safe e gestire al meglio i nostri dati.

Adesso non ci rimane altro che visualizzare i nostri dati appena inseriti: per farlo possiamo utilizzare il metodo Table<T> e chiamare successivamente  l’extentions ToListAsync (solo nella versione asincrona).
Ecco un esempio della versione asincrona:
E qui la versione sincrona:

….. e ora siamo pronti a integrare SQLite nelle nostre Windows 8 APP! 🙂

Enjoy!

MetroZip App for Windows Store – Release 1

MetroZip
E’ ufficialmente nello store la nuova App MetroZip, l’Applicazione che vi permette di create e gestire i vostri archivi compressi in formato zip con tutta comodità.

Quali sono le nuove funzionalità? MetroZip consentirà di:
– creare un nuovo archivio in formato zip
– aprire un archivio zip
– aggiungere files o folders ad un archivio esistente
– condividere via email o in cloud un archivio
– aprire in preview un file presente in un archivio
– estrarre il conteuto di un arichivio compresso

Ecco il link: http://apps.microsoft.com/webpdp/it-IT/app/metrozipfiles/4c7f9047-e2f4-4a4e-83ae-668ba65ae8f1

Maurizio

Single && Double – come utilizzare il .NaN????

Ciao a tutti,
Oggi parleremo delle strutture Single && Double, visto le richieste avute in questo periodo da parte di amici e colleghi …
Le strutture Single e Double contengono al suo interno delle proprietà chiamate:
PositiveInfinity
NegativeInfinity
NaN
utilizzate dal .NET Framework per rappresentare questi stessi valori.

Questi valori corrispondono a sequenze di bit, specifiche dello standard IEEE. IEEE Standard
Tuttavia, questi schemi di bit non sono univoci, quindi non è raccomandato utilizzare questi campi per le operazioni di confronto.
Prendiamo per esempio, che la variabile d è un NaN. (ricordo che un NaN si può diciamo “generare” sommando un PositivoInfinito su un NegativoInfinito).
Il controllo comparativo:

 d == Double.NaN 

restituisce false se lo schema di bit di d non corrisponde esattamente con quella di Double.NaN.
Per conoscere lo “status” di un particolare numero, è raccomandato l’utilizzo dei metodi statici messi a disposizione dal .NET Framework:

 Double.IsNaN (d)

Maurizio