Roberto Brunetti Mobile Blog

Bridging the Mobility Gap !

Recent Posts

Tags

Community

Email Notifications

.NET Blogs

Archives

June 2010 - Posts

InTheHand 4.2

Rilasciata una nuova versione: http://inthehand.com/content/mobile.aspx

WP7: Formati Audio/Video supportati

Audio

WAV

WAV

Audio

MP3

MP3

Audio

WMA Standard v9

ASF (WMA)

Audio

AAC-LC (Low Complexity)

3GP, 3G2, MP4, M4A

Audio

HE-AAC v1 (AAC+)

3GP, 3G2, MP4, M4A

Audio

HE-AAC v2 (eAAC+)

3GP, 3G2, MP4, M4A

Audio

Adaptive Multi-Rate Narrow Band (AMR-NB)

3GP, 3G2, MP4

Audio

Adaptive Multi-Rate Wide Band (AMR-WB)

3GP, 3G2, MP4

Video

WMV (VC-1) - Simple Profile

ASF (WMV)

Video

WMV (VC-1) - Main Profile

ASF (WMV)

Video

WMV (VC-1) - Advanced Profile

ASF (WMV)

Video

MPEG-4 Part 2 - Simple Profile

3GP, 3G2, MP4, AVI

Video

MPEG-4 Part 10 (MPEG-4 AVC, H.264) - Baseline Profile

3GP, 3G2, MP4, M4V

Video

MPEG-4 Part 10 (MPEG-4 AVC, H.264) - Main Profile

3GP, 3G2, MP4, M4V

Video

MPEG-4 Part 10 (MPEG-4 AVC, H.264) - High Profile

3GP, 3G2, MP4, M4V

Video

H.263

3GP, 3G2

Images

JPEG

JPG

Images

PNG

PNG

Images

GIF (both GIF87a and GIF89a)

GIF

SQL Azure news

Riporto as is:

Today, the following updates are broadly available:

1. SQL Azure Database size - We are expanding SQL Azure to support up to 50GB per database. With this update, SQL Azure now supports up to 5GB in the Web Edition, and up to 50GB in the Business Edition. SQL Azure can scale to multi-terabytes (across db instances) and is built from the ground up for scaling-out, high performance and high availability.

2. Spatial data support—Geography and Geometry types and query support in T-SQL are now supported in SQL Azure. Customers wanting to run location aware applications can now do so on the Windows Azure Platform.

3. Public preview of SQL Azure Data Sync Service (released at TechEd)— Expanding on the current ability to sync between SQL Server and SQL Azure, now you can also distribute and sync data across multiple datacenters and multiple SQL Azure instances around the globe.

4. Office 2010 Support for SQL Azure (released at TechEd) – This new feature offers native data connectivity support from Microsoft Office (e.g. Access, Excel and PowerPivot) to SQL Azure databases, providing more choices to connect rich Office Business Applications with databases, running either on-premises or in the cloud.

Articolo Windows Phone 7

E’ uscito un nostro articolo introduttivo sui passi da seguire per scrivere il primo “hello world” con Windows Phone 7, su HTML.it

http://aspnet.html.it/articoli/leggi/3419/sviluppare-per-windows-phone-7-la-prima-applicazione/

Domani mattina, durante Microsoft Remix, uscirà un nostro secondo articolo sulla piattaforma.

Stay tuned

Visual Studio 2010 for Windows Phone Menù

Visual Studio 2010 Express for Windows Phone ha serie di menù che non vengono mostrati appena istallato il prodotto. Ad esempio il menù View si presenta così

image

Anche il menù Debug si presenta molto “triste” :-)

image

Nei Settings è però possibile impostare Expert Settings per visualizzare i menù “scomparsi”

image

Occorre qualche secondo e, ecco i veri menù:

image

