Windows Phone 8 Succinctly Multimedieapplikasjoner

I denne opplæringen skal vi fokusere på hvordan du lager et multimedieprogram for Windows Phone ved å utnytte enhetens kamera, samhandle med mediebiblioteket og utforske mulighetene for Photos Hub.

Bruke kameraet

Kameraet er en av de viktigste funksjonene i Windows Phone-enheter, særlig takket være Nokia, som har opprettet noen av de beste kameratelefonene som er tilgjengelige på markedet.

Som utviklere kan vi integrere kameraopplevelsen i vår søknad, slik at brukerne kan ta bilder og redigere dem direkte i applikasjonen. I tillegg vil Lens App-funksjonen diskutere senere, det er enda enklere å lage programmer som kan erstatte den opprinnelige kameraopplevelsen.

Merk: For å samhandle med kameraet må du aktivere ID_CAP_IS_CAMERA evnen i manifestfilen.

Det første trinnet er å opprette et område på siden der vi kan vise bildet som er tatt opp av kameraet. Vi skal bruke VideoBrush, som er en av de innfødte XAML børster som kan legge inn en video. Vi bruker det som bakgrunn av a Lerret kontroll, som vist i følgende prøve:

        

Legg merke til CompositeTransform som har blitt brukt Formålet er å holde riktig orientering av videoen, basert på kameraets orientering.

Ta bilder

Nå som vi har et sted å vise live-kamerainnmatningen, kan vi bruke APIene som er inkludert i Windows.Phone.Media.Capture navnerom. Spesielt er klassen som er tilgjengelig for å ta bilder, kalt PhotoCaptureDevice (senere ser vi en annen klasse for innspilling av videoer).

Følgende kode er en prøveinitialisering:

beskyttet overstyring async void OnNavigatedTo (NavigationEventArgs e) Størrelse oppløsning = PhotoCaptureDevice.GetAvailableCaptureResolutions (CameraSensorLocationBack) .First (); PhotoCaptureDevice camera = venter PhotoCaptureDevice.OpenAsync (CameraSensorLocationBack, resolution); video.SetSource (kamera); previewTransform.Rotation = camera.SensorRotationInDegrees; 

Før du initialiserer live-strømmen, må vi gjøre to valg: hvilket kamera som skal brukes, og hvilke av de tilgjengelige resolusjonene vi vil bruke.

Vi oppnår dette ved å ringe GetAvailableCaptureResolutions () metode på PhotoCaptureDevice klasse, passerer som parameter a CameraSensorLocation objekt som representerer kameraet vi skal bruke. Metoden vil returnere en samling av de støttede resolusjonene, som identifiseres av Størrelse klasse.

Tips: Det er trygt å bruke den forrige koden fordi hver Windows Phone-enhet har et bakkamera. Hvis vi vil samhandle med frontkameraet i stedet, er det bedre å sjekke om en er tilgjengelig først siden ikke alle Windows Phone-enhetene har en. For å gjøre dette kan du bruke AvailableSensorLocation eiendom av PhotoCaptureDevice klassen, som er en samling av alle kameraene som støttes.

Når vi har bestemt hvilken oppløsning som skal brukes, kan vi sende den som en parameter (sammen igjen med det valgte kameraet) til OpenAsync () metode av PhotoCaptureDevice klasse. Det kommer tilbake a PhotoCaptureDevice objekt som inneholder live feed vi må bare sende det til SetSource () metode av VideoBrush

Som allerede nevnt håndterer vi kameraorienteringen ved hjelp av transformasjonen vi har brukt på VideoBrush: vi satte rotasjon bruker SensorRotationInDegrees eiendom som inneholder den aktuelle vinkels rotasjon.

Merk: Du kan få en feil når du prøver å sende en PhotoCaptureDevice objekt som en parameter av SetSource () metode av VideoBrush. I så fall må du legge til Microsoft.Devices navneområde til klassen din, siden det inneholder en utvidelsesmetode for SetSource () metode som støtter PhotoCaptureDevice klasse.

Nå vil applikasjonen bare vise levende strøm av kameraet på skjermen. Det neste trinnet er å ta bildet.

Teknikken som brukes av API er å lage en sekvens av rammer og lagre dem som en strøm. Dessverre er det en begrensning i dagens SDK: du kan bare ta ett bilde av gangen, så du kan bare bruke sekvenser laget av en ramme.

