Windows Phone 8 Succinctly: Integrering Med Drifts System

Windows Phone 8 Succinctly: Integrering med operativsystem
32
Del
Del
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 HardwareWindows Phone 8 Succinctly: multimedia applikasjoner

I denne opplæringen, skal vi utforske ulike måter å integrere vår søknad med de funksjonene som tilbys av Windows Phone-plattformen. Vi vil utforske lanseringer og choosers, lære å samhandle med kontakter og avtaler, og se hvordan du kan dra nytte av Kid Corner, en nyskapende funksjon introdusert for å la barna trygt bruke telefonen.

Raketter og Choosers

Når vi diskutert lagring tidligere i denne serien, vi introduserte begrepet isolerte programmer. På samme måte som lagring er isolert slik at du ikke får tilgang til data som er lagret av et annet program, er selve programmet isolert fra operativsystemet.

Den største fordelen med denne tilnærmingen er sikkerhet. Selv om et ondsinnet program er i stand til å passere sertifiseringsprosessen, vil det ikke ha muligheten til å gjøre mye skade fordi det ikke har direkte tilgang til operativsystemet. Men før eller senere, vil du trenger for å kommunisere med en av de mange Windows Phone funksjoner, som å sende en melding, ta en telefon, spille en sang, etc.

For alle disse scenariene, har rammeverket introdusert kastere og choosers, som er sett av APIer som krever en spesifikk oppgave fra operativsystemet. Når oppgaven er fullført, blir kontrollen returnert til applikasjonen.

Raketter er "ild og glemme" APIer. Du krever drift og ikke forvente noe i retur, for eksempel starte en telefonsamtale eller avspilling av video.

Choosers er vant til å få data fra en innfødt program, for eksempel kontakter fra People Hub -og importere den til din app

Alle kastere og choosers er tilgjengelig i Microsoft.Phone.Tasks navnerom og har samme problemet.

Hver rakett og velgeren er representert av en bestemt klasse.

Hvis nødvendig, sette deg noen egenskaper som brukes til å definere rakett eller Chooser innstillinger.

Med en velger, må du abonnere på Fullført hendelsen, som utløses når operasjonen er fullført

The Show () metoden er kalt til å utføre oppgaven

Note:.. Raketter og choosers kan ikke brukes til å overstyre den innebygde Windows Phone sikkerhetsmekanisme, slik at du ikke vil være i stand til å utføre operasjoner uten eksplisitt tillatelse fra brukeren.

I det følgende prøve, kan du se en bærerakett som sender en e-post med EmailComposeTask Klasse:
private void OnComposeMailClicked (objekt avsenderen, RoutedEventArgs e) {EmailComposeTask mailTask ​​= new EmailComposeTask (); mailTask.To = "[email protected]"; mailTask.Cc = "[email protected]"; mailTask.Subject = "Emne"; mailTask.Body = "Body"; mailTask.Show ();}

Følgende eksempel viser hvordan du bruker en velgeren. Vi kommer til å lagre en ny kontakt i Personer-huben bruker SaveContactTask klassen
private void OnSaveContactClicked (objekt avsenderen, RoutedEventArgs e) {SaveContactTask oppgave = new SaveContactTask (.); task.Completed + = task_Completed; task.FirstName = "John"; task.LastName = "Doe"; task.MobilePhone = "1234567890"; task.Show ();} void task_Completed (objekt avsenderen, SaveContactResult e) {if (e.TaskResult == TaskResult.OK) {MessageBox.Show ("Kontakten har blitt lagret"); }}

Hver chooser returnerer en TaskResult eiendom, med status for operasjonen. Det er viktig å kontrollere at status er TaskResult.OK før du går videre, fordi brukeren kunne ha avbrutt operasjonen