Per tutto quello che non c’è, si può sempre usare Visual Studio 2010 se già installato sulla macchina. Ad esempio se abbiamo la versione Ultimate e vogliamo utilizzare l’architecture explorer o il layer diagra, nessun problema: basta aprire la solution con Visual Studio 2010 e utilizzare gli strumenti.

Stesso discorso per quanto riguarda l’integrazione con SCC: la versione Phone Express non supporta l’integrazione con un meccanismo di controllo sorgenti, ne tantomeno non presenta il Team Explorer di Team System; anche in questo caso è sufficiente aprire la solution sia con VS 2010 che con la versione Phone Express e eseguire le operazioni verso il controllo sorgenti da VS 2010, lavorando poi con la versione Express Phone per lo sviluppo.

Molte delle operazioni di sviluppo possono essere effettuate direttamente da VS 2010.

Hope useful

Windows Phone 7 Trial Application

Fra i vari servizi esposti dal Markeplace (certification, advertising, cross-selling, etc.) esiste il “servizio” di prova di una applicazione.

L’idea è molto semplice e nel contempo, molto potente.

1) Come sviluppatori indicheremo al Marketplace se vogliamo che gli utenti abbiamo la possibilità di scaricare una trial

2) La licenza trial non ha scadenza ma viene rimpiazzata dalla licenza “vera” se l’utente acquista l’applicazione

3) Il modo con cui gestire la licenza trial è a nostra cura: la piattaforma mette a disposizione un metodo IsTrial() che, semplicemente, restituisce true nel caso di versione di prova

Possiamo quindi eliminare funzionalità oppure oscurarne o limitarne alcune, oppure possiamo optare per dare le funzionalità complete per un certo numero di volte o tempo. Siamo nel codice, quindi possiamo fare come preferiamo4

4) Se lo desideriamo possiamo mettere un pulsate “Buy now” sull’applicazione e alla relativa pressione da parte dell’utente possiamo invocare il Launcher denominato MarketPlaceLauncher (tramite il metodo Show come per tutti i launcher) per trasferire il controllo alla pagina dei dettagli del marketplace (il telefono la espone nativamente). L

5) Il processo di “Buy now” è completamente trasparente per l’applicazione che si troverà “IsTrial()  = false” al termine dell’applicazione.

Windows Phone 7 SMS

Chiudiamo questa mini-serie sull’interazione fra codice e API applicative del device/emulatore con un esempio semplicissimo sull’emulatore.

Direi che dopo i post precedenti non c’è bisogno di ulteriori spiegazioni sul flusso che stiamo creando:

image

Il tasto SMSCompose utilizza le API per comporre un SMS:

Questo il codice autoesplicativo:

image

 

Alla pressione del pulsante il risultato è il seguente:

image

Si può continuare la conversazione inserendo altri messaggi dopo il Send

image

Con il tasto Back si torna all’applicazione.

Windows Phone 7 Camera…from Code

Come abbiamo avuto modo di segnalare in altri blog e articoli precedenti, l’emulatore attuale non espone attraverso il menù start tutte le applicazioni che è in grado di supportare.

La fotocamera è una di queste applicazioni “nascoste”. Da codice possiamo però invocare le API della fotocamera per capire già oggi come si comporterà la nostra applicazione durante l’interazione con la fotocamera stessa.

Partiamo subito dall’esempio (che ho inserito nella sezione media di ThinkMobile.it) creando una nuova applicazione in cui inseriamo alcune semplici pulsanti per attivare la fotocamera

image 

Nel form, anzi nella page, ho inserito due pulsanti Camera e Choose con l’obiettivo, rispettivamente, di attivare la fotocarmera per scattare una foto e di scegliere una foto dagli album dell’utente. Una volta scattata o scelta la foto visualizziamo l’immagine stessa nell’immagine al centro della page.

In questo semplice esempio non ho utilizzato nessuna tecnica di allineamento dei controlli  gestione dell’orientamento; questo il codice:

image