privat asynk-ugyldig OnTakePhotoClicked (objekt sender, RoutedEventArgs e) CameraCaptureSequence cameraCaptureSequence = camera.CreateCaptureSequence (1); MemoryStream stream = nytt MemoryStream (); cameraCaptureSequence.Frames [0] .CaptureStream = stream.AsOutputStream (); venter på kamera.PrepareCaptureSequenceAsync (CameraCaptureSequence); venter på kameraCaptureSequence.StartCaptureAsync (); stream.Seek (0, SeekOrigin.Begin); MediaLibrary library = new MediaLibrary (); library.SavePictureToCameraRoll ("picture1.jpg", stream); 

Prosessen starter med a CameraCaptureSequence objekt, som representerer fangststrømmen. På grunn av single-picutre-begrensningen nevnt tidligere, kan du ringe CreateCaptureSequence () metode av PhotoCaptureDevice kun ved å passere 1 som parameter.

Av samme grunn skal vi bare jobbe med den første rammen av sekvensen som er lagret inne i rammer samling. De CaptureStream egenskapen til rammen må settes med strømmen som vi skal bruke til å lagre det fangede bildet. I den forrige prøven bruker vi en Memory for å lagre bildet i minnet. På denne måten kan vi lagre den senere i brukerens Photos Hub (spesielt i Camera Roll-albumet).

Merk: For å samhandle med Medialibrary klasse du må aktivere ID_CAP_MEDIALIB_PHOTO evnen i manifestfilen.

Du kan også tilpasse mange innstillinger av kameraet ved å ringe SetProperty () metode på PhotoCaptureDevice objekt som krever to parametre: egenskapen som skal settes, og verdien som skal tilordnes. De tilgjengelige egenskapene er definert av to talere: KnownCameraGeneralProperties, som inneholder de generelle kameraegenskapene, og KnownCameraPhotoProperties, som inneholder de fotospesifikke egenskapene.

Noen egenskaper er skrivebeskyttet, så den eneste operasjonen du kan utføre er å få sine verdier ved å bruke GetProperty () metode.

I de følgende prøvene bruker vi SetProperty () Metode for å angi blitsmodus og GetProperty () for å få informasjonen hvis den nåværende regionen tvinger telefonene til å spille en lyd når de tar et bilde.

privat ugyldig OnSetPropertiesClicked (objekt sender, RoutedEventArgs e) camera.SetProperty (KnownCameraPhotoProperties.FlashMode, FlashMode.RedEyeReduction); bool isShutterSoundRequired = (bool) camera.GetProperty (KnownCameraGeneralProperties.IsShutterSoundRequiredForRegion); 

Legg merke til at GetProperty () Metoden returnerer alltid et generisk objekt, så du må manuelt kaste den i henhold til egenskapene du spør.

Du kan se en liste over alle tilgjengelige egenskaper i MSDN-dokumentasjonen.

Bruke maskinvarekamera-nøkkelen

Vanligvis har Windows Phone-enheter en dedikert knapp for kameraet, som både kan brukes til å sette fokus ved å trykke halvveis på det, og for å ta bildet ved å trykke på det helt. Du kan også bruke denne knappen i dine applikasjoner ved å abonnere på tre hendelser som er utsatt av CameraButtons statisk klasse:

  • ShutterKeyPressed utløses når knappen trykkes.
  • ShutterKeyReleased utløses når knappen slippes ut.
  • ShutterKeyHalfPressed utløses når knappen trykkes halvveis.

I følgende eksempel abonnerer vi på ShutterKeyReleased hendelse for å ta et bilde og ShutterKeyHalfPressed hendelse for å bruke autofokusfunksjonen.

offentlig kamera () InitializeComponent (); CameraButtons.ShutterKeyReleased + = CameraButtons_ShutterKeyReleased; CameraButtons.ShutterKeyHalfPressed + = CameraButtons_ShutterKeyHalfPressed;  async void CameraButtons_ShutterKeyHalfPressed (objekt sender, EventArgs e) avvente camera.FocusAsync ();  void CameraButtons_ShutterKeyReleased (objekt sender, EventArgs e) // Ta bildet. 

Ta opp en video

Prosessen med å ta opp en video ligner den vi brukte til å ta et bilde. I dette tilfellet skal vi bruke AudioVideoCaptureDevice klasse i stedet for PhotoCaptureDevice klasse. Som du ser i følgende eksempel, er initialiseringsprosedyren den samme: Vi bestemmer hvilken oppløsning og kamera vi vil bruke, og vi viser det returnerte live-feedet ved hjelp av en VideoBrush.

