Windows Phone 8 succintamente applicazioni multimediali

In questo tutorial, ci concentreremo su come creare un'applicazione multimediale per Windows Phone sfruttando la fotocamera del dispositivo, interagendo con la libreria multimediale ed esplorando le possibilità di Photos Hub.

Usando la fotocamera

La fotocamera è una delle funzionalità più importanti dei dispositivi Windows Phone, in particolare grazie a Nokia, che ha creato alcuni dei migliori telefoni con fotocamera disponibili sul mercato.

Come sviluppatori, siamo in grado di integrare l'esperienza della fotocamera nella nostra applicazione in modo che gli utenti possano scattare foto e modificarle direttamente all'interno dell'applicazione. Inoltre, con la funzione App Lens di cui discuteremo più avanti, è ancora più semplice creare applicazioni in grado di sostituire l'esperienza con la fotocamera nativa.

Nota: per interagire con la fotocamera, è necessario abilitare il ID_CAP_IS_CAMERA capacità nel file manifest.

Il primo passo è creare un'area nella pagina in cui possiamo visualizzare l'immagine registrata dalla fotocamera. Noi useremo VideoBrush, che è uno dei pennelli XAML nativi che è in grado di incorporare un video. Lo useremo come sfondo di a Tela controllo, come mostrato nel seguente esempio:

        

Notare il CompositeTransform che è stato applicato; il suo scopo è quello di mantenere l'orientamento corretto del video, in base all'orientamento della fotocamera.

Scattare foto