Følgende er en liste over alle tilgjengelige kastere.

  • MapsDirectionTask brukes til å åpne den opprinnelige kart-programmet og beregne en sti mellom to steder.

    MapsTask brukes til å åpne den innfødte Kart søknad sentrert på et bestemt sted.

    MapDownloaderTask brukes til å administrere offline maps støtte nye Windows Phone 8. Med denne oppgaven, vil du være i stand til å åpne siden Innstillinger brukes til å administrere de nedlastede kart.

    MapUpdaterTask brukes til å omdirigere brukeren til bestemte innstillinger for å sjekke for offline kart oppdateringer.

    ConnectionSettingsTask brukes for å få rask tilgang til forskjellige innstillinger sider for å administrere de forskjellige tilgjengelige tilkoblinger, som Wi-Fi, mobilnettet, eller Bluetooth.

    EmailComposeTask brukes til å utarbeide en e-post og sende den.

    MarketplaceDetailTask ​​brukes til å vise detaljsiden av en applikasjon på Windows Phone Store. Hvis du ikke oppgir søknaden ID, det vil åpne detaljsiden for den aktuelle applikasjonen.
  • MarketplaceHubTask brukes til å åpne butikken til en bestemt kategori.
  • MarketplaceReviewTask brukes til åpne siden i Windows Phone Store, hvor brukeren kan legge inn en anmeldelse for det gjeldende programmet.

    MarketplaceSearchTask brukes til å starte et søk etter et bestemt søkeord i Store.

    MediaPlayerLauncher brukes å spille av lyd eller en video ved hjelp av den interne Windows Phone-spiller. Den kan spille av både filer innebygd i Visual Studio-prosjektet og de som er lagret i lokal lagring.
  • PhoneCallTask ​​brukes til å starte en telefonsamtale.
  • ShareLinkTask brukes til å dele en link på et sosialt nettverk ved hjelp av Windows Phone innebygde sosiale funksjoner.

    ShareStatusTask brukes til å dele egendefinert status tekst på et sosialt nettverk.

    ShareMediaTask brukes til å dele et av bildene fra Photos Hub på et sosialt nettverk.

    SmsComposeTask brukes til å forberede en tekstmelding og sende den.

    WebBrowserTask brukes til å åpne en URI i Internet Explorer for Windows Phone.

    SaveAppointmentTask brukes til lagre en avtale på mors Kalender-applikasjonen

    Følgende er en liste over tilgjengelige choosers..

    AddressChooserTask brukes til å importere en kontaktadresse

    CameraCaptureTask brukes til å ta et bilde med det integrerte kameraet og importere det inn i programmet.

    EmailAddressChooserTask brukes til å importere en kontakt e-postadresse.

    PhoneNumberChooserTask brukes til å importere en kontaktens telefonnummer.

    PhotoChooserTask brukes til å importere et bilde fra Bilder-huben.

    SaveContactTask brukes til å lagre en ny kontakt i Personer-huben. Velger bare returnerer om operasjonen er fullført.

  • SaveEmailAddressTask brukes til å legge til en ny e-postadresse til en eksisterende eller ny kontakt. Velger bare returnerer om operasjonen er fullført.
  • SavePhoneNumberTask brukes til å legge et nytt telefonnummer til en eksisterende kontakt. Velger bare returnerer om operasjonen er fullført.
  • SaveRingtoneTask brukes til å lagre en ny ringetone (som kan være en del av prosjektet eller lagres på lokal lagring). Den returnerer om operasjonen er fullført.

    Får kontakter og avtaler

    Raketter allerede tilbyr en enkel måte å kommunisere med People Hub, men de alltid krever brukermedvirkning. De åpne People Hub og brukeren må velge hvilken kontakt som skal importeres.

    Men i visse situasjoner du trenger muligheten til å programma hente kontakter og avtaler for dataene. Windows Phone 7.5 innført noen nye APIer for å tilfredsstille dette kravet. Du må bare huske på at for å respektere Windows Phone sikkerhetsbegrensninger, disse APIene bare fungerer i skrivebeskyttet modus; vil du være i stand til å hente ut data, men ikke lagre den (senere i denne artikkelen, vil vi se at Windows Phone 8 har innført en måte å overstyre denne begrensningen).

    I tabellen nedenfor kan du se hvilke data du kan få tilgang basert på hvor kontaktene er lagret.
    Provider
    Kontakt Navn: Kontakt Picture
    Annen informasjon
    Calendar Appointments

    Device

    Yes

    Yes

    Yes

    Yes

    Outlook.com

    Yes

    Yes

    Yes

    Yes

    Exchange

    Yes

    Yes

    Yes

    Yes

    SIM

    Yes

    Yes

    Yes

    No

    Facebook

    Yes

    Yes

    Yes

    No

    Other sosiale nettverk

    Ingen

    Ingen

    Ingen

    Ingen

    Hvis du vil vite hvor dataene kommer fra, kan du bruke kontoer Eiendommen, som er en samling av de kontoene hvor informasjonen er lagret. Faktisk kan du ha informasjon for samme data delt på tvers av ulike kontoer.

    Arbeide med Kontakter

    er Hver kontakt representert ved kontakt klassen, som inneholder all informasjon om et kontakt, som Display, adresser, emailaddresses, bursdager, etc. (i utgangspunktet, all informasjon som du kan redigere når du oppretter en ny kontakt i Personer Hub)

    . Merk: For å tilgang til kontaktene, må du aktivere ID_CAP_CONTACTS alternativ i manifestfilen.

    Interaksjon med kontakter starter med Kontakter klasse som kan brukes til å utføre et søk ved hjelp av SearchAsync () metode. Metoden krever to parametre: søkeord og filteret til å søke. Det er å starte et søk på to måter:

    Et generisk søk: Nøkkelordet er ikke nødvendig siden du bare få alle kontaktene som svarer til det valgte filteret. Denne type søk som kan oppnås med to filtertyper:. FilterKind.PinnedToStart som returnerer bare kontaktene som brukeren har festet på Start-skjermen, og FilterKind.None som bare returnerer alle tilgjengelige kontakter

    Et søk for et bestemt felt: I dette tilfellet, søkeordet vil bli brukt basert på den valgte filteret. De tilgjengelige filtrene er Display, EmailAddress, og Phonenumber

    SearchAsync () metoden bruker en tilbakeringing tilnærming.; Når søket er ferdig, er et arrangement som heter SearchCompleted hevet.

    I det følgende prøve, kan du se en søke som ser for alle kontakter som heter John. Samlingen av hjemvendte kontakter presenteres for brukeren med en ListBox kontroll
    private void OnStartSearchClicked (objekt avsenderen, RoutedEventArgs e) {Kontakt kontakter = nye kontakter ().; contacts.SearchCompleted + = new Event < ContactsSearchEventArgs > (contacts_SearchCompleted); contacts.SearchAsync ("John", FilterKind.DisplayName, null);} void contacts_SearchCompleted (objekt avsenderen, ContactsSearchEventArgs e) {Contacts.ItemsSource = e.Results;}

    Tips: Hvis du ønsker å starte et søk for et annet felt som ikke er inkludert i de tilgjengelige filtre, må du få en liste over alle tilgjengelige kontakter ved hjelp av
    FilterKind.None
    og bruke et filter ved hjelp av en LINQ spørsmål. Forskjellen er at innebygde filtre er optimalisert for bedre ytelse, så sørg for å bruke en LINQ tilnærming bare hvis du trenger å søke etter noe annet enn et navn, e-postadresse eller telefonnummer felt.


    Arbeide med avtaler

    Å få data fra kalenderen fungerer på en svært lik måte: hver avtale er identifisert av Oppnevning klassen, som har egenskaper som emne, Status, Location, Starttime, og Endtime.

    Hvis du vil kommunisere med kalenderen, må du bruke Avtaler klasse som, i likhet med Kontakter klassen, bruker en metode som kalles SearchAsync () for å starte et søk og et arrangement som heter SearchCompleted å returnere resultatene.

    De to eneste nødvendige parameterne for å utføre et søk er startdato og sluttdato. Du får i returnere alle avtaler innenfor denne tidsrammen. Eventuelt kan du også angi et maksimalt antall resultater å returnere eller begrense søket til en bestemt konto.

    I følgende eksempel, vi tar alle avtalene som oppstår mellom dagens dato og dagen før, og vi viser dem ved hjelp av en ListBox kontroll
    private void OnStartSearchClicked (objekt avsenderen, RoutedEventArgs e) {Avtaler kalender = nye avtaler (.); calendar.SearchCompleted + = calendar_SearchCompleted; Datetime start = DateTime.Now.AddMonths (-1); Datetime end = DateTime.Now; calendar.SearchAsync (start, slutt, null);} void calendar_SearchCompleted (objekt avsenderen, AppointmentsSearchEventArgs e) {Calendar.ItemsSource = e.Results;}

    Tips: Den eneste måten å filtrere resultatene er etter startdato og sluttdato. Hvis du trenger å bruke flere filtre, må du utføre LINQ søk på resultatene som returneres av søkeoperasjonen.

    Et privat Kontakt Store for Applications
    < p> Den største begrensningen av kontaktene APIer vi har sett så langt er at vi bare er i stand til å lese data, ikke skriv det. Det er noen situasjoner der å ha muligheten til å legge til kontakter til People Hub uten å spørre brukeren om tillatelse er et krav, for eksempel et sosialt nettverk app som ønsker å legge til dine venner til kontaktlisten din, eller et synkroniseringsklient som trenger å lagre informasjon fra en tredjepart skytjeneste i kontaktboken.

    Windows Phone 8 har innført en ny klasse kalt ContactStore som representerer en privat kontakt bok for søknaden. Fra brukerens synspunkt, oppfører det seg som en vanlig kontakter kilde (som Outlook.com, Facebook eller Gmail). Brukeren vil kunne se kontaktene i People Hub, blandet med alle de andre vanlige kontakter.

    Fra en utvikler synspunkt, tilhører butikken til søknaden; du er fri til å lese og skrive data, men hver kontakt du oppretter vil være en del av din private kontakt bok, ikke telefonens kontaktliste. Dette betyr at hvis programmet er avinstallert, vil alle kontaktene gå tapt.

    ContactStore klassen tilhører Windows.Phone.PersonalInformation navnerom og det tilbyr en metode som kalles CreateOrOpenAsync (). Metoden har å bli kalt hver gang du trenger å samhandle med private kontakter boken. Hvis det ikke finnes, vil det bli opprettet; ellers vil det bare bli åpnet

    Når du oppretter en ContactStore kan du angi hvordan operativsystemet skal gi tilgang til det.

    Den første parameteren type er ContactStoreSystemAccessMode, og det er brukes til å velge om programmet vil bare være i stand til å redigere kontakter som tilhører den private butikken (Skrivebeskyttet), eller brukeren vil også være i stand til å redigere informasjon ved hjelp av People Hub (Readwrite).

    Den andre parameteren er typen er ContactStoreApplicationAccessMode, og det er brukt til å velge om andre tredjepartsprogrammer skal ha tilgang til all informasjon om våre kontakter (skrivebeskyttet) eller kun de viktigste, som navn og bilde (LimitedReadOnly).

    Eksemplet nedenfor viser koden som kreves for å opprette en ny privat butikken:
    privat async void OnCreateStoreClicked (objekt avsenderen, RoutedEventArgs e) {ContactStore butikken = avvente ContactStore.CreateOrOpenAsync (ContactStoreSystemAccessMode.ReadWrite, ContactStoreApplicationAccessMode.ReadOnly );}

    Tips: Når du har opprettet en egen butikk, kan du ikke endre tillatelsene du har definert, slik at du alltid må ringe
    CreateOrOpenAsync ()
    metode med de samme parametrene.

    Opprette Kontakt

    En kontakt er definert av StoredContact klassen, som er litt forskjellig fra kontakt klassen vi har sett tidligere. I dette tilfellet, de eneste egenskapene som er direkte eksponert er givenname og familienavn. Alle de andre egenskapene kan nås ved å ringe GetPropertiesAsync () metoden i StoredContact klassen, som returnerer en samling av type ordbok < streng, objekt >.

    Hvert element av samlingen er identifisert av en nøkkel ( navnet på kontakten eiendom) og et objekt (verdien). Å hjelpe utviklere tilgang til egenskapene, er alle tilgjengelige nøkler lagret i en enum objekt kalt KnownContactProperties. I følgende eksempel, bruker vi nøkkelen KnowContactProperties.Email å lagre brukerens e-postadresse.
    Privat async void OnCreateStoreClicked (objekt avsenderen, RoutedEventArgs e) {ContactStore butikken = avvente ContactStore.CreateOrOpenAsync (ContactStoreSystemAccessMode.ReadWrite, ContactStoreApplicationAccessMode .ReadOnly); StoredContact kontakt = ny StoredContact (butikk); contact.GivenName = "Matteo"; contact.FamilyName = "Pagani"; IDictionary < streng, objekt > properties = avvente contact.GetPropertiesAsync (); properties.Add (KnownContactProperties.Email, "[email protected]"); avvente contact.SaveAsync ();}

    Tips: Siden
    ContactStore
    er en ordbok, to verdiene kan ikke ha samme nøkkel. Før du legger til en ny eiendom til kontakten, må du sørge for at det ikke finnes ennå; ellers må du oppdatere den eksisterende.

    StoredContact klassen støtter også en måte å lagre custom ved å åpne de utvidede lokaler etter en GetExtendedPropertiesAsync () -metoden. Det fungerer som standard egenskaper, bortsett fra at eiendommen nøkkelen er helt tilpasset. Disse slags egenskaper vil ikke bli vist i People Hub siden Windows Phone ikke vet hvordan man skal håndtere dem, men de kan brukes av din søknad.

    I følgende eksempel, legger vi nye tilpassede informasjon kalt MVP Kategori:
    privat async void OnCreateStoreClicked (objekt avsenderen, RoutedEventArgs e) {ContactStore butikken = avvente ContactStore.CreateOrOpenAsync (ContactStoreSystemAccessMode.ReadWrite, ContactStoreApplicationAccessMode.ReadOnly); StoredContact kontakt = ny StoredContact (butikk); contact.GivenName = "Matteo"; contact.FamilyName = "Pagani"; IDictionary < streng, objekt > ExtendedProperties = avvente contact.GetExtendedPropertiesAsync (); extendedProperties.Add ("MVP Kategori", "Windows Phone Development"); avvente contact.SaveAsync ();}
    Søke etter kontakter

    Søke kontakter i privat kontakt boken er litt vanskelig fordi det er ingen direkte måte å søke på en kontakt for et bestemt felt

    Søk blir utført ved hjelp av ContactQueryResult klassen, som er opprettet ved å ringe CreateContactQuery () metoden i ContactStore objektet. De eneste tilgjengelige operasjoner er GetContactsAsync (), som returnerer alle kontaktene, og GetContactCountAsync (), som returnerer antall tilgjengelige kontakter.

    Du kan også definere på forhånd hvilke felt du skal jobbe med, men du har fortsatt å bruke GetPropertiesAsync () metode for å utvinne de riktige verdiene. La oss se hvordan det fungerer i følgende eksempel, der vi ser etter en kontakt som har e-postadressen er [email protected]:
    privat async void OnSearchContactClicked (objekt avsenderen, RoutedEventArgs e) {ContactStore butikken = avvente ContactStore .CreateOrOpenAsync (ContactStoreSystemAccessMode.ReadWrite, ContactStoreApplicationAccessMode.ReadOnly); ContactQueryOptions alternativer = nye ContactQueryOptions (); options.DesiredFields.Add (KnownContactProperties.Email); ContactQueryResult resultat = store.CreateContactQuery (opsjoner); IReadOnlyList < StoredContact > Contact = avvente result.GetContactsAsync (); foreach (StoredContact kontakt i Contact) {IDictionary < streng, objekt > properties = avvente contact.GetPropertiesAsync (); if (properties.ContainsKey (KnownContactProperties.Email) & & eiendommer [KnownContactProperties.Email] .ToString () == "[email protected]") {MessageBox.Show («Kontakt funnet!"); }}}

    Du kan definere hvilke felt du er interessert i ved å opprette en ny ContactQueryOptions protestere og legge den til DesiredFields samlingen. Deretter kan du passere ContactQueryOptions objekt som parameter når du oppretter ContactQueryResult en. Som du kan se, definere feltene er ikke nok til å få ønsket resultat. Vi har fortsatt å spørre hver kontakt med GetPropertiesAsync () metode for å se om informasjonsverdien er den vi leter etter.

    Formålet med ContactQueryOptions klassen er å forberede de neste spørre driften slik at de kan utføres raskere

    Oppdatere og slette informasjon

    Oppdatere en kontakt er oppnådd på samme måte som å skape ny:. etter at du har hentet den kontakten du vil redigere, må du endre nødvendig informasjon og ringe SaveAsync () metoden igjen, som i følgende eksempel:
    privat async void OnSearchContactClicked (objekt avsenderen, RoutedEventArgs e) {ContactStore butikken = avvente ContactStore.CreateOrOpenAsync (ContactStoreSystemAccessMode.ReadWrite, ContactStoreApplicationAccessMode. Skrivebeskyttet); ContactQueryOptions alternativer = nye ContactQueryOptions (); options.DesiredFields.Add (KnownContactProperties.Email); ContactQueryResult resultat = store.CreateContactQuery (opsjoner); IReadOnlyList < StoredContact > Contact = avvente result.GetContactsAsync (); foreach (StoredContact kontakt i Contact) {IDictionary < streng, objekt > properties = avvente contact.GetPropertiesAsync (); if (properties.ContainsKey (KnownContactProperties.Email) & & eiendommer [KnownContactProperties.Email] .ToString () == "[email protected]") {egenskaper [KnownContactProperties.Email] = "[email protected]"; avvente contact.SaveAsync (); }}}

    Etter at vi har hentet brukeren som har e-postadressen er [email protected], endrer vi den til [email protected], og lagre det.

    Sletting fungerer på en lignende måte, bortsett fra at du må forholde seg til kontaktens ID, som er en unik identifikator som tildeles automatisk ved butikken (du kan ikke sette den, kan du bare lese det). Når du har hentet den kontakten du vil slette, må du ringe DeleteContactAsync () metoden på ContactStore objekt, passerer som parameter kontakten ID, som er lagret i Id eiendommen av StoredContact klassen.

    privat async void OnSearchContactClicked (objekt avsenderen, RoutedEventArgs e) {ContactStore butikken = avvente ContactStore.CreateOrOpenAsync (ContactStoreSystemAccessMode.ReadWrite, ContactStoreApplicationAccessMode.ReadOnly); ContactQueryOptions alternativer = nye ContactQueryOptions (); options.DesiredFields.Add (KnownContactProperties.Email); ContactQueryResult resultat = store.CreateContactQuery (opsjoner); IReadOnlyList < StoredContact > Contact = avvente result.GetContactsAsync (); foreach (StoredContact kontakt i Contact) {IDictionary < streng, objekt > properties = avvente contact.GetPropertiesAsync (); if (properties.ContainsKey (KnownContactProperties.Email) & & eiendommer [KnownContactProperties.Email] .ToString () == "[email protected]") {avvente store.DeleteContactAsync (contact.Id); }}}

    I forrige prøven, etter at vi har hentet kontakten med e-postadressen [email protected], vi sletter den ved hjelp av sin unike identifikator.

    Takle Ekstern synkronisering

    Når du arbeider med tilpassede kontakt kilder, vi vanligvis ikke bare administrere lokale kontakter, men data som er synkronisert med en ekstern tjeneste i stedet. I dette scenariet, må du holde styr på fjern identifikator for kontakten, som vil være forskjellig fra den lokale ene siden, som tidligere nevnt, er det automatisk generert og kan ikke stilles.

    For dette scenariet , den StoredContact klassen har en egenskap kalt RemoteId å lagre slik informasjon. Å ha en RemoteId forenkler også søketjenestene vi har sett før. Den ContactStore klasse, faktisk tilbyr en metode som kalles FindContactByRemoteIdAsync (), som er i stand til å hente en bestemt kontakt basert på fjern ID som vist i følgende eksempel:
    privat async void OnFindButtonClicked (objekt avsenderen, RoutedEventArgs e) {ContactStore butikken = avvente ContactStore.CreateOrOpenAsync (ContactStoreSystemAccessMode.ReadWrite, ContactStoreApplicationAccessMode.ReadOnly); string myRemoteId = "2 918"; RemoteIdHelper remoteHelper = new RemoteIdHelper (); string taggedRemoteId = avvente remoteHelper.GetTaggedRemoteId (butikk, myRemoteId); StoredContact kontakt = avvente store.FindContactByRemoteIdAsync (taggedRemoteId);}

    Det er en viktig forutsetning for å huske på: det RemoteId boligens verdi bør være unik over alle programmer installert på telefonen som bruker en privat kontakt bok; ellers, vil du få et unntak.

    I denne artikkelen publisert av Microsoft, kan du se en implementering av en klasse kalt RemoteIdHelper som tilbyr noen metoder for å legge tilfeldig informasjon til den eksterne ID (ved hjelp av en GUID) til sørge for at det er unikt.

    Benytte seg av Kid Corner

    Kid Corner er en interessant og nyskapende funksjon introdusert i Windows Phone 8 som er spesielt nyttig for foreldre med små barn . I utgangspunktet er det en sandkasse at vi kan tilpasse. Vi kan bestemme hvilke apps, spill, bilder, videoer og musikk kan nås.

    Som utviklere, er vi i stand til å vite når en app kjører i Kid Corner modus. På denne måten kan vi tilpasse opplevelsen å unngå å gi upassende innhold, for eksempel delingsfunksjoner

    Å dra nytte av denne funksjonen er lett.; vi bare sjekke Modes eiendommen av ApplicationProfile klassen, som tilhører Windows.Phone.ApplicationModel navnerom. Når den er satt til standard, er programmet kjører som normalt. Hvis den er satt til Alternate, det kjører i Kid Corner modus.
    Private void OnCheckStatusClicked (objekt avsenderen, RoutedEventArgs e) {if (ApplicationProfile.Modes == ApplicationProfileModes.Default) {MessageBox.Show ("Programmet er kjører i normalmodus. "); } Else {MessageBox.Show ("Programmet kjører i Kid Corner modus."); }}
    Tale APIer: La oss snakke med søknaden

    Tale APIer er en av de mest interessante nye funksjoner i Windows Phone 8. Fra et brukersynspunkt, er vokale egenskaper forvaltes Innstillinger-siden. Tale delen lar brukere konfigurere alle de viktigste innstillingene som stemmen type, men mest av alt, er det brukt til å sette opp det språket de ønsker å bruke for de taletjenester. Vanligvis er det satt med det samme språket i brukergrensesnittet, og brukerne har muligheten til å endre den ved å laste ned og installere en ny stemme pack. Det er viktig å forstå hvordan taletjenester er konfigurert, fordi i søknaden din, vil du kunne bruke talegjenkjenning kun for språk som er installert av brukeren.

    Formålet med taletjenester er å legge vokal anerkjennelse støtte i programmene dine på følgende måter:.

    Aktiver brukere å snakke kommandoer til å samhandle med søknaden, slik som å åpne den og utføre en oppgave

    Aktiver tekst-til- tale funksjoner slik at programmet er i stand til å lese teksten til brukerne.

    Aktiver tekstgjenkjenning, slik at brukerne kan skrive inn tekst ved å diktere den i stedet for å skrive det.

    I denne delen vi vil undersøke de grunnleggende kravene for å gjennomføre alle tre modi i programmet.

    Talekommandoer

    Talekommandoer er en måte å starte din søknad og utføre en bestemt oppgave, uavhengig av hva brukeren gjør. De aktiveres ved å trykke og holde inne startknappen. Windows Phone har innebygd støtte for mange talekommandoer, som å starte en telefonsamtale, dikterer e-post, søke via Bing, og mer

    Brukeren har rett og slett å si kommandoen.; hvis det er vellykket gjenkjent, vil søknaden bli åpnet, og som utviklere, vil vi få litt informasjon for å forstå hvilken kommando er gitt, slik at vi kan omdirigere brukeren til riktig side eller utføre en bestemt operasjon.

    Talekommandoer er basert på VCD filer, som er XML-filer som er inkludert i prosjektet. Ved hjelp av en spesiell syntaks, vil du være i stand til å definere alle kommandoene du ønsker å støtte i din søknad og hvordan programmet skal oppføre seg når de brukes. Disse filene er opprinnelig støttet av Visual Studio. Hvis du høyreklikker på prosjektet og velg Legg til nytt element, vil du finne en mal som heter VoiceCommandDefinition i Windows Phone delen

    Følgende kodeeksempel er hva en VCD fil ser slik ut:.

    <? xml version = "1.0" encoding = "utf-8" >? < VoiceCommands xmlns = "http://schemas.microsoft.com/voicecommands/1.0" > < CommandSet xml: lang = "det" Name = "NotesCommandSet" > < CommandPrefix > Mine notater < /CommandPrefix > < Eksempel > Åpne notatene mine og legge til et nytt notat < /Eksempel > < Command Name = "AddNote" > < Eksempel > legge til et nytt notat < /Eksempel > < ListenFor > [og] legge til [a] nytt notat < /ListenFor > < ListenFor > [og] lage [a] nytt notat < /ListenFor > < Tilbakemelding > Jeg legger til et nytt notat ... < /Tilbakemelding > < Naviger Target = "/AddNote.xaml" /> < /Command > < /CommandSet > < /VoiceCommands >

    En VCD fil kan inneholde en eller flere CommandSet noder, som er identifisert av et navn og et bestemt språk (xml: lang attributt). Den andre egenskap er den viktigste. Din søknad vil støtte talekommandoer bare for språkene du har inkludert i CommandSet i VCD fil (talekommandoene 'språket er definert av brukere i Innstillinger-siden). Du kan ha flere CommandSet noder som støtter flere språk.

    Hver CommandSet kan ha en CommandPrefix, som er den teksten som skal leses høyt av brukerne til å begynne å sende kommandoer til søknaden vår. Hvis man ikke er spesifisert, vil navnet på programmet automatisk brukes. Denne egenskapen er nyttig hvis du ønsker å lokalisere kommandoen eller om programmets tittel er for komplisert å uttale. Du kan også legge til et eksempel tag, som inneholder den teksten som vises av dialogboksen Windows Phone for å hjelpe brukerne med å forstå hva slags kommandoer de kan bruke.

    Så, inne i en CommandSet, du kan legge opptil 100 kommandoer identifiserte av Command tag. Hver kommando har følgende egenskaper:.

  • Et unikt navn, som er satt i Navn-attributtet

    Eksempel tag viser brukere eksempelteksten for den aktuelle kommandoen
    <. li> ListenFor inneholder teksten som skal leses høyt for å aktivere kommandoen. Opp til ti ListenFor koder kan angis for en enkel kommando for å dekke variasjoner av teksten. Du kan også legge til valgfrie ord inni hakeparenteser. I forrige prøven, kan AddNote kommando aktiveres ved å uttale både "legge til et nytt notat" eller "og legge nytt notat."
  • Feedback er teksten opplest av Windows Phone å informere brukerne om at det har forstått kommando og behandler den.

    NavigateTarget kan brukes til å tilpasse navigasjon flyt av søknaden. Hvis vi ikke sett den, vil søknaden bli åpnet til hovedsiden som standard. Ellers, som i den forrige prøven, kan vi omdirigere brukeren til en bestemt side. Of course, i begge tilfeller vil vi få informasjon om det muntlige kommando; vi får se hvordan man skal håndtere dem senere.

    Når vi har fullført VCD definisjon, er vi klare til å bruke det i søknaden vår.

    Merk: For å bruke taletjenester, må du aktivere ID_CAP_SPEECH_RECOGNITION alternativ i manifestfilen

    Kommandoer er innebygd i en Windows Phone applikasjon ved hjelp av en klasse som heter VoiceCommandService, som. tilhører Windows.Phone.Speech.VoiceCommands navnerom. URI:

    /MainPage.xaml?voiceCommandName=AddNote&reco=My%20notes%20create%20a%20new%20note

    The command:

    /MainPage.xaml?voiceCommandName=OpenNote&reco=My%20notes%20open%20a%20new%20note&number=2

    Using gå i stykker; } gå i stykker; < element > < element >