Merk: Hvis du vil spille inn videoer, må du også aktivere ID_CAP_MICROPHONE evnen i manifestfilen.

beskyttet overstyring async void OnNavigatedTo (NavigationEventArgs e) Størrelse oppløsning = AudioVideoCaptureDevice.GetAvailableCaptureResolutions (CameraSensorLocationBack) .First (); videoDevice = avvente AudioVideoCaptureDevice.OpenAsync (CameraSensorLocation.Back, oppløsning); video.SetSource (videoDevice); previewTransform.Rotation = videoDevice.SensorRotationInDegrees; 

Det er enda enklere å spille inn en video siden AudioVideoCaptureDevice klassen avslører StartRecordingToStreamAsync () metode, som bare krever at du spesifiserer hvor du skal lagre dataene som er registrert. Siden det er en video, trenger du også en måte å stoppe opptaket på. Dette er formålet med StopRecordingAsync () metode.

I følgende eksempel lagres opptaket i en fil opprettet i lokal lagring:

privat AudioVideoCaptureDevice videoDevice; privat IRandomAccessStream-strøm; privat StorageFile-fil; offentlig VideoRecording () InitializeComponent ();  privat asynk ugyldig OnRecordVideoClicked (objekt sender, RoutedEventArgs e) file = avvente ApplicationData.Current.LocalFolder.CreateFileAsync ("video.wmv", CreationCollisionOption.ReplaceExisting); stream = avvent file.OpenAsync (FileAccessMode.ReadWrite); videoDevice.StartRecordingToStreamAsync (strøm);  privat async ugyldig OnStopRecordingClicked (objekt sender, RoutedEventArgs e) avvente videoDevice.StopRecordingAsync (); venter stream.FlushAsync (); 

Du kan enkelt teste resultatet av operasjonen ved å bruke MediaPlayerLauncher klasse for å spille innspillingen:

privat ugyldig OnPlayVideoClicked (objekt sender, RoutedEventArgs e) MediaPlayerLauncher launcher = ny MediaPlayerLauncher Media = ny Uri (file.Path, UriKind.Relative); launcher.Show (); 

SDK tilbyr en spesifikk liste over tilpassbare innstillinger som er koblet til videoopptak. De er tilgjengelige i KnownCameraAudioVideoProperties enumeratoren.

Interagere med mediebiblioteket

Rammen tilbyr en klasse som kalles Medialibrary, som kan brukes til å samhandle med brukermediebiblioteket (bilder, musikk, etc.). La oss se hvordan du bruker den til å håndtere de vanligste scenariene.

Merk: I den gjeldende versjonen er det ingen måte å samhandle med biblioteket for å lagre nye videoer i kamerarullen, og heller ikke få tilgang til strømmen av eksisterende videoer.

Bilder

De Medialibrary klassen kan brukes til å få tilgang til bildene som er lagret i Photos Hub, takket være Bilder samling. Det er en samling av Bilde objekter, hvor hver enkelt representerer et bilde som er lagret i Photos Hub.

Merk: Du må aktivere ID_CAP_MEDIALIB_PHOTO mulighet i manifestfilen for å få tilgang til bildene som er lagret i Photos Hub.

De Bilder samling gir tilgang til følgende album:

  • Kamerarull
  • Lagrede bilder
  • Skjerm

Alle andre album som vises i People Hub som kommer fra eksterne tjenester som SkyDrive eller Facebook, kan ikke nås med Medialibrary klasse.

Tips: Den Medialibrary Klassen avslører en samling som heter SavedPictures, som bare inneholder bildene som er lagret i albumet Lagrede bilder.

Hver Bilde objektet tilbyr noen egenskaper for å få tilgang til grunnleggende info, som Navn, Bredde, og Høyde. En veldig viktig eiendom er Album, som inneholder referansen til albumet der bildet er lagret. I tillegg vil du kunne få tilgang til forskjellige strømmer hvis du vil manipulere bildet eller vise det i søknaden din:

  • De GetPicture () Metoden returnerer strømmen til det opprinnelige bildet.
  • De GetThumbnail () Metoden returnerer strømmen av miniatyrbildet, som er en lavoppløselig versjon av det opprinnelige bildet.
  • Hvis du legger til PhoneExtensions navneområde til klassen din, vil du kunne bruke GetPreviewImage () metode, som returnerer et forhåndsvisningsbilde. Dens oppløsning og størrelse er mellom det opprinnelige bildet og miniatyrbildet.

