di: Roberto Brunetti 30 Giugno 2010
Una libreria consente la gestione della parte "Media & Playback": è possibile attivare la fotocamera da codice, sia per scattare una foto che iniziare una ripresa video impostando il livello di qualità così come altre caratteristiche del "media" da gestire.
Queste API consentono di svelare il comportamento dell'applicazione rispetto alla fotocamera anche sull'emulatore: l'emulatore infatti non ha un menu per attivare direttamente la fotocamera, ma consente di scattare una foto (ovviamente di test) se attivato da codice.
Questo argomento introduce un concetto importante: Launcher & Chooser; con questi due termini si identificano due modalità con cui l'applicazione può interagire con API presenti sull'ambiente:
| Tipo di interazione | Descrizione |
|---|---|
| Launcher | consente di attivare e demandare il controllo ad un componente esterno |
| Chooser | facciamo riferimento a quanto conosciamo oggi come dialog, ovvero una interfaccia visiva che l'applicazione richiama attivando un componente di sistema. Il compito del componente di sistema è quello di restituire un valore all'applicazione sia esso un contatto o un messaggio oppure un elemento dell'album fotografico come nel nostro caso. |
CameraCaptureTask è un launcher che consente di attivare la fotocamera per scattare una foto; il codice di attivazione è molto semplice:
CameraCaptureTask task = new CameraCaptureTask(); task.Show();
PhotoChooserTask è un chooser che consente di scegliere una foto già presente sul device o sulla scheda di memoria.
PhotoChooserTask task = new PhotoChooserTask(); task.Show();
I chooser restituiscono il controllo all'applicazione tramite un metodo della Page che ha attivato il chooser stesso. Ad esempio, nel codice seguente recuperiamo la foto scelta dall'utente e, dopo il classico controllo di sicurezza e il controllo sulla scelta del pulsante "ok" da parte dell'utente, la assegniamo ad un controllo image definita nel codice XAML:
public override void OnChooserReturn(Object sender, EventArgs e)
{
TaskEventArgs<PhotoResult> result = e as TaskEventArgs<PhotoResult>;
if (result != null)
{
if (result.TaskResult == TaskResult.OK)
{
BitmapImage bmp = new BitmapImage();
bmp.SetSource(result.Result.ChosenPhoto);
image1.Source = bmp;
}
}
base.OnChooserReturn(sender, e);
}
Da notare, come sia possibile debuggare il codice al rientro sull'applicazione.
Figura 1. Debuggare il codice per Windows Phone 7
Analizzando con Reflector le librerie disponibili nella April CTP Refresh disponibile ad oggi, sveliamo i seguenti chooser:
Figura 2. Chooser attivi nel telefono
L'interfaccia IChooser deriva a sua volta da ITask (da qui il suffisso Task che abbiamo visto nelle classi del codice precedente); tramite questa interfaccia vengono definiti altri componenti per l'interazione con il device, componenti che sveliamo sempre con Reflector:
Figura 3. Classi che implementano l'interfaccia ITask
I componenti che implementano ITask o IChooser sono definiti nell'assembly Microsoft.Phone.Tasks nell'omonimo namespace. Da notare come alcuni launcher abbiamo la classe corrispondente con il suffisso Launcher mentre altri abbiamo il suffisso Task.
Guida Windows Azure Code SnippetsLe migliori pratiche per far girare le applicazioni "in the cloud",... |
Guida ASP.NET MVC Best PracticesUn workflow dettagliato e ricco di suggerimenti pratici per... |
Guida ASP.NET Starter KitUn modo semplice per imparare ad utilizzare le tecnologie Microsoft... |
Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.
Iscriviti alla newsletter
|
|
Corso Progettazione database11 Maggio 2012 a Milano |
|
|
Amministratore di Reti Windows Server 200811 Giugno 2012 a Milano |
|
Nessun corso previsto |