În acest tutorial, ne vom concentra pe modul de creare a unei aplicații multimedia pentru Windows Phone, profitând de camera aparatului, interacționând cu biblioteca media și explorând posibilitățile Hub-ului Photos.
Aparatul foto este una dintre cele mai importante caracteristici ale dispozitivelor Windows Phone, în special datorită Nokia, care a creat unele dintre cele mai bune telefoane cu cameră foto disponibile pe piață.
În calitate de dezvoltatori, suntem capabili să integrăm experiența camerei în aplicația noastră, astfel încât utilizatorii să poată face fotografii și să le editeze direct în cadrul aplicației. În plus, cu funcția App Lens vom discuta mai târziu, este chiar mai ușor să creați aplicații care pot înlocui experiența camerei native.
Notă: Pentru a interacționa cu aparatul foto, trebuie să activați ID_CAP_IS_CAMERA
capacitate în fișierul manifest.
Primul pas este crearea unei zone pe pagina unde să putem afișa imaginea înregistrată de aparatul foto. Vom folosi VideoBrush
, care este una dintre periile XAML native care este capabil să încorporeze un videoclip. O vom folosi ca fundal a unui pânză
de control, după cum se arată în următorul exemplu:
Observați CompositeTransform
care a fost aplicat; scopul său este de a menține orientarea corectă a videoclipului, pe baza orientării camerei.
Acum, că avem un loc pentru a afișa fluxul live al camerei, putem utiliza API-urile incluse în Windows.Phone.Media.Capture
Spațiu de nume. Mai exact, se cheamă clasa disponibilă pentru a face fotografii PhotoCaptureDevice
(mai târziu vom vedea o altă clasă pentru înregistrarea videoclipurilor).
Următorul cod este un exemplu de inițializare:
protejate override async void OnNavigatedTo (NavigationEventArgs e) Rezoluție de mărime = PhotoCaptureDevice.GetAvailableCaptureResolutions (CameraSensorLocation.Back). First (); PhotoCaptureDevice camera = așteaptă PhotoCaptureDevice.OpenAsync (CameraSensorLocation.Back, rezoluție); video.SetSource (aparat foto); previewTransform.Rotation = camera.SensorRotationInDegrees;
Înainte de a inițializa fluxul live, trebuie să facem două opțiuni: ce cameră să utilizeze și care dintre rezoluțiile disponibile pe care le dorim să le folosim.
Atingem acest lucru sunând la GetAvailableCaptureResolutions ()
metoda pe PhotoCaptureDevice
clasa, trecând ca parametru a CameraSensorLocation
obiect care reprezintă camera pe care o vom folosi. Metoda va returna o colecție de rezoluții acceptate, identificate de către mărimea
clasă.
Indicație: Este sigur să utilizați codul anterior deoarece fiecare dispozitiv Windows Phone are o cameră din spate. Dacă vrem să interacționăm cu camera frontală, este mai bine să verificăm dacă este disponibilă mai întâi, deoarece nu toate dispozitivele Windows Phone au una. Pentru aceasta, puteți utiliza funcția AvailableSensorLocation
proprietate a PhotoCaptureDevice
clasa, care este o colecție a tuturor camerelor acceptate.
Odată ce am decis ce rezoluție să folosim, putem să o transmitem ca parametru (împreună din nou cu camera selectată) către OpenAsync ()
metodă a PhotoCaptureDevice
clasă. Se va întoarce a PhotoCaptureDevice
obiect care conține hrana vie; pur și simplu trebuie să-l transmitem SetSource ()
metodă a VideoBrush
.
Așa cum am menționat deja, vom trata orientarea camerei folosind transformarea pe care am aplicat-o VideoBrush
: am setat Rotație
folosind SensorRotationInDegrees
proprietate care conține rotația unghiului curent.
Notă: Este posibil să primiți o eroare atunci când încercați să treceți a PhotoCaptureDevice
obiect ca parametru al SetSource ()
metodă a VideoBrush
. Dacă da, va trebui să adăugați Microsoft.Devices
spațiu de nume pentru clasa dvs., deoarece conține o metodă de extensie pentru SetSource ()
metodă care acceptă PhotoCaptureDevice
clasă.
Aplicația va afișa pur și simplu alimentarea live a camerei pe ecran. Următorul pas este să faceți fotografia.
Tehnica folosită de API este de a crea o secvență de cadre și de a le salva ca un flux. Din nefericire, există o limitare în SDK-ul curent: veți putea să faceți o singură fotografie simultan, astfel încât să puteți utiliza numai secvențele realizate de un singur cadru.
privat async void OnTakePhotoClicked (expeditor obiect, RoutedEventArgs e) CameraCaptureSequence cameraCaptureSequence = camera.CreateCaptureSequence (1); Memorie flux Stream = new MemoryStream (); cameraCaptureSequence.Frame [0] .CaptureStream = flux.AsOutputStream (); așteaptă camera.PrepareCaptureSequenceAsync (cameraCaptureSequence); așteptați cameraCaptureSequence.StartCaptureAsync (); flux.Seek (0, SeekOrigin.Begin); Biblioteca MediaLibrary = MediaLibrary nouă (); library.SavePictureToCameraRoll ("picture1.jpg", flux);
Procesul începe cu a CameraCaptureSequence
obiect, care reprezintă fluxul de captare. Datorită limitării cu o singură picătură menționată anterior, veți putea apela CreateCaptureSequence ()
metodă a PhotoCaptureDevice
clasa doar prin trecere 1
ca parametru.
Din același motiv, vom lucra doar cu primul cadru al secvenței stocate în interiorul Cadre
Colectie. CaptureStream
proprietatea cadrului trebuie să fie setată cu fluxul pe care vom folosi pentru stocarea imaginii capturate. În eșantionul anterior, folosim a MemoryStream
pentru a stoca fotografia în memorie. În acest fel, îl putem salva mai târziu în Photos Hub-ul utilizatorului (în special în albumul Camera Roll).
Notă: Pentru a interacționa cu Biblioteca media
trebuie să activați ID_CAP_MEDIALIB_PHOTO
capacitate în fișierul manifest.
De asemenea, puteți personaliza mai multe setări ale camerei foto apelând SetProperty ()
metoda pe PhotoCaptureDevice
obiect care necesită doi parametri: proprietatea de setat și valoarea de atribuit. Proprietățile disponibile sunt definite de doi enumeratori: KnownCameraGeneralProperties
, care conține proprietățile generale ale camerei și KnownCameraPhotoProperties
, care conține proprietățile specifice fotografiei.
Unele proprietăți sunt doar pentru citire, astfel încât singura operație pe care o puteți efectua este obținerea valorilor lor utilizând GetProperty ()
metodă.
În exemplele următoare, folosim SetProperty ()
metoda de setare a modului bliț și GetProperty ()
pentru a obține informațiile dacă regiunea curentă forțează telefoanele să joace un sunet când fac o fotografie.
private void OnSetPropertiesClicked (expeditor obiect, RoutedEventArgs e) camera.SetProperty (KnownCameraPhotoProperties.FlashMode, FlashMode.RedEyeReduction); bool esteShutterSoundRequired = (bool) camera.GetProperty (KnownCameraGeneralProperties.IsShutterSoundRequiredForRegion);
Rețineți că GetProperty ()
metoda întoarce întotdeauna un obiect generic, deci va trebui să-l aruncați manual în funcție de proprietățile pe care le interogați.
Puteți vedea o listă cu toate proprietățile disponibile în documentația MSDN.
În mod obișnuit, dispozitivele Windows Phone au un buton dedicat camerei, care poate fi folosit atât pentru a seta focalizarea apăsând pe jumătate, cât și pentru a face fotografia apăsând pe deplin. De asemenea, puteți utiliza acest buton în aplicațiile dvs., înscriindu-vă la trei evenimente expuse de către CameraButtons
clasa statică:
ShutterKeyPressed
este declanșat când butonul este apăsat.ShutterKeyReleased
este declanșat când butonul este eliberat.ShutterKeyHalfPressed
este declanșat atunci când butonul este apăsat pe jumătate.În exemplul următor, ne abonați la ShutterKeyReleased
eveniment pentru a face o fotografie și ShutterKeyHalfPressed
pentru a utiliza funcția de auto-focalizare.
public Camera () InitializeComponent (); CameraButtons.ShutterKeyReleased + = CameraButtons_ShutterKeyReleased; CameraButtons.ShutterKeyHalfPressed + = CameraButtons_ShutterKeyHalfPressed; async void CameraButtons_ShutterKeyHalfPressed (expeditor obiect, EventArgs e) await camera.FocusAsync (); void CameraButtons_ShutterKeyReleased (expeditor obiect, EventArgs e) // Fotografiați.
Procesul de înregistrare a unui videoclip este similar celui pe care l-am folosit pentru a face o fotografie. În acest caz, vom folosi AudioVideoCaptureDevice
clasă în loc de PhotoCaptureDevice
clasă. După cum puteți vedea în exemplul următor, procedura de inițializare este aceeași: decidem rezoluția și camera pe care dorim să o folosim și afișăm fluxul viu returnat folosind VideoBrush
.
Notă: Pentru a înregistra videoclipuri, va trebui să activați și ID_CAP_MICROPHONE
capacitate în fișierul manifest.
protejate override async void OnNavigatedTo (NavigationEventArgs e) Rezoluție de mărime = AudioVideoCaptureDevice.GetAvailableCaptureResolutions (CameraSensorLocation.Back). First (); videoDevice = așteaptă AudioVideoCaptureDevice.OpenAsync (CameraSensorLocation.Back, rezoluție); video.SetSource (videoDevice); previewTransform.Rotation = videoDevice.SensorRotationInDegrees;
Înregistrarea unui videoclip este chiar mai simplă din moment ce AudioVideoCaptureDevice
clasa expune StartRecordingToStreamAsync ()
care necesită doar să specificați unde să salvați datele înregistrate. Deoarece este un videoclip, veți avea nevoie, de asemenea, de o modalitate de a opri înregistrarea; acesta este scopul StopRecordingAsync ()
metodă.
În exemplul următor, înregistrarea este stocată într-un fișier creat în spațiul de stocare local:
AudioVideoCaptureDevice privatDevice; flux privat IRandomAccessStream; fișierul privat StorageFile; public VideoRecording () InitializeComponent (); private async void OnRecordVideoClicked (expeditor obiect, RoutedEventArgs e) file = await ApplicationData.Current.LocalFolder.CreateFileAsync ("video.wmv", CreationCollisionOption.ReplaceExisting); flux = așteptați fișier.OpenAsync (FileAccessMode.ReadWrite); videoDevice.StartRecordingToStreamAsync (flux); private async void OnStopRecordingClicked (expeditor obiect, RoutedEventArgs e) await videoDevice.StopRecordingAsync (); așteaptă stream.FlushAsync ();
Puteți testa cu ușurință rezultatul operației utilizând MediaPlayerLauncher
clasa pentru a reda înregistrarea:
private void OnPlayVideoClicked (expeditor obiect, RoutedEventArgs e) MediaPlayerLauncher launcher = nou MediaPlayerLauncher Media = nou Uri (file.Path, UriKind.Relative); launcher.Show ();
SDK oferă o listă specifică de setări personalizabile conectate la înregistrarea video. Ele sunt disponibile în KnownCameraAudioVideoProperties
enumeratorul.
Cadrul oferă o clasă numită Biblioteca media
, care pot fi folosite pentru a interacționa cu biblioteca media a utilizatorului (fotografii, muzică, etc.). Să vedem cum să-l folosim pentru a gestiona cele mai frecvente scenarii.
Notă: în versiunea curentă, nu există nicio modalitate de a interacționa cu biblioteca pentru a salva videoclipuri noi în Camera Roll și nici pentru a avea acces la fluxul de videoclipuri existente.
Biblioteca media
clasa poate fi utilizată pentru a avea acces la fotografiile stocate în Photos Hub, datorită funcției Fotografii
Colectie. Este o colecție de Imagine
obiecte, în cazul în care fiecare reprezintă o imagine stocată în Photos Hub.
Notă: va trebui să activați funcția ID_CAP_MEDIALIB_PHOTO
capabilitate în fișierul manifest pentru a avea acces la fotografiile stocate în Photos Hub.
Fotografii
colecția oferă acces la următoarele albume:
Toate celelalte albume afișate în Hubul People care provin de la servicii la distanță cum ar fi SkyDrive sau Facebook nu pot fi accesate utilizând Biblioteca media
clasă.
Sfat: The Biblioteca media
clasa expune o colecție numită SavedPictures
, care conține numai imaginile stocate în albumul Imagini salvate.
Fiecare Imagine
obiect oferă câteva proprietăți pentru a obține acces la informațiile de bază, cum ar fi Nume
, Lăţime
, și Înălţime
. O proprietate foarte importantă este Album
, care conține referința albumului în care este stocată imaginea. În plus, veți putea accesa fluxuri diferite în cazul în care doriți să manipulați imaginea sau să o afișați în aplicația dvs.:
GetPicture ()
metoda returnează fluxul imaginii originale.GetThumbnail ()
metoda returnează fluxul miniaturii, care este o versiune cu rezoluție redusă a imaginii originale.PhoneExtensions
spațiu de nume la clasa dvs., veți putea să utilizați GetPreviewImage ()
, care returnează o imagine de previzualizare. Rezoluția și dimensiunea sa se află între imaginea originală și miniatură.În exemplul următor, generăm miniaturile primei imagini disponibile din Camera Roll și afișăm-o folosind o imagine Imagine
Control:
private void OnSetPhotoClicked (expeditor obiect, RoutedEventArgs e) MediaLibrary library = new MediaLibrary (); Imagine imagine = library.Pictures.FirstOrDefault (x => x.Album.Name == "Camera Roll"); dacă (imagine! = nulă) BitmapImage image = nou BitmapImage (); image.SetSource (picture.GetThumbnail ()); Thumbnail.Source = imagine;
Sfat: Pentru a interacționa cu Biblioteca media
folosind emulatorul, va trebui să deschideți Photos Hub cel puțin o dată; în caz contrar, veți primi o colecție goală de imagini atunci când interogați Fotografii
proprietate.
Cu Biblioteca media
de asemenea, veți putea face contrariul: faceți o fotografie în aplicația dvs. și salvați-o în secțiunea People Hub. Am văzut deja o probă când am vorbit despre integrarea camerei în aplicația noastră; putem salva fotografia în Camera Roll (folosind SavePictureToCameraRoll ()
) sau în albumul Imagini salvate (folosind Salvează poza()
metodă). În ambele cazuri, parametrii necesari sunt numele imaginii și fluxul acesteia.
În următorul exemplu, descărcăm o imagine de pe Internet și o salvăm în albumul Saved Pictures:
privat async void OnDownloadPhotoClicked (expeditor obiect, RoutedEventArgs e) HttpClient client = nou HttpClient (); Stream stream = așteaptă client.GetStreamAsync ("http://www.syncfusion.com/Content/en-US/Home/Images/syncfusion-logo.png"); Biblioteca MediaLibrary = MediaLibrary nouă (); library.SavePicture ("logo.jpg", flux);
Biblioteca media
clasa oferă multe opțiuni pentru accesarea muzicii, însă există anumite limitări care nu sunt prezente când lucrați cu imagini.
Notă: va trebui să activați funcția ID_CAP_MEDIALIB_AUDIO
capabilitate în fișierul manifest pentru a avea acces la fotografiile stocate în Photos Hub.
Următoarele colecții sunt expuse de către Biblioteca media
clasa pentru accesarea muzicii:
Albume
pentru a avea acces la albume de muzică.cântece
pentru a avea acces la toate melodiile disponibile.genuri
pentru a avea acces la melodiile grupate după gen.Liste de redare
pentru a avea acces la playlisturi.Fiecare cântec este identificat de către Cântec
, care conține toate informațiile comune despre o pistă muzicală preluată direct de la eticheta ID3: Album
, Artist
, Titlu
, Numărul piesei
, si asa mai departe.
Din păcate, nu există acces la fluxul unui cântec, astfel încât singura modalitate de a reda piese este prin utilizarea Media Player
clasa, care face parte din Microsoft.XNA.Framework.Media
Spațiu de nume. Această clasă expune multe metode de a interacționa cu piste. Joaca()
metoda acceptă ca parametru a Cântec
obiect, recuperat de la Biblioteca media
.
În următorul eșantion, reproducem primul cantec disponibil în bibliotecă:
private void OnPlaySong (expeditor obiect, RoutedEventArgs e) MediaLibrary library = new MediaLibrary (); Melodie cântec = library.Songs.FirstOrDefault (); MediaPlayer.Play (cântec);
Una dintre noile caracteristici introduse în Windows Phone 8 vă permite să salvați o melodie stocată în spațiul de stocare local al aplicației în biblioteca media, astfel încât să poată fi redată de Hubul nativ Music + Videos. Acest lucru necesită Microsoft.Xna.Framework.Media.PhoneExtensions
spațiul de nume pentru a fi adăugat la clasa dvs..
privat async void OnDownloadMusicClicked (expeditor obiect, RoutedEventArgs e) MediaLibrary library = new MediaLibrary (); SongMetadata metadata = nou SongMetadata AlbumName = "O grămadă de sânge în cap", ArtistName = "Coldplay", Name = "Clocks"; bibliotecă.SaveSong (nou Uri ("song.mp3", UriKind.RelativeOrAbsolute), metadate, SaveSongOperation.CopyToLibrary);
SaveSong ()
metoda necesită trei parametri, după cum se arată în proba anterioară:
SongMetadata
clasă. Este un parametru opțional; dacă treceți nul
, Windows Phone va extrage automat informațiile ID3 din fișier.SaveSongOperation
obiect, care spune bibliotecii media dacă fișierul trebuie copiat (CopyToLibrary
) sau mutat (MoveToLibrary
), astfel încât să fie șters din spațiul de stocare.Windows Phone 8 a introdus noi caracteristici specifice aplicațiilor fotografice. Sunt numite unele dintre cele mai interesante lentile, care aplică diferite filtre și efecte imaginilor. Windows Phone oferă o modalitate de a comuta cu ușurință între diferite aplicații de cameră pentru a aplica filtre în zbor.
Aplicațiile Lens sunt aplicații Windows Phone obișnuite care interacționează cu API-urile camerei pe care le-am utilizat la începutul acestui articol. Diferența este că o aplicație pentru lentile este afișată în lentile secțiune a aplicației Aparat nativ; când utilizatorii apasă butonul pentru cameră, este afișată o vizualizare specială cu toate aplicațiile disponibile pentru lentile. În acest fel, pot trece cu ușurință la o altă aplicație pentru a face fotografia.
Integrarea cu vizualizarea lentilelor pornește de la fișierul manifest, care trebuie editat manual prin alegerea Vizualizați codul opțiune din meniul contextual. Următorul cod trebuie adăugat în Extensie secțiune:
Fiecare aplicație pentru lentile necesită o pictogramă specifică care este afișată în vizualizarea obiectivelor. Pictogramele sunt preluate automat din bunuri folder bazat pe o convenție de numire. Trebuie să adăugați o pictogramă pentru fiecare rezoluție acceptată utilizând convențiile din tabelul următor:
Rezoluţie | Dimensiune pictogramă | Nume de fișier |
480 × 800 | 173 × 173 | Lens.Screen-WVGA.png |
768 × 1280 | 277 × 277 | Lens.Screen-WXGA.png |
720 × 1280 | 259 × 259 | Lens.Screen-720p.png |
UriMapper
clasa este necesară pentru lucrul cu aplicațiile lentilelor. De fapt, aplicațiile pentru lentile sunt deschise utilizând un URI special, care trebuie interceptat și gestionat. Următorul cod este un eșantion uri
:
/MainPage.xaml?Action=ViewfinderLaunch
Când asta e uri
este interceptat, utilizatorii ar trebui să fie redirecționați către pagina de aplicație care face fotografia. În exemplul următor, puteți vedea a UriMapper
implementare care redirecționează utilizatorii către o pagină numită Camera.xaml
când aplicația este deschisă din vizualizarea obiectivului.
clasa publica MyUriMapper: UriMapperBase suprascrie public Uri MapUri (Uri uri) string tempUri = uri.ToString (); dacă (tempUri.Contains ("ViewfinderLaunch")) returnează noua Uri ("/ Camera.xaml", UriKind.Relative); altceva return uri;
Dacă ați dezvoltat o aplicație care acceptă partajarea de fotografii, cum ar fi un client de rețea socială, îl puteți integra în Acțiune din meniul Photos Hub. Utilizatorii pot găsi această opțiune în bara de aplicații în pagina cu detalii fotografie.
Când utilizatorii aleg această opțiune, Windows Phone afișează o listă de aplicații care sunt înregistrate pentru a permite partajarea. Putem adăuga aplicația noastră în listă prin adăugarea unei noi extensii în fișierul manifest, așa cum am făcut pentru a adăuga suport pentru lentile.
Trebuie să adăugăm manual următoarea declarație în Extensii secțiune:
Când utilizatorii aleg aplicația noastră din listă, se deschide cu următorul URI:
/MainPage.xaml?Action=ShareContent&FileId=%7B1ECC86A2-CDD7-494B-A9A8-DBD9B4C4AAC7%7D
Din nou, putem folosi a UriMapper
implementare pentru a redirecționa utilizatorii către pagina aplicației noastre, care oferă funcția de partajare. De asemenea, este important să purtați FiledId
parametru în această pagină; o să avem nevoie de ea pentru a ști ce fotografie a fost selectată de utilizator.
Următorul exemplu prezintă a UriMapper
care înlocuiește pur și simplu numele paginii originale (MainPage.xaml
) cu numele paginii de destinație (SharePage.xaml
):
clasa publica MyUriMapper: UriMapperBase suprascrie public Uri MapUri (Uri uri) string tempUri = uri.ToString (); string mappedUri; dacă ((tempUri.Contains ("SharePhotoContent")) && (tempUri.Contains ("FileId"))) // Redirecționați către PhotoShare.xaml. mappedUri = tempUri.Replace ("MainPage", "SharePage"); returnați noi Uri (mappedUri, UriKind.Relative); return uri;
După redirecționarea utilizatorului către pagina de distribuire, putem folosi o metodă numită GetPictureFromToken ()
expuse de Biblioteca media
clasă. Acceptă ID-ul unic al imaginii ca parametru și returnează o referință la Imagine
obiect care reprezintă imaginea selectată de utilizator.
ID-ul imaginii este parametrul numit FileId
pe care am primit-o în URI când a fost deschisă aplicația. În următorul exemplu, puteți vedea modul în care preluăm parametrul utilizând funcția OnNavigatedTo
eveniment care este declanșat atunci când utilizatorul este redirecționat către pagina de partajare și îl folosește pentru a afișa fotografia selectată cu o imagine Imagine
Control.
protejate override void OnNavigatedTo (NavigationEventArgs e) dacă (NavigationContext.QueryString.ContainsKey ("FileId")) string fileId = NavigationContext.QueryString ["FileId"]; Biblioteca MediaLibrary = MediaLibrary nouă (); Imagine imagine = library.GetPictureFromToken (fileId); BitmapImage image = nou BitmapImage (); image.SetSource (picture.GetImage ()); ShareImage.Source = imagine;
Există și alte modalități de a integra aplicația noastră cu Photoshop Hub. Toți lucrează la fel:
uri
că aveți nevoie pentru a intercepta cu un UriMapper
clasă.FileId
parametru.Aceasta este cea mai simplă integrare, deoarece afișează doar aplicația în secțiunea Apps a Photos Hub-ului. Pentru ao susține, pur și simplu trebuie să adăugați următoarea declarație în fișierul manifest:
Nimic altceva nu este necesar, deoarece acest tip de integrare va include pur și simplu o legătură rapidă în Photos Hub. Aplicația va fi deschisă în mod normal, ca și cum ar fi fost deschisă utilizând pictograma aplicației principale.
O altă opțiune disponibilă în bara de aplicații a paginii cu detalii fotografie este apelată Editați | ×. Când utilizatorul o atinge, Windows Phone afișează o listă de aplicații care acceptă editarea fotografiilor. După ce alegeți unul, utilizatorul se așteaptă să fie redirecționat către o pagină a aplicației unde imaginea selectată poate fi editată.
Următoarea declarație trebuie adăugată în fișierul manifest:
Când această funcție este activată, aplicația va fi deschisă cu următorul URI:
/MainPage.xaml?Action=EditPhotoContent&FileId=%7B1ECC86A2-CDD7-494B-A9A8-DBD9B4C4AAC7%7D
Acesta este uri
pentru a intercepta să redirecționeze utilizatorii către pagina corespunzătoare unde veți putea prelua imaginea selectată utilizând FileId
parametru, așa cum am făcut-o pentru caracteristica de partajare a fotografiilor.
Aplicațiile media Rich sunt aplicații care pot face fotografii și le pot salva în biblioteca utilizatorului. Când utilizatorii deschid una dintre aceste fotografii, vor vedea:
Această abordare este similară cu funcțiile de partajare și editare. Diferența este că integrarea aplicațiilor media bogate este disponibilă numai pentru fotografiile realizate în cadrul aplicației, în timp ce funcțiile de editare și partajare sunt disponibile pentru fiecare fotografie, indiferent de modul în care au fost preluate.
Următoarea declarație trebuie adăugată în manifest pentru a permite integrarea aplicațiilor media îmbogățite:
În acest scenariu, aplicația este deschisă cu următorul URI:
/MainPage.xaml?Action=RichMediaEdit&FileId=%7B1ECC86A2-CDD7-494B-A9A8-DBD9B4C4AAC7%7D
După cum puteți vedea, URI este întotdeauna același; ce schimbări este valoarea lui Acțiune
parametru - în acest caz, RichMediaEdit
.
Acesta este URI-ul necesar pentru a intercepta cu dvs. UriMapper
punerea în aplicare. Va trebui să redirecționați utilizatorii către o pagină a aplicației dvs. care poate gestiona fotografia selectată.
În acest tutorial, am învățat multe modalități de a crea o aplicație multimedia excelentă pentru Windows Phone prin:
Acest tutorial reprezintă un capitol din Windows Phone 8 Succinctly, un eBook gratuit de la echipa de la Syncfusion.