Windows Phone 8 Succinct aplicații multimedia

Î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.

Utilizarea camerei

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.

Fotografierea

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.

Utilizarea cheii pentru camera foto hardware

Î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. 

Înregistrarea unui videoclip

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.

Interacționează cu Biblioteca media

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.

Fotografii

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:

  • Camera Roll
  • Fotografiile salvate
  • Imagini

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.
  • Dacă adăugați 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); 

Muzică

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ă:

  • Calea cântecului de salvat. Este o cale relativă care indică stocarea locală.
  • Metadatele melodiei, care sunt identificate de către SongMetadata clasă. Este un parametru opțional; dacă treceți nul, Windows Phone va extrage automat informațiile ID3 din fișier.
  • A 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.

Aplicații pentru lentile

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; 

Asistență partajată

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; 

Alte caracteristici de integrare

Există și alte modalități de a integra aplicația noastră cu Photoshop Hub. Toți lucrează la fel:

  • Trebuie să se adauge o declarație în fișierul manifest.
  • Aplicația este deschisă folosind o aplicație specială uri că aveți nevoie pentru a intercepta cu un UriMapper clasă.
  • Utilizatorul este redirecționat către o pagină dedicată în care puteți prelua imaginea selectată utilizând FileId parametru.

Listează aplicația ca aplicație fotografică

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.

Integrarea cu opțiunea de editare

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ții Rich Media

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:

  • text sub fotografie cu mesajul "capturat de", urmat de numele aplicației
  • o nouă opțiune în bara de aplicații numită "deschideți", urmată de numele aplicației

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ă.

Concluzie

În acest tutorial, am învățat multe modalități de a crea o aplicație multimedia excelentă pentru Windows Phone prin:

  • integrarea caracteristicilor camerei pentru a face fotografii și pentru a înregistra videoclipuri
  • interacționând cu biblioteca media pentru a avea acces la imagini și audio
  • integrarea cu experiența camerei native pentru a oferi utilizatorilor acces la funcții avansate direct în Photos Hub

Acest tutorial reprezintă un capitol din Windows Phone 8 Succinctly, un eBook gratuit de la echipa de la Syncfusion.

Cod