Ora che abbiamo un posto dove visualizzare il live camera feed, possiamo usare le API che sono incluse nel Windows.Phone.Media.Capture namespace. In particolare, viene chiamata la classe disponibile per scattare foto PhotoCaptureDevice (più avanti vedremo un'altra classe per registrare video).

Il seguente codice è un'inizializzazione di esempio:

override async protetto OnNavigatedTo (NavigationEventArgs e) Risoluzione risoluzione = PhotoCaptureDevice.GetAvailableCaptureResolutions (CameraSensorLocation.Back) .First (); PhotoCaptureDevice camera = attendi PhotoCaptureDevice.OpenAsync (CameraSensorLocation.Back, risoluzione); video.SetSource (telecamera); previewTransform.Rotation = camera.SensorRotationInDegrees; 

Prima di inizializzare il feed dal vivo, dobbiamo fare due scelte: quale telecamera usare e quale delle risoluzioni disponibili vogliamo usare.

Raggiungiamo questo chiamando il GetAvailableCaptureResolutions () metodo sul PhotoCaptureDevice classe, passando come parametro a CameraSensorLocation oggetto che rappresenta la fotocamera che useremo. Il metodo restituirà una raccolta delle risoluzioni supportate, che sono identificate dal Taglia classe.

Suggerimento: è possibile utilizzare il codice precedente in modo sicuro poiché ogni dispositivo Windows Phone dispone di una fotocamera posteriore. Se invece vogliamo interagire con la fotocamera anteriore, è meglio verificare se è disponibile per prima, poiché non tutti i dispositivi Windows Phone ne hanno uno. Per fare questo, puoi usare il AvailableSensorLocation proprietà del PhotoCaptureDevice classe, che è una raccolta di tutte le fotocamere supportate.

Una volta che abbiamo deciso quale risoluzione utilizzare, possiamo passarla come parametro (insieme di nuovo con la telecamera selezionata) al OpenAsync () metodo del PhotoCaptureDevice classe. Restituirà a PhotoCaptureDevice oggetto che contiene il feed dal vivo; dobbiamo semplicemente passarlo al SetSource () metodo del VideoBrush

Come già accennato, gestiamo l'orientamento della fotocamera usando la trasformazione che abbiamo applicato al VideoBrush: abbiamo impostato il Rotazione usando il SensorRotationInDegrees proprietà che contiene la rotazione dell'angolo corrente.

Nota: potresti ricevere un errore quando provi a passare a PhotoCaptureDevice oggetto come parametro del SetSource () metodo del VideoBrush. Se è così, dovrai aggiungere il Microsoft.Devices spazio dei nomi per la tua classe, dal momento che contiene un metodo di estensione per il SetSource () metodo che supporta il PhotoCaptureDevice classe.

Ora l'applicazione mostrerà semplicemente il feed live della videocamera sullo schermo. Il prossimo passo è quello di scattare la foto.

La tecnica utilizzata dall'API è creare una sequenza di frame e salvarli come stream. Sfortunatamente, c'è un limite nell'SDK corrente: potrai scattare solo una foto alla volta, quindi potrai utilizzare solo le sequenze create da un fotogramma.

private async void OnTakePhotoClicked (mittente dell'oggetto, RoutedEventArgs e) CameraCaptureSequence cameraCaptureSequence = camera.CreateCaptureSequence (1); MemoryStream stream = new MemoryStream (); cameraCaptureSequence.Frames [0] .CaptureStream = stream.AsOutputStream (); attende camera.PrepareCaptureSequenceAsync (cameraCaptureSequence); attendi cameraCaptureSequence.StartCaptureAsync (); stream.Seek (0, SeekOrigin.Begin); Libreria MediaLibrary = new MediaLibrary (); library.SavePictureToCameraRoll ("picture1.jpg", stream); 

Il processo inizia con a CameraCaptureSequence oggetto, che rappresenta il flusso di acquisizione. A causa della limitazione del singolo picutre precedentemente menzionata, sarai in grado di chiamare il CreateCaptureSequence () metodo del PhotoCaptureDevice classe solo passando 1 come il suo parametro.

Per lo stesso motivo, lavoreremo solo con il primo fotogramma della sequenza che è memorizzato all'interno di montatura collezione. Il CaptureStream la proprietà del frame deve essere impostata con lo stream che useremo per memorizzare l'immagine acquisita. Nell'esempio precedente, usiamo a MemoryStream per memorizzare la foto in memoria. In questo modo, possiamo salvarlo in un secondo momento nell'hub di foto dell'utente (in particolare, nell'album "Rullino foto").

Nota: per interagire con MediaLibrary classe devi abilitare il ID_CAP_MEDIALIB_PHOTO capacità nel file manifest.

Puoi anche personalizzare molte impostazioni della videocamera chiamando il SetProperty () metodo sul PhotoCaptureDevice oggetto che richiede due parametri: la proprietà da impostare e il valore da assegnare. Le proprietà disponibili sono definite da due enumeratori: KnownCameraGeneralProperties, che contiene le proprietà generali della fotocamera e KnownCameraPhotoProperties, che contiene le proprietà specifiche della foto.

Alcune proprietà sono di sola lettura, quindi l'unica operazione che puoi eseguire è ottenere i loro valori usando il comando GetProperty () metodo.

Nei seguenti esempi, usiamo il SetProperty () metodo per impostare la modalità flash e GetProperty () per ottenere le informazioni se la regione corrente obbliga i telefoni a riprodurre un suono quando scattano una foto.

private void OnSetPropertiesClicked (mittente dell'oggetto, RoutedEventArgs e) camera.SetProperty (KnownCameraPhotoProperties.FlashMode, FlashMode.RedEyeReduction); bool isShutterSoundRequired = (bool) camera.GetProperty (KnownCameraGeneralProperties.IsShutterSoundRequiredForRegion); 

Si noti che il GetProperty () il metodo restituisce sempre un oggetto generico, quindi dovrai eseguirne il cast manualmente in base alle proprietà che stai interrogando.

È possibile visualizzare un elenco di tutte le proprietà disponibili nella documentazione MSDN.

Utilizzo della chiave hardware della fotocamera

In genere, i dispositivi Windows Phone dispongono di un pulsante dedicato per la fotocamera, che può essere utilizzato sia per impostare la messa a fuoco premendo a metà, sia per scattare la foto premendola completamente. Puoi anche usare questo pulsante nelle tue applicazioni iscrivendoti a tre eventi che sono esposti da CameraButtons classe statica:

  • ShutterKeyPressed viene attivato quando si preme il pulsante.
  • ShutterKeyReleased viene attivato quando il pulsante viene rilasciato.
  • ShutterKeyHalfPressed viene attivato quando il pulsante viene premuto a metà.

Nel seguente esempio, ci iscriviamo al ShutterKeyReleased evento per fare una foto e il ShutterKeyHalfPressed evento per utilizzare la funzione di messa a fuoco automatica.

public Camera () InitializeComponent (); CameraButtons.ShutterKeyReleased + = CameraButtons_ShutterKeyReleased; CameraButtons.ShutterKeyHalfPressed + = CameraButtons_ShutterKeyHalfPressed;  async void CameraButtons_ShutterKeyHalfPressed (oggetto mittente, EventArgs e) attendi camera.FocusAsync ();  void CameraButtons_ShutterKeyReleased (oggetto mittente, EventArgs e) // Scatta la foto. 

Registrazione di un video

Il processo per registrare un video è simile a quello utilizzato per scattare una foto. In questo caso, useremo il AudioVideoCaptureDevice classe invece del PhotoCaptureDevice classe. Come puoi vedere nel seguente esempio, la procedura di inizializzazione è la stessa: decidiamo quale risoluzione e telecamera vogliamo usare e mostriamo il feed live restituito usando un VideoBrush.

Nota: per registrare video, devi anche abilitare il ID_CAP_MICROPHONE capacità nel file manifest.

override async protetto OnNavigatedTo (NavigationEventArgs e) Risoluzione risoluzione = AudioVideoCaptureDevice.GetAvailableCaptureResolutions (CameraSensorLocation.Back) .First (); videoDevice = Attendi AudioVideoCaptureDevice.OpenAsync (CameraSensorLocation.Back, risoluzione); video.SetSource (videoDevice); previewTransform.Rotation = videoDevice.SensorRotationInDegrees; 

La registrazione di un video è ancora più semplice dal momento che AudioVideoCaptureDevice la classe espone il StartRecordingToStreamAsync () metodo, che richiede semplicemente di specificare dove salvare i dati registrati. Dato che si tratta di un video, avrai anche bisogno di un modo per interrompere la registrazione; questo è lo scopo del StopRecordingAsync () metodo.

Nell'esempio seguente, la registrazione viene archiviata in un file creato nella memoria locale:

private AudioVideoCaptureDevice videoDevice; stream privato IRandomAccessStream; file StorageFile privato; public VideoRecording () InitializeComponent ();  private async void OnRecordVideoClicked (mittente dell'oggetto, RoutedEventArgs e) file = attende ApplicationData.Current.LocalFolder.CreateFileAsync ("video.wmv", CreationCollisionOption.ReplaceExisting); stream = attendi file.OpenAsync (FileAccessMode.ReadWrite); videoDevice.StartRecordingToStreamAsync (stream);  private async void OnStopRecordingClicked (mittente dell'oggetto, RoutedEventArgs e) attendi videoDevice.StopRecordingAsync (); attendere stream.FlushAsync (); 

Puoi facilmente testare il risultato dell'operazione usando il MediaPlayerLauncher classe per suonare la registrazione:

private void OnPlayVideoClicked (mittente dell'oggetto, RoutedEventArgs e) MediaPlayerLauncher launcher = new MediaPlayerLauncher Media = new Uri (file.Path, UriKind.Relative); launcher.Show (); 

L'SDK offre un elenco specifico di impostazioni personalizzabili collegate alla registrazione video. Sono disponibili nel KnownCameraAudioVideoProperties enumeratore.

Interagire con la libreria multimediale

Il framework offre una classe chiamata MediaLibrary, che può essere utilizzato per interagire con la libreria multimediale dell'utente (foto, musica, ecc.). Vediamo come usarlo per gestire gli scenari più comuni.

Nota: nella versione attuale, non c'è modo di interagire con la libreria per salvare nuovi video nel Rullino fotografico, né per ottenere l'accesso al flusso di video esistenti.

Immagini

Il MediaLibrary la classe può essere utilizzata per accedere alle immagini memorizzate nell'hub di immagini, grazie a Immagini collezione. È una collezione di Immagine oggetti, dove ognuno rappresenta un'immagine memorizzata nell'hub di foto.

Nota: è necessario abilitare il ID_CAP_MEDIALIB_PHOTO funzionalità nel file manifest per ottenere l'accesso alle immagini memorizzate nell'hub di immagini.

Il Immagini la collezione concede l'accesso ai seguenti album:

  • Rullino fotografico
  • Immagini salvate
  • Screenshots

Non è possibile accedere a tutti gli altri album visualizzati nel People Hub che provengono da servizi remoti come SkyDrive o Facebook MediaLibrary classe.

Suggerimento: The MediaLibrary classe espone una collezione chiamata SavedPictures, che contiene solo le immagini memorizzate nell'album Immagini salvate.

Ogni Immagine oggetto offre alcune proprietà per ottenere l'accesso alle informazioni di base, come Nome, Larghezza, e Altezza. Una proprietà molto importante è Album, che contiene il riferimento dell'album in cui è memorizzata l'immagine. Inoltre, sarai in grado di accedere a diversi flussi nel caso in cui desideri manipolare l'immagine o visualizzarla nella tua applicazione:

  • Il GetPicture () metodo restituisce il flusso dell'immagine originale.
  • Il GetThumbnail () metodo restituisce il flusso della miniatura, che è una versione a bassa risoluzione dell'immagine originale.
  • Se aggiungi il PhoneExtensions spazio dei nomi alla tua classe, sarai in grado di utilizzare il GetPreviewImage () metodo, che restituisce un'immagine di anteprima. La sua risoluzione e dimensione sono tra l'immagine originale e la miniatura.

Nel seguente esempio, generiamo la miniatura della prima immagine disponibile nel Rullino foto e la mostriamo usando un Immagine controllo:

private void OnSetPhotoClicked (mittente dell'oggetto, RoutedEventArgs e) Libreria MediaLibrary = new MediaLibrary (); Picture picture = library.Pictures.FirstOrDefault (x => x.Album.Name == "Rullino foto"); if (picture! = null) BitmapImage image = new BitmapImage (); image.SetSource (picture.GetThumbnail ()); Thumbnail.Source = image; 

Suggerimento: per interagire con MediaLibrary class usando l'emulatore, dovrai aprire Photos Hub almeno una volta; altrimenti otterrai una raccolta vuota di immagini quando esegui una query Immagini proprietà.

Con il MediaLibrary classe, sarai anche in grado di fare il contrario: scatta una foto nella tua applicazione e salvala nell'hub di People. Abbiamo già visto un esempio quando abbiamo parlato dell'integrazione della videocamera nella nostra applicazione; possiamo salvare l'immagine nel Rullino foto (usando il SavePictureToCameraRoll () metodo) o nell'album Immagini salvate (usando il Salva immagine() metodo). In entrambi i casi, i parametri richiesti sono il nome dell'immagine e il suo flusso.

Nel seguente esempio, scarichiamo un'immagine da Internet e la salviamo nell'album Immagini salvate:

private async void OnDownloadPhotoClicked (mittente dell'oggetto, RoutedEventArgs e) HttpClient client = new HttpClient (); Stream stream = attendi client.GetStreamAsync ("http://www.syncfusion.com/Content/en-US/Home/Images/syncfusion-logo.png"); Libreria MediaLibrary = new MediaLibrary (); library.SavePicture ("logo.jpg", stream); 

Musica

Il MediaLibrary La classe offre molte opzioni per accedere alla musica, ma ci sono alcune limitazioni che non sono presenti quando si lavora con le immagini. 

Nota: è necessario abilitare il ID_CAP_MEDIALIB_AUDIO funzionalità nel file manifest per ottenere l'accesso alle immagini memorizzate nell'hub di immagini. 

Le seguenti collezioni sono esposte dal MediaLibrary classe per l'accesso alla musica:

  • Album per accedere agli album musicali.
  • Canzoni per accedere a tutte le canzoni disponibili.
  • generi per accedere ai brani raggruppati per genere.
  • playlist per accedere alle playlist.

Ogni canzone è identificata dal Canzone classe, che contiene tutte le informazioni comuni su una traccia musicale presa direttamente dal tag ID3: Album, Artista, Titolo, Numero di spedizione, e così via.

Sfortunatamente, non c'è accesso allo stream di un brano, quindi l'unico modo per riprodurre le tracce è usando il Media Player classe, che fa parte del Microsoft.XNA.Framework.Media namespace. Questa classe espone molti metodi per interagire con le tracce. Il Giocare() il metodo accetta come parametro a Canzone oggetto, recuperato dal MediaLibrary.

Nel seguente esempio, riproduciamo la prima canzone disponibile nella libreria:

private void OnPlaySong (mittente dell'oggetto, RoutedEventArgs e) Libreria MediaLibrary = new MediaLibrary (); Song song = library.Songs.FirstOrDefault (); MediaPlayer.Play (canzone); 

Una delle nuove funzionalità introdotte in Windows Phone 8 consente di salvare una canzone memorizzata nell'archivio locale dell'applicazione nella libreria multimediale in modo che possa essere riprodotta dall'hub nativo di Music + Video. Ciò richiede il Microsoft.Xna.Framework.Media.PhoneExtensions spazio dei nomi da aggiungere alla tua classe.

private async void OnDownloadMusicClicked (mittente dell'oggetto, RoutedEventArgs e) Libreria MediaLibrary = new MediaLibrary (); SongMetadata metadata = new SongMetadata AlbumName = "Un afflusso di sangue alla testa", ArtistName = "Coldplay", Name = "Clocks"; library.SaveSong (nuovo Uri ("song.mp3", UriKind.RelativeOrAbsolute), metadati, SaveSongOperation.CopyToLibrary); 

Il SaveSong () il metodo richiede tre parametri, come mostrato nel campione precedente:

  • Il percorso della canzone da salvare. È un percorso relativo che punta alla memoria locale.
  • I metadati della canzone, che sono identificati dal SongMetadata classe. È un parametro opzionale; se passi nullo, Windows Phone estrae automaticamente le informazioni ID3 dal file.
  • UN SaveSongOperation oggetto, che indica al catalogo multimediale se il file deve essere copiato (CopyToLibrary) o spostati (MoveToLibrary) in modo che venga eliminato dalla memoria.

App Lens

Windows Phone 8 ha introdotto nuove funzionalità specifiche per le applicazioni fotografiche. Alcuni dei più interessanti sono chiamati app per obiettivi, che applicano diversi filtri ed effetti alle immagini. Windows Phone offre un modo per passare facilmente da una fotocamera all'altra per applicare i filtri al volo.

Le app Lens sono normali applicazioni Windows Phone che interagiscono con le API della fotocamera che abbiamo utilizzato all'inizio di questo articolo. La differenza è che un'app dell'obiettivo è visualizzata nel lenti sezione dell'app Fotocamera nativa; quando gli utenti premono il pulsante della fotocamera, viene visualizzata una vista speciale con tutte le app dell'obiettivo disponibili. In questo modo, possono facilmente passare a un'altra applicazione per scattare la foto.

L'integrazione con la vista obiettivi inizia dal file manifest, che deve essere modificato manualmente scegliendo il file Visualizza il codice opzione nel menu di scelta rapida. Il seguente codice deve essere aggiunto nel Estensione sezione:

  

Ogni app per obiettivi richiede un'icona specifica che viene visualizzata nella vista obiettivi. Le icone vengono automaticamente recuperate dal Risorse cartella basata su una convenzione di denominazione. Un'icona deve essere aggiunta per ogni risoluzione supportata usando le convenzioni nella seguente tabella:

Risoluzione

Dimensione dell'icona

Nome del file

480 × 800

173 × 173

Lens.Screen-WVGA.png

768 × 1280

277 × 277

Lens.Screen-WXGA.png

720 × 1280

259 × 259

Lens.Screen-720p.png

Il UriMapper la classe è necessaria per lavorare con le app per obiettivi. Di fatto, le app delle lenti vengono aperte utilizzando un URI speciale che deve essere intercettato e gestito. Il seguente codice è un esempio Uri:

/MainPage.xaml?Action=ViewfinderLaunch

Quando questo Uri viene intercettato, gli utenti devono essere reindirizzati alla pagina dell'applicazione che riprende l'immagine. Nel seguente esempio, puoi vedere a UriMapper implementazione che reindirizza gli utenti a una pagina chiamata Camera.xaml quando l'applicazione viene aperta dalla vista obiettivo.

public class MyUriMapper: UriMapperBase public override Uri MapUri (Uri uri) string tempUri = uri.ToString (); if (tempUri.Contains ("ViewfinderLaunch")) return new Uri ("/ Camera.xaml", UriKind.Relative);  else return uri; 

Supporto per la condivisione

Se hai sviluppato un'applicazione che supporta la condivisione di foto come un client di social network, puoi integrarla nel Condividere menu dell'Hub Foto. Gli utenti possono trovare questa opzione nella barra delle applicazioni nella pagina dei dettagli della foto.

Quando gli utenti scelgono questa opzione, Windows Phone visualizza un elenco di applicazioni registrate per supportare la condivisione. Possiamo aggiungere la nostra applicazione all'elenco semplicemente aggiungendo una nuova estensione nel file manifest, come abbiamo fatto per aggiungere il supporto dell'obiettivo.

Dobbiamo aggiungere manualmente la seguente dichiarazione nel file estensioni sezione:

  

Quando gli utenti scelgono la nostra applicazione dall'elenco, viene aperta con il seguente URI:

/MainPage.xaml?Action=ShareContent&FileId=%7B1ECC86A2-CDD7-494B-A9A8-DBD9B4C4AAC7%7D

Di nuovo, possiamo usare a UriMapper implementazione per reindirizzare gli utenti alla pagina della nostra applicazione che offre la funzione di condivisione. È anche importante portare il FiledId parametro in questa pagina; avremo bisogno di sapere quale foto è stata selezionata dall'utente.

Il seguente esempio mostra a UriMapper implementazione che sostituisce semplicemente il nome della pagina originale (MainPage.xaml) con il nome della pagina di destinazione (SharePage.xaml):

public class MyUriMapper: UriMapperBase public override Uri MapUri (Uri uri) string tempUri = uri.ToString (); stringa mappedUri; if ((tempUri.Contains ("SharePhotoContent")) && (tempUri.Contains ("FileId"))) // Reindirizza a PhotoShare.xaml. mappedUri = tempUri.Replace ("MainPage", "SharePage"); restituisce nuovo Uri (mappedUri, UriKind.Relative);  return uri; 

Dopo aver reindirizzato l'utente alla pagina di condivisione, possiamo usare un metodo chiamato GetPictureFromToken () esposto dal MediaLibrary classe. Accetta l'ID immagine univoco come parametro e restituisce un riferimento a Immagine oggetto che rappresenta l'immagine selezionata dall'utente.

L'ID immagine è il parametro chiamato FileId che abbiamo ricevuto nell'URI quando l'applicazione è stata aperta. Nel seguente esempio, puoi vedere come recuperiamo il parametro usando il OnNavigatedTo evento che viene attivato quando l'utente viene reindirizzato alla pagina di condivisione e lo utilizza per visualizzare l'immagine selezionata con un Immagine controllo.

protected override void OnNavigatedTo (NavigationEventArgs e) if (NavigationContext.QueryString.ContainsKey ("FileId")) string fileId = NavigationContext.QueryString ["FileId"]; Libreria MediaLibrary = new MediaLibrary (); Picture picture = library.GetPictureFromToken (fileId); BitmapImage image = new BitmapImage (); image.SetSource (picture.GetImage ()); ShareImage.Source = image; 

Altre caratteristiche di integrazione

Esistono altri modi per integrare la nostra applicazione con l'hub fotografico. Funzionano tutti allo stesso modo:

  • Una dichiarazione deve essere aggiunta al file manifest.
  • L'applicazione viene aperta utilizzando uno speciale Uri che devi intercettare con a UriMapper classe.
  • L'utente viene reindirizzato a una pagina dedicata in cui è possibile recuperare l'immagine selezionata utilizzando il FileId parametro.

Elencare l'applicazione come app fotografica

Questa è l'integrazione più semplice poiché mostra solo l'applicazione nella sezione App dell'Hub Foto. Per supportarlo, devi semplicemente aggiungere la seguente dichiarazione nel file manifest:

  

Nient'altro è necessario in quanto questo tipo di integrazione includerà semplicemente un collegamento rapido nell'hub di foto. L'applicazione verrà aperta normalmente, come se fosse stata aperta utilizzando l'icona dell'app principale.

Integrazione con l'opzione di modifica

Viene chiamata un'altra opzione disponibile nella barra delle applicazioni della pagina dei dettagli della foto modificare. Quando l'utente lo tocca, Windows Phone visualizza un elenco di applicazioni che supportano il fotoritocco. Dopo aver scelto uno, l'utente si aspetta di essere reindirizzato a una pagina dell'applicazione in cui è possibile modificare l'immagine selezionata.

La seguente dichiarazione dovrebbe essere aggiunta nel file manifest:

  

Quando questa funzione è abilitata, la tua applicazione verrà aperta con il seguente URI:

/MainPage.xaml?Action=EditPhotoContent&FileId=%7B1ECC86A2-CDD7-494B-A9A8-DBD9B4C4AAC7%7D

Questo è il Uri intercettare per reindirizzare gli utenti alla pagina corretta in cui sarete in grado di recuperare l'immagine selezionata usando il FileId parametro, come abbiamo fatto per la funzione di condivisione delle foto.

App Rich Media

Le app rich media sono applicazioni in grado di scattare foto e salvarle nella libreria dell'utente. Quando gli utenti aprono una di queste foto, vedranno:

  • testo sotto la foto con il messaggio "catturato da" seguito dal nome dell'app
  • una nuova opzione nella barra delle applicazioni chiamata "open in" seguita dal nome dell'app

Questo approccio è simile alle funzionalità di condivisione e modifica. La differenza è che l'integrazione di applicazioni multimediali è disponibile solo per le immagini scattate all'interno dell'applicazione, mentre le funzioni di modifica e condivisione sono disponibili per ogni foto, indipendentemente da come sono state scattate.

La seguente dichiarazione deve essere aggiunta nel manifest per abilitare l'integrazione di app Rich Media:

  

In questo scenario, l'applicazione viene aperta con il seguente URI:

/MainPage.xaml?Action=RichMediaEdit&FileId=%7B1ECC86A2-CDD7-494B-A9A8-DBD9B4C4AAC7%7D

Come puoi vedere, l'URI è sempre lo stesso; ciò che cambia è il valore del Azione parametro: in questo caso, RichMediaEdit.

Questo è l'URI che devi intercettare con il tuo UriMapper implementazione. Dovrai reindirizzare gli utenti a una pagina dell'applicazione in grado di gestire l'immagine selezionata.

Conclusione

In questo tutorial, abbiamo imparato molti modi per creare una fantastica applicazione multimediale per Windows Phone:

  • integrazione delle funzioni della fotocamera per scattare foto e registrare video
  • interagire con la libreria multimediale per ottenere l'accesso a immagini e audio
  • integrazione con l'esperienza della fotocamera nativa per offrire agli utenti l'accesso a funzionalità avanzate direttamente nell'hub di immagini

Questo tutorial rappresenta un capitolo di Windows Phone 8 in modo succinto, un eBook gratuito dal team di Syncfusion.