Windows Phone 8 Succinctly: Multimedia Applications

Windows Phone 8 Succinctly: Multimedieprogrammer
36
Del
en
Del

Dette Cyber ​​mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av
Dette innlegget er en del av en serie som heter Windows Phone 8 Succinctly.Windows Phone 8 Succinctly. Integrering med drifts SystemWindows Phone 8 Succinctly: Fliser, Påminnelser, og Multitasking

I denne opplæringen, vi 're kommer til å fokusere på hvordan du kan opprette en multimedie applikasjon for Windows Phone ved å utnytte enhetens kamera, i samspill med mediebiblioteket, og utforske mulighetene i Bilder-huben.

Bruk av kameraet

Kameraet er en av de viktigste funksjonene i Windows Phone-enheter, spesielt takket være Nokia, som har skapt noen av de beste kameratelefoner på markedet.

Som utviklere er vi i stand til å integrere kameraet erfaring inn i vårt program slik at brukerne kan ta bilder og redigere dem direkte i programmet. I tillegg, med Lens App funksjon vi vil diskutere senere, er det enda lettere å lage applikasjoner som kan erstatte den innfødte kamera erfaring

. Merk: Hvis du vil kommunisere med kameraet, trenger du å aktivere ID_CAP_IS_CAMERA evne i manifestfilen.

Det første trinnet er å opprette et område på siden der vi kan vise bildet tatt opp av kameraet. Vi kommer til å bruke VideoBrush, som er en av de innfødte XAML børster som er i stand til å bygge inn en video. Vi vil bruke den som en bakgrunn av et lerret kontroll, som vist i følgende eksempel:
< Canvas height = "400" width = "400" > < Canvas.Background > < VideoBrush x: Name = "video" Stretch = "UniformToFill" > < VideoBrush.RelativeTransform > < CompositeTransform x: Name = "previewTransform" CenterX = centery = /> "fem." "5". < /VideoBrush.RelativeTransform> < /VideoBrush > < /Canvas.Background> < /Canvas >

Legg merke til CompositeTransform som har blitt brukt; dens formål er å holde riktig retning av videoen, basert på kameraets orientering.

Ta bilder

Nå som vi har et sted å vise levende bilder, kan vi bruke APIene som er inkludert i Windows.Phone.Media.Capture navnerom. Spesielt er klassen tilgjengelig for å ta bilder kalt PhotoCaptureDevice (senere vi får se en annen klasse for opptak av video)

Følgende kode er et eksempel initialisering.
Beskyttet ride async void OnNavigatedTo ( NavigationEventArgs e) {Størrelse oppløsning = PhotoCaptureDevice.GetAvailableCaptureResolutions (CameraSensorLocation.Back) .Først (); PhotoCaptureDevice kamera = avvente PhotoCaptureDevice.OpenAsync (CameraSensorLocation.Back, oppløsning); video.SetSource (kamera); previewTransform.Rotation = camera.SensorRotationInDegrees;}

Før oppstart av den levende fôr, må vi gjøre to valg: hvilket kamera du skal bruke, og hvilke av de tilgjengelige ressursene vi ønsker å bruke

Vi oppnår dette. ved å ringe GetAvailableCaptureResolutions () metoden på PhotoCaptureDevice klassen, passerer som parameter et CameraSensorLocation objekt som representerer kameraet vi kommer til å bruke. Metoden returnerer en samling av de støttede oppløsninger, som er identifisert av Størrelsesklasse

. Tips: Det er trygt å bruke den forrige koden fordi hver Windows Phone-enheten har et kamera på baksiden. Hvis vi ønsker å samhandle med frontkameraet i stedet, er det bedre å sjekke om det er tilgjengelig først siden ikke alle Windows Phone-enheter har en. For å gjøre dette, kan du bruke
AvailableSensorLocation
eiendommen av
PhotoCaptureDevice
klassen, som er en samling av alle kameraer som støttes.