I den følgende prøven genererer vi miniatyrbildet for det første tilgjengelige bildet i kamerarullen og viser det ved hjelp av en Bilde styre:

privat ugyldig OnSetPhotoClicked (objekt sender, RoutedEventArgs e) MediaLibrary library = new MediaLibrary (); Bildebilde = library.Pictures.FirstOrDefault (x => x.Album.Name == "Camera Roll"); hvis (bildet! ​​= null) BitmapImage image = new BitmapImage (); image.SetSource (picture.GetThumbnail ()); Thumbnail.Source = image; 

Tips: For å samhandle med Medialibrary klasse ved hjelp av emulatoren, må du åpne Photos Hub minst en gang; ellers får du en tom samling bilder når du spør om Bilder eiendom.

Med Medialibrary klasse, kan du også gjøre det motsatte: Ta et bilde i din søknad og lagre det i People Hub. Vi har allerede sett et eksempel når vi snakket om å integrere kameraet i vår søknad; Vi kan lagre bildet i kamerarullen (ved hjelp av SavePictureToCameraRoll () metode) eller i albumet Lagrede bilder (ved hjelp av SavePicture () metode). I begge tilfeller er de nødvendige parameterene navnet på bildet og dets strøm.

I den følgende prøven laster vi ned et bilde fra Internett og lagrer det i albumet Lagrede bilder:

privat asynk ugyldig OnDownloadPhotoClicked (objekt sender, RoutedEventArgs e) HttpClient client = new HttpClient (); Stream stream = venter client.GetStreamAsync ("http://www.syncfusion.com/Content/en-US/Home/Images/syncfusion-logo.png"); MediaLibrary library = new MediaLibrary (); library.SavePicture ("logo.jpg", stream); 

Musikk

De Medialibrary klassen tilbyr mange muligheter for tilgang til musikk, men det er noen begrensninger som ikke er tilstede når du arbeider med bilder. 

Merk: Du må aktivere ID_CAP_MEDIALIB_AUDIO mulighet i manifestfilen for å få tilgang til bildene som er lagret i Photos Hub. 

Følgende samlinger blir eksponert av Medialibrary klassen for å få tilgang til musikk:

  • album for å få tilgang til musikkalbum.
  • sanger for å få tilgang til alle tilgjengelige sanger.
  • sjangere for å få tilgang til sangene gruppert etter sjanger.
  • Spillelister for å få tilgang til spillelister.

Hver sang er identifisert av Sang klassen, som inneholder all den vanlige informasjonen om et musikkspor tatt direkte fra ID3-taggen: Album, kunstner, Tittel, Spornummer, og så videre.

Dessverre er det ikke tilgang til sangens strøm, så den eneste måten å spille spor på er å bruke Mediaspiller klasse, som er en del av Microsoft.XNA.Framework.Media navnerom. Denne klassen avslører mange metoder for å samhandle med spor. De Spille() Metoden aksepterer som parameter a Sang objekt, hentet fra Medialibrary.

I følgende eksempel reproduserer vi den første sangen som er tilgjengelig i biblioteket:

privat ugyldig OnPlaySong (objekt sender, RoutedEventArgs e) MediaLibrary library = new MediaLibrary (); Sangsang = library.Songs.FirstOrDefault (); MediaPlayer.Play (sang); 

En av de nye funksjonene som er introdusert i Windows Phone 8, lar deg lagre en sang som er lagret i programmets lokale lagringsplass til mediebiblioteket slik at det kan spilles av det innfødte Music + Videos Hub. Dette krever Microsoft.Xna.Framework.Media.PhoneExtensions navneområde som skal legges til i klassen din.

privat asynk ugyldig OnDownloadMusicClicked (objekt sender, RoutedEventArgs e) MediaLibrary library = new MediaLibrary (); SongMetadata metadata = ny SongMetadata AlbumName = "Et rush av blod til hodet", ArtistName = "Coldplay", Name = "Clocks"; library.SaveSong (ny Uri ("song.mp3", UriKind.RelativeOrAbsolute), metadata, SaveSongOperation.CopyToLibrary); 