Vediamo il codice del code behind introducendo il concetto di Task: le API espongono varie funzionalità sotto forma di task. Esiste ad esempio un Camera Capture Task implementato nell’omonima classe nell’assembly Microsoft.Phone.Task. La definizione della classe ci mostra i suo metodi pubblici:

image

Molto semplicemente, le immagini fotografate possono essere serializzate e deserializzate via Stream, e, tramite il metodo Show, attivare la fotocamera per scattare una foto.

Nel nostro esempio il codice è molto semplice e attiva la fotocamera (presente in versione simulata anche sull’emulatore)

Vediamo l’esempio: il codice del tasto button1 è il seguente

image

Facciamo F5 e vediamo cosa succede

Una volta scattata la foto, la page riceve la chiamata al metodo OnChooserReturn (il chooser è un concetto molto diffuso sul telefono e consiste nell’attivazione della maschera di scelta di elementi presenti sul mercato, contatti o email o foto come stiamo vedendo)

E’ possibile quindi effettuare l’override del metodo per recuperare il valore restituito dal chooser (nel nostro caso la Photo)

image

Il codice è autoesplicativo: si recupera l’EventArgs come TaskEventArgs<PhotoResult> e dopo il classico controllo sulla compatibilità sul tipo cerchiamo di capire se l’utente ha scelto o ha fatto Cancel. Il risultato di TaskEventArgs<PhotoResult> ha una proprietà, fra le altre, ChosenPhoto che restituisce la photo sotto forma di classico System.IO.Stream.

Windows Phone 7 Email from code

Come abbiamo visto nell’ultimo post sulla fotocamera, l’emulatore attuale non espone attraverso il menù start tutte le applicazioni che è in grado di supportare. In questo mini-articolo vediamo come attivare la parte di “email” che comprende la composizione del testo, la scelta dei contatti e la possibilità di salvare gli indirizzi email.

Partiamo subito dall’esempio (che ho inserito nella sezione media di ThinkMobile.it) creando una nuova applicazione in cui inseriamo alcuni semplici pulsanti che ci serviranno per utilizzare le API dietro le quinte:

image

Il primo pulsante utilizzerà l’indirizzo indicato nel textbox per comporre una email.

Questo il codice XAML che ci ricorda come non sia importante nel nostro caso l’impaginazione :-)

image

Vediamo il codice, e il risultato del primo pulsante:

image

Il codice crea una classe EmailComposeTask che consente di attivare appunto l’attività di scrittura di una mail.

Stiamo usando tutte le proprietà che la classe espone e direi che non ci sono problemi di interpretazione del significato:

image

Attivando il codice otteniamo questo risultato:

image

Giustamente, prima di poter inviare una mail dobbiamo impostare un account. Impostato l’account otteniamo il risultato che ci eravamo prefissi.

Proviamo a scegliere il seocondo pulsante vedendo prima il codice relativo:

image

Anche in questo caso il risultato è quello che ci aspettiamo (la prima volta avremmo non avremmo contatti da cui scegliere)

 

image

Visto che il telefono simulato non espone una interfaccia per la gestione dei contatti, aggiriamo il problema invocando da codice il task di salvataggio di un indirizzo email…questa operazioni consente di arrivare dove vogliamo arrivare. Ecco il codice

image

Eseguiamo il codice e…sopresa…ecco la maschera di gestione dei contatti:

image

e premendo il tasto Add

image

Fatto il primo Accept ecco altre informazioni. Ho riempito il nome/cognome e azienda:

image

Posso aggiungere una foto (si veda il post relativo)

image

Una volta completato l’aggiunta del contatto si presenta la maschera seguente:

image

A questo punto possiamo riprovare il secondo pulsante e scegliere il contatto appena aggiunto:

image

Scelto il contatto la page si presenta così

image

