Windows Phone 8 SDK Geolocation Services

Geolocation er et viktig aspekt av mobil utvikling. Heldigvis er det enkelt å finne brukerne på Windows Phone 8! Denne opplæringen vil vise deg hvordan det gjøres ved å demonstrere Geolocator klasse.


Opplæringsoversikt

Windows Phone SDK er en meget kraftig utviklingsplattform som lar utviklere lage flotte applikasjoner med Silverlight-rammen. Nylig oppgradering av SDK til versjon 8.0 (Windows Phone 8) gir en rekke endringer som gjør det enklere å utføre noen generiske oppgaver. Et av områdene som så en forbedring i Windows Phone 8, er Location API. I tidligere versjoner av Windows Phone SDK var det å få en brukeres nåværende sted litt ryddig, men den gjeldende teknikken for å gjøre dette har blitt polert og gjort litt mer direkte.

Den nye teknikken bruker Microsofts ASYNC-metallsamtale, noe som forbedrer ytelsen av applikasjoner mens du får tilgang til brukerens plassering. La oss dykke inn og se på denne nye måten å få tilgang til gjeldende plassering på Windows Phone 8.


Forutsetninger

For å forsøke denne opplæringen vil jeg anta at du har en grunnleggende forståelse av Windows Phone-plattformen. Jeg vil også gjerne tro at du har noen grunnleggende forståelse av XAML og C # siden dette er språket vi skal skrive vår søknad med. Du må også ha Visual Studio 2012 eller høyere med Windows Phone 8 SDK og en fungerende Windows Phone emulator installert på din lokale maskin. Du kan alternativt bruke en faktisk Windows Phone-enhet i stedet for emulatoren.


1. Lag et nytt prosjekt

Åpne Visual Studio og opprett et nytt Windows Phone-prosjekt med Fil -> Ny -> Prosjekt.

I vinduet til venstre i det nye prosjektvinduet må du velge Windows Phone-alternativet under underkategorien Visual C #. Velg Windows Phone App i hovedvinduet og oppgi prosjektet alt du vil, og klikk deretter OK når du er ferdig.



2. Oppsett brukergrensesnittet

Nå som vi har opprettet vår applikasjon, kan vi fokusere på vårt hovedmål - å angi brukerens nåværende posisjon og vise den på skjermen. Enkelt sagt, vår søknad skal bare ha to elementer, en knapp og en tekstblokk. Knappen ville være det vi ville klikke for å fortelle appen vår om å få tak i en brukeres nåværende posisjon, og TextBlock vil vise geokoordinatene for vår nåværende posisjon.

La oss gå videre og skape vårt enkle brukergrensesnitt. Bruk Visual Studio ToolBox til å dra og slippe en knapp og en tekstblokk hvor som helst på skjermen. På dette tidspunktet bør søknaden din ha en TextBlock og en knapp som en del av brukergrensesnittet.

Det skal se ut som dette:


Jeg vil sterkt anbefale deg å endre navnegenskapen til både knapp og tekstblokk for å være i samsvar med denne opplæringen. Angi navnet på knappen som MyButton og TextBlock for å være MyTextBlock fra ditt XAML kode vindu.

 

3. Legg til Geolocation Logic

På dette tidspunktet har vi vårt brukergrensesnitt klar og vi kan gå videre og begynne å skrive logikken for vår søknad. Dobbeltklikk på knappen fra designervisningen, og Visual Studio skal automatisk ta deg til kodesvisningen med en metode som allerede er opprettet.

 privat tomt MyButton_Click (objekt sender, RoutedEventArgs e) 

Denne genererte metoden er en delegert eller tilbakekallingsmetode for klikkhendelsen på knappen vår. Dette betyr at koden i denne metoden bare utføres når knappen vår er klikket. For å harmonere med vårt mål, vil vi sette koden som får vår nåværende posisjon innenfor denne metoden, siden vi vil at vår nåværende posisjon skal bestemmes når knappen vår er klikket. For å oppnå dette, skal vi bruke GeoLocator og GeoPosition-klassene.

GeoLocator-klassen hjelper til med å få vår nåværende posisjon og gjør alt samspillet med GPS / Nettverk og returnerer et GeoPosition-objekt. På den annen side gir GeoPosition-klassen oss mulighet til å konsumere de returnerte dataene som GeoLocator returnerer. I utgangspunktet tenk på GeoLocator som et forespørselsverktøy og GeoPosition-objektet som et svarverktøy. Disse klassene gir også plass til å tilpasse våre forespørsler og svar. For eksempel kan vi fortelle GeoLocator hvor nøyaktig (til nærmeste meter) vi vil at vår nåværende plassering skal være, og hvor raskt vi vil at vår nåværende posisjon skal spores.