De SaveSong () Metoden krever tre parametre, som vist i forrige prøve:

  • Banen til sangen å lagre. Det er en relativ sti som peker på lokal lagring.
  • Sangmetadata, som er identifisert av SongMetadata klasse. Det er en valgfri parameter; hvis du passerer null, Windows Phone vil automatisk trekke ut ID3-informasjonen fra filen.
  • EN SaveSongOperation objekt, som forteller mediebiblioteket om filen skal kopieres (CopyToLibrary) eller flyttet (MoveToLibrary) slik at den blir slettet fra lagringsplassen.

Lens Apps

Windows Phone 8 har introdusert nye funksjoner som er spesifikke for fotografiske applikasjoner. Noen av de mest interessante kalles linseprogrammer, som gjelder forskjellige filtre og effekter på bilder. Windows Phone tilbyr en måte å enkelt bytte mellom forskjellige kameraprogrammer for å bruke filtre på fly.

Lens apps er vanlige Windows Phone applikasjoner som samhandler med Kamera APIer vi brukte i begynnelsen av denne artikkelen. Forskjellen er at en linseapp vises i linser delen av den innfødte Kamera-appen; Når brukere trykker på kameraknappen, vises en spesiell visning med alle tilgjengelige linseapplikasjoner. På denne måten kan de enkelt bytte til et annet program for å ta bildet.

Integrasjon med linsevisningen starter fra manifestfilen, som må redigeres manuelt ved å velge Vis kode alternativet i kontekstmenyen. Følgende kode må legges til i Extension seksjon:

  

Hver linseprogram trenger et bestemt ikon som vises i linsevisningen. Ikoner hentes automatisk fra Eiendeler mappe basert på en navngivningskonvensjon. Et ikon må legges til for hver støttet oppløsning ved hjelp av konvensjonene i følgende tabell:

Vedtak

Ikonstørrelse

Filnavn

480 × 800

173 × 173

Lens.Screen-WVGA.png

768 × 1280

277 × 277

Lens.Screen-WXGA.png

720 × 1280

259 × 259

Lens.Screen-720p.png

De UriMapper Klassen er nødvendig for å jobbe med objektivapps. Faktisk åpnes objektivapplikasjoner ved hjelp av en spesiell URI som må skilles og administreres. Følgende kode er et eksempel Uri:

/MainPage.xaml?Action=ViewfinderLaunch

Når dette Uri blir avlyst, bør brukerne omdirigeres til applikasjonssiden som tar bildet. I følgende eksempel kan du se en UriMapper implementering som omdirigerer brukere til en side som heter Camera.xaml når applikasjonen åpnes fra objektivvisningen.

offentlig klasse MyUriMapper: UriMapperBase offentlig overstyring Uri MapUri (Uri uri) string tempUri = uri.ToString (); hvis (tempUri.Contains ("ViewfinderLaunch")) returner ny Uri ("/ Camera.xaml", UriKind.Relative);  ellers return uri; 

Støtte deling

Hvis du har utviklet et program som støtter fotodeling, for eksempel et sosialt nettverksklient, kan du integrere det i Dele menyen på Photos Hub. Brukere kan finne dette alternativet i programfeltet på siden for fotodetaljer.

Når brukere velger dette alternativet, viser Windows Phone en liste over programmer som er registrert for å støtte deling. Vi kan legge til søknaden vår på listen ved å legge til en ny utvidelse i manifestfilen, som vi gjorde for å legge til linsestøtte.

Vi må manuelt legge til følgende erklæring i utvidelser seksjon:

  

Når brukere velger programmet vårt fra listen, åpnes det med følgende URI:

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

Igjen kan vi bruke a UriMapper implementering for å omdirigere brukere til programmets side som tilbyr delingsfunksjonen. Det er også viktig å bære FiledId parameter på denne siden; vi skal trenge det for å vite hvilket bilde som er valgt av brukeren.

Følgende eksempel viser a UriMapper implementering som bare erstatter navnet på den opprinnelige siden (MainPage.xaml) med navnet på destinasjonssiden (SharePage.xaml):

offentlig klasse MyUriMapper: UriMapperBase offentlig overstyring Uri MapUri (Uri uri) string tempUri = uri.ToString (); streng mappedUri; hvis ((tempUri.Contains ("SharePhotoContent")) && (tempUri.Contains ("FileId"))) // Viderekobling til PhotoShare.xaml. mappedUri = tempUri.Replace ("MainPage", "SharePage"); returner ny Uri (mappedUri, UriKind.Relative);  returnere uri; 