Il risultato di una task, in questo caso la scelta dell’email di un contatto, ci viene restituito attraverso un metodo della pagina stessa denominato OnChooserReturn. Ecco il codice che testa il tipo di risultato e ne recupera il risultato stesso nel caso in cui l’utente abbia scelto un contatto (ovviamente se preme annulla o back non dovrebbe recuperare nessun valore)

image

Quando si attivano dei Task, il risultato (in questo caso la fine della composizione della mail) ci viene restituito

Windows Azure SDK 1.2

E’ stato rilasciato sia l’SDK sia gli strumenti per VS 2008/2010.

Queste l'e novità prese direttamente da MSDN:

New for version 1.2:

  • Visual Studio 2010 RTM Support: Full support for Visual Studio 2010 RTM.
  • .NET 4 support: Choose to build services targeting either the .NET 3.5 or .NET 4 framework.
  • Cloud storage explorer: Displays a read-only view of Windows Azure tables and blob containers through Server Explorer.
  • Integrated deployment: Deploy services directly from Visual Studio by selecting ‘Publish’ from Solution Explorer.
  • Service monitoring: Keep track of the state of your services through the ‘compute’ node in Server Explorer.
  • IntelliTrace support for services running in the cloud: Adds support for debugging services in the cloud by using the Visual Studio 2010 IntelliTrace feature. This is enabled by using the deployment feature, and logs are retrieved through Server Explorer.

Windows Azure Tools for Microsoft Visual Studio includes:
  • C# and VB Project creation support for creating a Windows Azure Cloud Service solution with multiple roles.
  • Tools to add and remove roles from the Cloud Service.
  • Tools to configure each Role.
  • Integrated local development via the Development Fabric and Development Storage services.
  • Running and Debugging a Cloud Service in the Development Fabric.
  • Browsing cloud storage through the Server Explorer
  • Building and packaging of Cloud Service Packages.
  • Deploying to the Windows Azure.
  • Monitoring the state of your services through the Server Explorer.
  • Debugging in the cloud by retrieving IntelliTrace logs through the Server Explorer.

E’ molto interessante l’integrazione con il Server Explorer che riduce la necessità di tenere sempre aperta la Windows Azure MMC (che resta comunque fondamentale per le Queue e per eseguire operazioni di test e pulizia) e l’integrazione con l’intellitrace: si possono recuperare i log dell’intellitrace direttamente dal Server Explorer e riutilizzarli nell’Intellitrace per riprodurre il flusso eseguito.

Molto comoda l’annunciata funzione di publish diretto.

image

Molto importante la possibilità di sviluppare in .NET 4.0 (penso soprattutto a progetti che usano Entity Framework 4 o Workflow 4); anche se per adesso non si può pubblicare un servizio .NET 4.0, lo si può iniziare a sviluppare e testare in locale….in ogni caso non mancherà molto…immagino.

Windows Azure OS Upgrade

Oggi mi sono collegato al portale di Azure per dismettere il sito della nostra conferenza ospitato da gennaio anche su Azure. (N.B. il sito resta sull’url “annuale” http://devcon2010.devleap.com).

La maschera di gestione si è presentata così:

image

Anche Windows Azure, come qualunque sistema operativo (o software) è soggetto ad aggiornamenti: da un mesetto circa uscita ad esempio una nuova versione del sistema operativo che rende obsoleta la versione precedente. Occorre quindi configurare la nostra applicazione di conseguenza.

Come si può notare è apparso un nuovo pulsante “OS Settings”: tale opzione consente di specificare la versione del sistema operativo che vogliamo utilizzare.

E’ possibile scegliere la versione del sistema operativo su cui “mettere” il servizio oppure indicare “Automatic” per rendere appunto automatico l’aggiornamento del nostro servizio all’uscita di una nuova versione del sistema operativo.

image

Anche il pulsante “upgrade”, che consente da sempre di eseguire da sempre l’upgrade del nostro servizio o di un role del nostro servizio, consente anche di specificare le impostazioni che abbiamo appena visto.

Occorre prestare attenzione solamente alla versione dell’SDK utilizzato dal servizio rispetto alla versione del sistema operativo: ques't’ultimo infatti espone nativamente le API che servizio stesso andrà ad utilizzare. Ad oggi è possibile utilizzare l’SDK 1.0, uscito a Novembre 2009, su qualunque versione del sistema operativo (1.0, 1.1, 1.2), mentre è possibilie utilizzare l’SDK 1.1 (uscito a febbraio 2010) sul sistema operativo versione 1.1 e 1.2.

Infine, è possibile specificare la versione all’interno del “Model” ovvero del modello che descrive il nostro servizio alla Fabric di Windows Azure. La versione si specifica nel seguente formato:

WA-GUEST-OS-M.m_YYYYMM-nn

dove

1) WA-GUEST-OS è un stringa fissa