Jeg har skrevet en metode som bidrar til å få vår nåværende plassering, og jeg vil forklare det i detalj litt senere. For nå legger du til følgende navneområdereferanse til din: Windows.Devices.Geolocation;. Deretter kopierer du kodestykket under og limer det inn i:

 private async void GetCurrentLocation ()  Geolocator locationFinder = ny Geolocator   DesiredAccuracyInMeters = 50, gewen DesiredAccuracy = PositionAccuracy.Default ; prøv Geoposition currentLocation = vent på locationFinder.GetGeopositionAsync (maximumAge: TimeSpan.FromSeconds (120), timeout: TimeSpan.FromSeconds (10)); String longitude = currentLocation.Coordinate.Longitude.ToString ("0.00"); String latitude = currentLocation.Coordinate.Latitude.ToString ("0.00"); MyTextBlock.Text = "Lang:" + lengdegrad + "Lat:" + breddegrad;  catch (UnauthorizedAccessException)   MessageBox.Show ("Og Unntak forekom");  

Denne metoden gjør alt arbeidet for oss og går fremover for å sette vår TextBlock-tekstegenskap for oss. La oss nøye undersøke hva metoden gjør.

For det første oppretter vi et nytt GeoLocator Object kalt locationFinder. Vi forteller så først hvor nøyaktig i meter vi ønsker at vår plassering skal være, og vi angir hvor nøyaktig vi vil ha resultatet.

 Geolocator locationFinder = ny Geolocator  DesiredAccuracyInMeters = 50, DesiredAccuracy = PositionAccuracy.Default ;

Deretter organiserer vi et GeoPosition-objekt som heter nåværende plassering innenfor en prøve / fangst blokk i tilfelle noen unntak. Vi tilordner det til det returnerte GeoPosition-objektet som GeoLocator-objektet returnerer ved hjelp av GetGeoPostionAsync metode.

 Geoposition currentLocation = venter stedFinder.GetGeopositionAsync (maximumAge: TimeSpan.FromSeconds (120), timeout: TimeSpan.FromSeconds (10)); String longitude = currentLocation.Coordinate.Longitude.ToString ("0.00"); String latitude = currentLocation.Coordinate.Latitude.ToString ("0.00");

Til slutt får vi vår returnerte lengdegrad og breddegrad og setter vår TextBlock for å vise disse verdiene.

 MyTextBlock.Text = "Lon:" + lengdegrad + "Lat:" + breddegrad;

Det er så enkelt! Det er noen flere ting å gjøre før vi tester vår søknad. Først må vi ringe vår GetCurrentLocation metode i delegatemetoden til vår knapp som ble opprettet for oss i utgangspunktet.

 privat tomt MyButton_Click (objekt sender, RoutedEventArgs e) GetCurrentLocation (); 

Dette betyr at når vi klikker på vår knapp, vår GetCurrentLocation Metoden vil utføre og vår nåværende posisjon vil bli hentet for oss.

Til slutt må vi be om tillatelse til å bruke lokaliserings-API på Windows Phone. Vi gjør dette ved å redigere vår manifestfil. I løsningene Utforsker, se etter en oppføring med tittelen Egenskaper, og veksle den for å se underdelene. Ett av undernavnene filnavnene skal være WMAppManifest.xml. Dobbeltklikk på dette, og du vil se en GUI med fire faner, en av disse har tittelen Capabilities. Velg den kategorien, og du bør se noe slikt:


Sjekk nå alternativet ID_CAP_LOCATION hvis deaktivert og lagre prosjektet ditt (CTRL + S). Med det gjort kan du lukke vinduet WMAppManifest.xml. Det vi nettopp har gjort, krever eksplisitt tillatelse til å tillate at Appen bruker Windows Phone GPS / Location-verktøyet. Med det gjort kan vi nå kjøre vår søknad for første gang!

Hvis du bruker en fysisk Windows-telefonenhet til testing, må du sørge for at Stedet er slått på i innstillingen og har en gyldig Internett-tilkobling via et Wifi- eller mobilnettverk. Dette er veldig viktig og obligatorisk for vår søknad til arbeid. Hvis du bruker en Windows Phone Emulator, må du også kontrollere at Plasseringen er aktivert også på Emulatoren, og at Internett-tilkoblingen er en fungerende.

For å starte programmet, se etter den grønne spillknappen på den visuelle studiomenyen, og velg emulatoren eller Enhetsalternativet hvis du bruker et håndsett. Kontroller at løsningskonfigurasjonen på høyre side av knappen er satt til Feilsøking.



4. Test appen

Klikk på den grønne knappen for å starte programmet. Appen skal starte og vise siden vi tegnet vårt brukergrensesnitt på. Nå klikker du på knappen for å kommando appen for å få våre nåværende posisjonskoordinater, og du bør bli presentert med et resultat som ser slik ut:



Konklusjon

Nå har du kanskje lagt merke til at vi har oppnådd det vi har satt opp for å oppnå, og vår nåværende posisjon blir vist til oss. Du kan se hvor lett det var å oppnå dette med en slik minimal programmering! Dette er en veldig enkel, men viktig operasjon i Windows Phone-utvikling. Du er velkommen til å leke med de tilpassbare innstillingene for GeoLocator og GeoPosition-klassene. Takk for at du leste!