Når vi har bestemt deg for hvilken oppløsning du skal bruke, vi kan gi det som en parameter (sammen igjen med det valgte kameraet) til OpenAsync () metoden i PhotoCaptureDevice klassen. Det vil returnere en PhotoCaptureDevice objekt som inneholder live feed; vi rett og slett nødt til å gi det til SetSource () metoden i VideoBrush.

Som allerede nevnt, vi håndterer kameraet retningen med omleggingen vi har brukt til VideoBrush: vi setter Rotation bruker SensorRotationInDegrees eiendommen som inneholder den gjeldende vinkel rotasjon

. Merk: Du kan få en feilmelding når du prøver å passere en
PhotoCaptureDevice
objekt som et parameter i
SetSource ()
metoden i
VideoBrush
. I så fall må du legge den
Microsoft.Devices
navnerom til klassen din, siden den inneholder en utvidelse metode for
SetSource () Anmeldelser metode som støtter
PhotoCaptureDevice
klassen.

Nå som programmet vil bare vise live feed av kameraet på skjermen. Det neste trinnet er å ta bildet.

Teknikken brukes av API er å skape en sekvens av rammer og lagre dem som en bekk. Dessverre, det er en begrensning i dagens SDK: Du vil bare være i stand til å ta ett bilde om gangen, slik at du bare kunne bruke sekvenser laget av en ramme
privat async void OnTakePhotoClicked (. objekt avsenderen, RoutedEventArgs e) {CameraCaptureSequence cameraCaptureSequence = camera.CreateCaptureSequence (1); Memory stream = new Memory (); cameraCaptureSequence.Frames [0] .CaptureStream = stream.AsOutputStream (); avvente camera.PrepareCaptureSequenceAsync (cameraCaptureSequence); avvente cameraCaptureSequence.StartCaptureAsync (); stream.Seek (0, SeekOrigin.Begin); Mediabiblioteket ditt bibliotek = ny mediabiblioteket ditt (); library.SavePictureToCameraRoll ("picture1.jpg", stream);}

Prosessen starter med en CameraCaptureSequence objekt, som representerer fangst stream. På grunn av den single-picutre begrensning tidligere nevnt, vil du være i stand til å ringe CreateCaptureSequence () metoden i PhotoCaptureDevice klasse bare ved å sende en som parameter.

Av samme grunn, vi bare skal å jobbe med det første bildet i sekvensen som er lagret inne i Frames samlingen. Den CaptureStream eiendom av rammen må settes med strømmen som vi skal bruke til å lagre bildet. I forrige prøven, bruker vi en Memory å lagre bildet i minnet. På denne måten kan vi lagre den senere i brukerens bilder Hub (spesielt, i Kamerarull-albumet)

. Merk: Hvis du vil kommunisere med
mediabiblioteket ditt
klasse må du aktivere ID_CAP_MEDIALIB_PHOTO evne i manifestfilen.

Du kan også tilpasse mange innstillinger på kameraet ved å ringe SetProperty () metoden på PhotoCaptureDevice objekt som krever to parametere: egenskapen å stille, og verdien å tildele. De tilgjengelige egenskaper er definert av to enumerators:. KnownCameraGeneralProperties, som inneholder de generelle kameraegenskaper og KnownCameraPhotoProperties, som inneholder fotospesifikke egenskaper

Noen egenskaper er skrivebeskyttet, så den eneste operasjonen du kan utføre er får sine verdier ved hjelp av GetProperty () -metoden.

I de følgende eksempler, bruker vi SetProperty () metoden for å stille inn blitsmodus og GetProperty () for å få informasjon om de aktuelle regionen tvinger telefoner til å spille en lyd når de tar et bilde
private void OnSetPropertiesClicked (objekt avsenderen, RoutedEventArgs e) {camera.SetProperty (KnownCameraPhotoProperties.FlashMode, FlashMode.RedEyeReduction.); bool isShutterSoundRequired = (bool) camera.GetProperty (KnownCameraGeneralProperties.IsShutterSoundRequiredForRegion);}