2) M.m si riferisce alla versione Major e minor (ad esempio 1.1 o 1.2)

3) YYYYMM fanno riferimento all’anno e al mese di uscita

4) nn infine è un numero progressivo per identificare eventuali versioni uscite nello stesso mese.

Ogni nuovo deploy viene invece installato sulla versione corrente del sistema operativo: se non viene specificata nessun valore nel file .cscfg, non viene usato nessun attributo di configurazione e la versione utilizzata viene considerata “undefined”.

Ogni cambio di versione del sistema operativo richiede un nuovo deploy e di conseguenza i nostri servizi ricevono uno Stop e poi uno Start successivo (che corrispondono a chiamate ai metodi dei RoleEntryPoint).

Al termine il servizio è stato portato su macchine OS 1.3 (201004-01) ovvero sulla verisone 1.3 di Aprile 2010.

image

Windows Phone 7 Input Scope

Windows Mobile, iPhone e Android ci hanno abituato a semplificare la vita all’utente durante la digitazione di informazioni. Da sempre, su un device mobile occorre facilitare l’input all’utente agendo su vari fronti.

Su Windows Phone 7 è possibile agire in prima battuta sulla attached property denominata InputScope.

L’idea è molto semplice e molto efficace allo stesso tempo: il tastierino appare di default in ogni campo TextBox, ma lo sviluppatore della user interface può suggerire il tipo di dato che l’utente inserirà in modo da adattare il SIP (Software Input Panel == tastierino) in base all’informazione stessa.

Ad esempio se l’utente deve digitare un URL, lo possiamo aiutare indicando al campo textbox che il suo input scope è un indirizzo URL. In questo modo il SIP predispone un pulsante “.com” e un pulsante “http” per semplificare la digitazione all’utente.

L’elenco dei valori possibili è definito nell’enum InputScopeNameValue definito nel namespace System.Windows.Input e prevede i seguenti valori:

image

image

Visual Studio 2010 Express for Windows Phone propone l’intellisense direttamente nel designer visuale e nel designer XAML.

Ad esempio la seguente Page:

image

viene definita con lo XAML seguente (ho tagliato le info non significative)

image

Come si nota ogni TextBox riceve l’attached property InputScope da valorizzare con un InputScope il cui InputScopeName abbia la proprietà NameValue impostata al valore dell’enum.

In sequenza le immagini di ogni InputScope

image

image

image

image

Windows Phone 7 sul Desktop

Non hai ancora un device ? L’emulatore ancora ha poche funzionalità ? Vuoi prendere la mano con Windows Phone 7 e abituarti alla user interface ?

Nessun problema….sembra la pubblicità di un qualcosa….è in effetti lo è: RainMeter, famoso prodotto per la personalizzazione del desktop tramite widget, ha reso disponibile uno skin Windows Phone 7.

Questo il mio desktop di stamani:

image

E’ ovviamente tutto personalizzabile con le stesse metodologie/meccanismi di RainMeter.

Download da http://www.rainmeter.net. La versione 1.2 Beta rev 393 o successiva; dopo una decina di giorni di utilizzo mi sembra molto più stabile della 1.1 finale.