Etter omdirigering av brukeren til delingssiden, kan vi bruke en metode som kalles GetPictureFromToken () utsatt av Medialibrary klasse. Den aksepterer det unike bilde-ID som en parameter og returnerer en referanse til Bilde objekt som representerer bildet valgt av brukeren.

Bildet ID er parameteren kalt mappeID som vi mottok i URI da søknaden ble åpnet. I følgende eksempel kan du se hvordan vi henter parameteren ved å bruke OnNavigatedTo hendelse som utløses når brukeren blir omdirigert til delingssiden, og bruker den til å vise det valgte bildet med en Bilde styre.

beskyttet overstyring ugyldig OnNavigatedTo (NavigationEventArgs e) if (NavigationContext.QueryString.ContainsKey ("FileId")) string fileId = NavigationContext.QueryString ["FileId"]; MediaLibrary library = new MediaLibrary (); Bildebilde = library.GetPictureFromToken (fileId); BitmapImage image = nytt BitmapImage (); image.SetSource (picture.GetImage ()); ShareImage.Source = image; 

Andre integrasjonsfunksjoner

Det er andre måter å integrere applikasjonen med Photos Hub. De arbeider på samme måte:

  • En deklarasjon må legges til manifestfilen.
  • Søknaden åpnes ved hjelp av en spesiell Uri at du må fange opp med en UriMapper klasse.
  • Brukeren blir omdirigert til en dedikert side der du kan hente det valgte bildet ved hjelp av mappeID parameter.

Oppgi applikasjonen som en fotografisk app

Dette er den enkleste integrasjonen, siden det bare viser programmet i Applikasjoner-delen av Photos Hub. For å støtte det, må du bare legge til følgende erklæring i manifestfilen:

  

Det er ikke nødvendig med noe annet siden denne typen integrasjon bare vil inneholde en hurtig kobling i Photos Hub. Søknaden vil bli åpnet normalt, som om den ble åpnet ved hjelp av hovedappikonet.

Integrering med redigeringsalternativet

Et annet alternativ som er tilgjengelig i programfeltet på siden for fotodetaljer, kalles redigere. Når brukeren tapper den, viser Windows Phone en liste over programmer som støtter fotoredigering. Etter å ha valgt en, forventer brukeren å bli omdirigert til en applikasjonsside der det valgte bildet kan redigeres.

Følgende deklarasjon skal legges til i manifestfilen:

  

Når denne funksjonen er aktivert, åpnes programmet med følgende URI:

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

Dette er Uri å avskjære for å omdirigere brukere til riktig side der du kan hente det valgte bildet ved hjelp av mappeID parameter, som vi gjorde for fotodelingsfunksjonen.

Rich Media Apps

Rich media apps er programmer som kan ta bilder og lagre dem i brukerens bibliotek. Når brukere åpner ett av disse bildene, vil de se:

  • Tekst under bildet med meldingen "fanget av" etterfulgt av appens navn
  • et nytt alternativ i programfeltet "open in", etterfulgt av appens navn

Denne tilnærmingen ligner på deling og redigering. Forskjellen er at integrering av rich media apps bare er tilgjengelig for bilder tatt i programmet, mens redigering og deling av funksjoner er tilgjengelig for hvert bilde, uansett hvordan de ble tatt.

Følgende deklarasjon skal legges til i manifestet for å aktivere integrering av innholdsapplikasjoner med rike medier:

  

I dette scenariet åpnes applikasjonen med følgende URI:

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

Som du ser, er URI alltid den samme; Hvilke endringer er verdien av Handling parameter-i dette tilfellet, RichMediaEdit.

Dette er URIen du trenger å fange opp med UriMapper gjennomføring. Du må omdirigere brukere til en side av programmet som kan administrere det valgte bildet.

Konklusjon

I denne opplæringen har vi lært mange måter å lage et flott multimedieprogram for Windows Phone av:

  • integrere kamerafunksjoner for å ta bilder og ta opp videoer
  • samhandle med mediebiblioteket for å få tilgang til bilder og lyd
  • integrere med den opprinnelige kameraopplevelsen for å gi brukerne tilgang til avanserte funksjoner direkte i Photos Hub

Denne opplæringen representerer et kapittel fra Windows Phone 8 Succinctly, en gratis eBook fra teamet ved Syncfusion.