Merk at GetProperty () metoden returnerer alltid en generisk objekt, så du må kaste det manuelt i henhold til de egenskapene du spørring.

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

Bruke maskinvarekameraknapp

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

  • ShutterKeyPressed utløses når du trykker på knappen

    ShutterKeyReleased utløses når du slipper knappen.

    ShutterKeyHalfPressed utløses når knappen halvveis ned.

    I følgende eksempel, abonnere vi til ShutterKeyReleased begivenhet å ta et bilde og den ShutterKeyHalfPressed hendelsen til å bruke autofokusfunksjon
    offentlig kamera () {InitializeComponent (.); CameraButtons.ShutterKeyReleased + = CameraButtons_ShutterKeyReleased; CameraButtons.ShutterKeyHalfPressed + = CameraButtons_ShutterKeyHalfPressed;} async annullere CameraButtons_ShutterKeyHalfPressed (objekt avsenderen, EventArgs e) {venter camera.FocusAsync ();.} Void CameraButtons_ShutterKeyReleased (objekt avsenderen, EventArgs e) {//Ta bildet}
    spilt inn en video

    Prosessen med å spille inn en video er lik den vi brukte for å ta et bilde. I dette tilfellet skal vi bruke AudioVideoCaptureDevice klassen i stedet for PhotoCaptureDevice klassen. Som du kan se i følgende eksempel, er initialisering prosedyren den samme: vi bestemme hvilken oppløsning og kamera vi ønsker å bruke, og vi viser den returnerte live feed ved hjelp av en VideoBrush

    . Merk:. For å ta opp video, du trenger også å aktivere ID_CAP_MICROPHONE evne i manifestfilen
    beskyttet ride async void OnNavigatedTo (NavigationEventArgs e) {Størrelse oppløsning = AudioVideoCaptureDevice.GetAvailableCaptureResolutions (CameraSensorLocation.Back ).Først(); videoDevice = avvente AudioVideoCaptureDevice.OpenAsync (CameraSensorLocation.Back, oppløsning); video.SetSource (videoDevice); previewTransform.Rotation = videoDevice.SensorRotationInDegrees;}

    Spille inn en video er enda enklere ettersom AudioVideoCaptureDevice klassen eksponerer StartRecordingToStreamAsync () metoden, som bare krever at du oppgir hvor du vil lagre de registrerte dataene. Siden det er en video, trenger du også en måte å stoppe innspillingen; dette er formålet med StopRecordingAsync () -metoden

    I følgende eksempel, er opptaket lagres i en fil som er opprettet i lokal lagring.
    privat AudioVideoCaptureDevice videoDevice; privat IRandomAccessStream strøm; privat StorageFile fil, offentlig VideoRecording () {InitializeComponent ();} private async void OnRecordVideoClicked (objekt avsenderen, RoutedEventArgs e) {file = avvente ApplicationData.Current.LocalFolder.CreateFileAsync ("video.wmv", CreationCollisionOption.ReplaceExisting); stream = avvente file.OpenAsync (FileAccessMode.ReadWrite); videoDevice.StartRecordingToStreamAsync (stream);} private async void OnStopRecordingClicked (objekt avsenderen, RoutedEventArgs e) {avvente videoDevice.StopRecordingAsync (); avvente stream.FlushAsync ();}

    Du kan enkelt teste resultatet av operasjonen ved hjelp av MediaPlayerLauncher klasse å spille opptaket:
    private void OnPlayVideoClicked (objekt avsenderen, RoutedEventArgs e) {MediaPlayerLauncher launcher = ny MediaPlayerLauncher {Media = new Uri (file.Path, UriKind.Relative)}; launcher.Show ();}

    SDK tilbyr en bestemt liste over innstillingsmuligheter knyttet til videoopptak. De er tilgjengelige i KnownCameraAudioVideoProperties enumeratoren.

    samspill med mediebiblioteket

    Rammen har en klasse som heter mediabiblioteket, som kan brukes til å samhandle med brukeren mediebibliotek (bilder, musikk, etc.). La oss se hvordan du skal bruke den til å håndtere de mest vanlige scenarier

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

    Bilder fra

    mediabiblioteket klassen kan brukes til å få tilgang til bilder som er lagret i Bilder Hub, takket være Pictures samlingen. Det er en samling av bildeobjekter, der hver og en representerer et bilde som er lagret i Bilder-huben

    . Merk: Du må aktivere ID_CAP_MEDIALIB_PHOTO evne i manifestfilen for å få tilgang til bildene som er lagret i Bilder-huben

    Pictures samling gir tilgang til følgende album:.

    Kamerarull

    Lagrede Bilder fra < li> Skjerm

    kan ikke nås Alle andre album vises i People Hub som kommer fra eksterne tjenester som SkyDrive eller Facebook bruker mediabiblioteket klassen.

    Tips:
    mediabiblioteket
    klassen eksponerer en samling kalt
    SavedPictures
    , som inneholder kun de bildene som er lagret i Lagrede Pictures album.

    Hver Bilde objekt har noen egenskaper for å få tilgang til grunnleggende info, som navn, bredde og høyde. En meget viktig egenskap er Albumet, som inneholder henvisningen av albumet hvor bildet er lagret. I tillegg vil du kunne få tilgang til ulike bekker i tilfelle du ønsker å manipulere bildet eller vise det i søknaden:

    GetPicture () metoden returnerer strømmen av det opprinnelige bildet .

    GetThumbnail () metoden returnerer strømmen av miniatyr, som er en lav oppløsning versjon av det opprinnelige bildet.

    Hvis du legger til PhoneExtensions navnerom til klassen din, vil du være i stand til å bruke GetPreviewImage () -metoden, som returnerer et forhåndsvisningsbilde. Dens oppløsning og størrelse er mellom det originale bildet og miniatyr

    I følgende eksempel, genererer vi miniatyren av første tilgjengelige bildet i Kamerarull og vise det ved hjelp av et bilde kontroll.

    private void OnSetPhotoClicked (objekt avsenderen, RoutedEventArgs e) {mediabiblioteket bibliotek = ny mediabiblioteket ditt (); Bilde Bilde = library.Pictures.FirstOrDefault (x = > x.Album.Name == "Camera Roll"); if (bilde = null) {BitmapImage image = ny BitmapImage (); image.SetSource (picture.GetThumbnail ()); Thumbnail.Source = image; }}

    Tips: Hvis du vil kommunisere med
    mediabiblioteket
    klassen bruker emulator, må du åpne bilder Hub minst én gang; ellers vil du få en tom samling av bilder når du spør den
    Bilder fra eiendom.

    Med mediabiblioteket klassen, vil du også være i stand til å gjøre det motsatte: ta et bilde i søknaden din og lagre det i People Hub. Vi har allerede sett et eksempel når vi snakket om å integrere kameraet i søknaden vår; vi kan lagre bildet i Kamerarull (ved hjelp av SavePictureToCameraRoll () metode) eller i Lagrede Pictures album (ved hjelp av SavePicture () metoden). I begge tilfeller, de nødvendige parameterne er navnet på bildet og dens stream

    I det følgende prøve, laste vi et bilde fra Internett og lagre den i Lagrede Pictures album.
    privat async void OnDownloadPhotoClicked (objekt avsenderen, RoutedEventArgs e) {HttpClient klient = new HttpClient (); Stream stream = avvente client.GetStreamAsync ("http://www.syncfusion.com/Content/en-US/Home/Images/syncfusion-logo.png"); Mediabiblioteket ditt bibliotek = ny mediabiblioteket ditt (); library.SavePicture ("logo.jpg", stream);}
    Musikkanmeldelser

    mediabiblioteket klassen byr på mange muligheter for tilgang til musikk, men det er noen begrensninger som ikke er til stede når du arbeider med bilder.

    Merk: Du må aktivere ID_CAP_MEDIALIB_AUDIO evne i manifestfilen for å få tilgang til bilder som er lagret i Bilder-huben.

    Følgende samlinger er avslørt av mediabiblioteket klassen for å få tilgang til musikk:

    Album for å få tilgang til musikkalbum

    Songs for å få tilgang til. alle tilgjengelige sanger.

    sjangere for å få tilgang til de sangene gruppert etter sjanger.

    Spillelister for å få tilgang til spillelister.

    Hver sang er identifisert av Song klasse, som inneholder all felles informasjon om et musikkspor tatt direkte fra ID3 tag:. album, artist, tittel, TrackNumber, og så videre

    Dessverre, det er ingen tilgang til en sang strøm, slik at eneste måten å spille av spor er ved hjelp av Mediaplayer klassen, som er en del av Microsoft.XNA.Framework.Media navnerom. Denne klassen utsetter mange metoder for å samhandle med spor. Den Play () -metoden aksepterer som et parameter en Song objekt, hentet fra mediabiblioteket

    I følgende eksempel, reprodusere vi den første sangen i biblioteket.
    Private void OnPlaySong (objekt avsender, RoutedEventArgs e) {mediabiblioteket bibliotek = ny mediabiblioteket ditt (); Sang sangen = library.Songs.FirstOrDefault (); MediaPlayer.Play (sang);}

    En av de nye funksjonene introdusert i Windows Phone 8 lar deg lagre sanger som er lagret i programmets lokal lagring til mediebiblioteket, slik at den kan spilles av de innfødte Musikk + videoer Hub . Dette krever Microsoft.Xna.Framework.Media.PhoneExtensions navnerom som skal legges til din klasse
    privat async void OnDownloadMusicClicked (objekt avsenderen, RoutedEventArgs e) {mediabiblioteket bibliotek = ny mediabiblioteket ditt (.); SongMetadata metadata = new SongMetadata {AlbumName = "A rush av blod til hodet", ArtistName = "Coldplay", name = "Clocks"}; library.SaveSong (ny Uri ("song.mp3", UriKind.RelativeOrAbsolute), metadata, SaveSongOperation.CopyToLibrary);}

    SaveSong () metoden krever tre parametere, som vist i den forrige prøven:


    Stien av sangen for å lagre. Det er en relativ bane som peker til lokal lagring.

  • Sangen metadata, som er identifisert av SongMetadata klassen. Det er en valgfri parameter; hvis du passerer null, vil Windows Phone automatisk pakke ut ID3 informasjon fra filen.

    En SaveSongOperation objekt, som forteller mediebiblioteket hvis filen skal kopieres (CopyToLibrary) eller flyttes (MoveToLibrary), slik at det er slettet fra lagrings.

    Lens Apps

    Windows Phone 8 har introdusert nye funksjoner som er spesifikke for fotografiske applikasjoner. Noe av det mest interessante er kalt linse apps, som gjelder ulike filtre og effekter til bildene. Windows Phone tilbyr en måte å enkelt bytte mellom ulike kameraapplikasjoner å bruke filtre på fly.

    Lens apps er vanlige Windows Phone-programmer som samhandler med kameraet APIer vi brukte i begynnelsen av denne artikkelen. Forskjellen er at et objektiv app vises i objektiver delen av innfødte Kamera-appen; når brukere trykker på kameraknappen, er en spesialvisning med alle tilgjengelige linse apps vises. På denne måten kan de enkelt bytte til et annet program for å ta bildet.

    Integrasjon med linsene vise starter fra manifestfilen, som må redigeres manuelt ved å velge Vis koden alternativ i kontekstmenyen. Følgende kode er å bli lagt i Extension seksjonen:
    < Extensions > < Extension ExtensionName = "Camera_Capture_App" ConsumerID = "{5B04B775-356B-4AA0-AAF8-6491FFEA5631}" TaskID = "_ default" /> < /Extensions >

    Hver linse app trenger en bestemt ikon som vises i linsene vise. Ikoner blir automatisk hentet fra Eiendeler mappe basert på en navnekonvensjon. Et ikon må legges for hver støttet oppløsning ved hjelp av konvensjonene i tabellen nedenfor:

    Oppløsning

    Icon størrelse

    Filnavn

    480 × 800

    173 × 173

    Lens.Screen-WVGA.png

    768 × 1280

    277 × 277

    Lens. Screen-WXGA.png

    720 × 1 280

    259 × 259

    Lens.Screen-720p.png

    UriMapper klassen er nødvendig for å arbeide med linse apps. Faktisk er linse apps åpnes ved hjelp av en spesiell URI som må fanges opp og håndteres. Følgende kode er et eksempel Uri:
    /MainPage.xaml?Action=ViewfinderLaunch

    When dette Uri er mottatt, brukere bør bli omdirigert til programsiden som tar bildet. I følgende eksempel, kan du se en UriMapper implementering som omdirigerer brukerne til en side som heter Camera.xaml når applikasjonen åpnes fra objektivet visningen
    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; }}}
    Support Sharing

    Hvis du har utviklet et program som støtter deling av bilder som et sosialt nettverk klient, kan du integrere den i menyen Del av bildene Hub. Brukere kan finne dette alternativet i Application Bar i fotodetaljer.

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

    Vi må legge til følgende erklæring manuelt i Extensions delen.

    < Extensions > < Extension ExtensionName = "Photos_Extra_Share" ConsumerID = "{5B04B775-356B-4AA0-AAF8-6491FFEA5632}" TaskID = "_ default" /> < /Extensions >

    Når brukere velger vårt program fra listen, er det åpnet med følgende URI:

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

    Again, vi kan bruke en UriMapper implementering å omdirigere brukere til søknaden vår side som tilbyr delingsfunksjonen. Det er også viktig å bære FiledId parameter i denne siden; vi kommer til å trenge det å vite hvilke bilder som er valgt av brukeren.

    Eksemplet nedenfor viser en UriMapper implementering som bare erstatter navnet på den opprinnelige siden (MainPage.xaml) med navnet på måls (SharePage.xaml):
    public class MyUriMapper: UriMapperBase {public override Uri MapUri (Uri uri) {string tempUri = uri.ToString (); string mappedUri; if ((tempUri.Contains ("SharePhotoContent")) & & (tempUri.Contains ("mappeID"))) {//Omadresser til PhotoShare.xaml. mappedUri = tempUri.Replace ("Mainpage", "SharePage"); returnere ny Uri (mappedUri, UriKind.Relative); } Returnere uri; }}

    Etter å omdirigere brukeren til deling side, kan vi bruke en metode som kalles GetPictureFromToken () avslørt av mediabiblioteket klassen. Den aksepterer den unike bilde-ID som parameter og returnerer en referanse til Picture objekt som representerer valgt av brukeren bildet.

    Bildet ID er parameteren kalles mappeID som vi fikk i URI da programmet åpnet. I følgende eksempel, kan du se hvordan vi hente parameter ved hjelp av OnNavigatedTo hendelse som utløses når brukeren er omdirigert til deling siden, og bruke den til å vise det valgte bildet med et bilde kontroll.
    beskyttet ride void OnNavigatedTo (NavigationEventArgs e) {if (NavigationContext.QueryString.ContainsKey ("mappeID")) {string mappeID = NavigationContext.QueryString ["mappeID"]; Mediabiblioteket ditt bibliotek = ny mediabiblioteket ditt (); Bilde Bilde = library.GetPictureFromToken (mappeID); BitmapImage image = ny BitmapImage (); image.SetSource (picture.GetImage ()); ShareImage.Source = image; }}
    Annet Integration funksjoner

    Det finnes andre måter å integrere vår søknad med bilder Hub. Alle fungerer på samme måte:

    En erklæring må legges til manifestfilen

    applikasjonen åpnes ved hjelp av en spesiell Uri som du trenger for å fange opp med en UriMapper klasse..

    brukeren er omdirigert til en egen side der du kan hente det valgte bildet ved hjelp av mappeID parameter.

    List Søknad som et fotografisk App

    Dette er den enkleste integrasjon siden det bare viser programmet i Apps delen av Photos Hub. For å støtte det, du bare nødt til å legge til følgende erklæring i manifestfilen:
    < Extensions > < Extension ExtensionName = "Photos_Extra_Hub" ConsumerID = "{5B04B775-356B-4AA0-AAF8-6491FFEA5632}" TaskID = "_ default" /> < /Extensions >

    Ingenting annet er nødvendig siden denne typen integrasjon vil rett og slett inkluderer en hurtigkobling i Bilder-huben. Søknaden vil bli åpnet som normalt, som om den ble åpnet med hoved app ikonet.

    Integrering Med Rediger Option

    Et annet alternativ er tilgjengelig i Application Bar av fotodetaljsiden kalles redigering. Når brukeren tapper den, viser Windows Phone en liste over programmer som støtter bilderedigering. Etter å ha valgt en, forventer at brukeren kan bli omdirigert til en applikasjon side der det valgte bildet kan redigeres

    Følgende erklæring bør legges i manifestfilen.
    ≪ Extensions > < Extension ExtensionName = "Photos_Extra_Image_Editor" ConsumerID = "{5B04B775-356B-4AA0-AAF8-6491FFEA5632}" TaskID = "_ default" /> < /Extensions >

    Når denne funksjonen er aktivert, vil søknaden bli åpnet med følgende URI:

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

    This er den Uri å avskjære å omdirigere brukere til riktig side der du vil være i stand til å hente det valgte bildet ved hjelp av mappeID parameter, som vi gjorde for funksjonen deling av bilder.

    Rich Media Apps Anmeldelser

    Rich medier apps er programmer som er i stand til å ta bilder og lagre dem i brukerens bibliotek. Når brukere åpner en av disse bildene, vil de se:

    teksten under bildet med meldingen "tatt av" etterfulgt av appens navn

    et nytt alternativ i Application Bar kalt "åpne i" etterfulgt av appens navn

    Denne tilnærmingen er lik deling og redigering funksjoner. Forskjellen er at de rike medier apps integrering er bare tilgjengelig for bilder som er tatt i programmet, mens redigering og deling av funksjoner er tilgjengelige for hvert bilde, uavhengig av hvor de ble tatt.

    Følgende erklæring bør legges i manifestet for å aktivere rik media app integrering:
    < Extensions > < Extension ExtensionName = "Photos_Rich_Media_Edit" ConsumerID = "{5B04B775-356B-4AA0-AAF8-6491FFEA5632}" TaskID = "_ default" /> < /Extensions >

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

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

    As du kan se, URI er alltid den samme; hvilke endringer er verdien av handlingen parameter i dette tilfellet, RichMediaEdit.

    Dette er URI du trenger for å fange opp med din UriMapper gjennomføring. Du må omdirigere brukere til en side av søknaden som er i stand til å håndtere det valgte bildet.

    Konklusjon

    I denne opplæringen, vi har lært mange måter å lage en flott multimedia applikasjon for Windows Phone by:

    integrere kamerafunksjoner for å ta bilder og spille inn videoer

    samspill med media biblioteket for å få tilgang til bilder og lyd

    integrere med mors kamera erfaring til å gi brukerne tilgang til avanserte funksjoner direkte i Bilder-huben

    Denne opplæringen representerer et kapittel fra Windows Phone 8 Succinctly, en gratis eBok fra teamet på Syncfusion.