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.
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.
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.
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.
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.
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.
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:
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:
GetPicture ()
metodo restituisce il flusso dell'immagine originale.GetThumbnail ()
metodo restituisce il flusso della miniatura, che è una versione a bassa risoluzione dell'immagine originale.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);
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:
SongMetadata
classe. È un parametro opzionale; se passi nullo
, Windows Phone estrae automaticamente le informazioni ID3 dal file.SaveSongOperation
oggetto, che indica al catalogo multimediale se il file deve essere copiato (CopyToLibrary
) o spostati (MoveToLibrary
) in modo che venga eliminato dalla memoria.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;
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;
Esistono altri modi per integrare la nostra applicazione con l'hub fotografico. Funzionano tutti allo stesso modo:
Uri
che devi intercettare con a UriMapper
classe.FileId
parametro.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.
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.
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:
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.
In questo tutorial, abbiamo imparato molti modi per creare una fantastica applicazione multimediale per Windows Phone:
Questo tutorial rappresenta un capitolo di Windows Phone 8 in modo succinto, un eBook gratuito dal team di Syncfusion.