Hjem Sosiale medier Android App Utvikling: Hvordan komme i gang med plassering - dummies

Android App Utvikling: Hvordan komme i gang med plassering - dummies

Innholdsfortegnelse:

Video: The Third Industrial Revolution: A Radical New Sharing Economy 2024

Video: The Third Industrial Revolution: A Radical New Sharing Economy 2024
Anonim

Mange Android-apper kan gi en god fordel for brukerne ved å bringe plassering i sine brukeropplevelser. Enten det er noe så enkelt som å vise brukerne sin plassering på et kart eller noe mer komplisert, for eksempel å gi GPS-baserte bakgrunnsvarsler, er det ofte noe som brukere forventer å legge til plasseringstjenester i appen din.

Det er mange måter du kan legge til plassering på Android-appene dine. I Lollipop er noen av de vanligste

  • Vis brukerens nåværende by eller gateadresse. Dette kalles omvendt geokoding.

  • Spor brukerens plassering aktivt, for eksempel når du viser brukerens plassering på et kart.

  • Sett opp en geofence for å få varsel når en bruker kommer eller forlater en plassering.

  • Spor brukernes plassering for å utføre aktivitetsgjenkjenning og avgjøre om de går, sykler eller kjører.

  • Finn ut om en bruker er i nærheten av en iBeacon ved hjelp av Bluetooth.

Denne artikkelen viser deg en av de vanligste bruksområder for plassering, som er å overvåke brukernes plassering og vise deres nåværende gateadresse til dem i en TextView.

Du må gjøre fire ting for å konfigurere steder i appen din:

  1. Oppdater byggekonfigurasjonen din.

  2. Åpne en tilkobling til Google Play.

  3. Abonner på posisjonsoppdateringer.

  4. Vis brukerens adresse.

Slik oppdaterer du konfigurasjonskonfigurasjonen din

Android har et eldre sett med Location APIs innebygd i operativsystemet under android. plasseringspakke. Disse APIene blir ikke lenger vedlikeholdt, så du bør bruke de nye API-ene for Google Play-tjenester for å få brukerens plassering i stedet.

For å legge til Google Play Services Location API til prosjektet ditt, legg følgende avhengighet i byggingen din. config-fil:

avhengigheter { kompilere ' com. Google. android. gms: play-services-location: 6. 5. 87 ' }

Deretter legger du til følgende i AndroidManifest. xml:

 " android. Tillatelse. ACCESS_COARSE_LOCATION " />  " android.tillatelse. ACCESS_FINE_LOCATION " />  " com. Google. Android.gms. Versjon " android: verdi = " @ heltall / google_play_services_version " />

Tillatelsen ACCESS_COARSE_LOCATION bruker Wi-Fi og informasjon om celletårn, når det er tilgjengelig, for å gi plasseringsoppdateringer omtrent på størrelsen på en byblokk. ACCESS_FINE_LOCATION-tillatelsen kan gi deg mye høyere oppløsninginformasjon ved hjelp av telefonens GPS, men på bekostning av større batteriforbruk.Hvis appen din trenger bare grov plassering, kan det hende du synes det er fornuftig å be om bare ACCESS_COARSE_LOCATION-tillatelsen, men egentlig de fleste apper vil ha begge tillatelsene.

Du bør vanligvis be om begge rettigheter fordi du vil bruke en LocationProvider som heter FusedLocationProvider, som automatisk velger mellom Wi-Fi, celtårn og GPS-stedleverandører for å gi deg den beste nøyaktigheten til laveste pris for batteriet. Hvis du vet at du aldri trenger bra beliggenhet, kan du vurdere å fjerne ACCESS_FINE_LOCATION-tillatelsen, men vær klar over at appen din kanskje ikke fungerer bra på steder som ikke har celtårn eller Wi-Fi-tilgang.

Metadata-taggen er nødvendig når du bruker Google Play-tjenestebiblioteket.

Slik åpner du en forbindelse til Google Play

Plasseringsgrensesnittene er ganske enkle, men for å bruke dem må du konfigurere Google Play Services APIer, og de er litt mer kompliserte å bruke.

For å opprette en forbindelse til Google Play-tjenestene, legg til følgende for aktiviteten eller fragmentet ditt:

// Google API-klienten, for plasseringstjenester GoogleApiClient googleApiClient; @Override public void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); googleApiClient = ny GoogleApiClient. Builder (getActivity ()). addConnectionCallbacks (dette). addOnConnectionFailedListener (dette). addApi (LocationServices. API). bygge(); …} @Override public void onStart () {super. onStart (); GoogleApiClient. koble(); } @Override public void onStop () { googleApiClient. koble fra(); super. onStop ();}

Denne koden oppretter et nytt GoogleApiClient-objekt i din onCreate () for å koble til Google Play-tjenester, og det forsøker å koble til i onStart () og koble fra i onStop (). GoogleApiClient trenger et tilbakeringingsobjekt som den kan informere når en tilkobling er opprettet, så du må legge til tilbakeringinger til aktiviteten eller fragmentet ditt. Du kan legge tilbakeringingene til TaskEditFragment til en aktivitet av fragment.

offentlig klasse TaskEditFragment utvider fragmenteringsverktøy ConnectionCallbacks, OnConnectionFailedListener { @Override offentlig tomgang påkoblet (Bundle connectionHint) { // Koblet til Google Play tjenester! // Dette er hvor du vil begynne å spørre om sted // oppdateringer. } @Override Offentliggjøring påConnectionSuspended (int årsak) { // Google Play-tilkoblingen er avbrutt. // Deaktiver eventuelle brukergrensesnittkomponenter som er avhengige av Google // APIer til onConnected () kalles. // // Dette eksemplet trenger ikke ' t å gjøre noe her. } @Override offentlig ugyldig påConnectionFailed (ConnectionResult resultat) { // Denne tilbakekallingen er viktig for å håndtere feil // som kan oppstå under forsøk på å koble til > // Google. // // Hvis appen din vant ' t fungerer riktig uten sted // oppdateringer, er det viktig å håndtere tilkobling // feil feil.Se // // utvikler. android. com / google / auth / api-klient. html // for mer informasjon om hvordan du håndterer feil når // kobler til Google. // // Plasseringsinformasjon er valgfritt for denne appen, så // tilkoblingsfeil kan sikkert ignoreres her. }} Gratulerer! Du har nå satt opp en tilkobling til Google Play Services som automatisk koble fra når aktiviteten eller fragmentet ditt er stoppet. Det neste trinnet er å be om posisjonsoppdateringer.

Slik abonnerer du på posisjonsoppdateringer

Du har kommet gjennom den harde delen. Når du har en vellykket forbindelse til Google Play Services, kan du begynne å lytte etter oppdateringer av plasseringer.

Du må først fortelle lokaliseringsgrensesnittet hvor ofte og hvor nøyaktig du vil at stedoppdateringene skal være. Hvis du må vise brukerens nåværende posisjon til dem på et kart, vil du kanskje ha svært nøyaktige og raske oppdateringer, slik at brukerne kan se hvor de er når de beveger seg. De fleste apper trenger sannsynligvis mindre hyppige oppdateringer, og det er det du vil bruke i dette eksemplet.

Legg til følgende felt i fragmentet eller aktiviteten din:

// LocationRequest definerer hvor ofte vi trenger plassering // oppdateringer LocationRequest locationRequest = new LocationRequest (). setInterval (30000). setPriority (LocationRequest. PRIORITY_BALANCED_POWER_ACCURACY);

Denne plasseringenRequest er satt opp for å be om nye plasseringsoppdateringer omtrent hvert 30. sekund, og for å forsøke å balansere god nøyaktighet med anstendig strømforbruk. Hvis du vil ha lavere batteriforbruk, kan du prøve PRIORITY_LOW_POWER, eller hvis du vil ha høyere nøyaktighet, kan du prøve PRIORITY_HIGH_ACCURACY. Du kan til og med bruke PRIORITY_NO_POWER for apper som oppdateres svært sjeldent i bakgrunnen, og vil bare piggy-back av plasseringene oppdateringer som andre apper ber om! Sjekk ut LocationRequest på Android Developer-siden for mer informasjon om de ulike alternativene du kan bruke.

For å begynne å lytte til lokaliseringsoppdateringer, legg til følgende i metoden onConnected () du nettopp har opprettet:

@Override public void onConnected (Bundle connectionHint) {// Koblet til Google Play-tjenester! // Start abonnere på stedoppdateringer

FusedLocationApi. requestLocationUpdates (googleApiClient,

locationRequest, dette); } Dette ber FusedLocationApi å begynne å sende applokasjonsoppdateringene dine ved hjelp av LocationRequest du nettopp har konfigurert. For at det skal fungere, må du imidlertid gi et tilbakeringingsobjekt som kan motta oppdateringsoppdateringene. Legg til LocationListener-grensesnittet til aktiviteten eller fragmentet, og legg deretter til metoden onLocationChanged () slik: TaskEditFragment for offentlig klasse utvider Fragment implementerer ConnectionCallbacks, OnConnectionFailedListener, com. Google. android. gram. plassering. LocationListener

{

@Override Offentlig tomgang onLocationChanged (sluttplasseringssted) { Toast. makeText (getActivity (), sted. toString (), Toast. LENGTH_LONG). forestilling(); }} For øvrig, hvis alt du bryr deg om, er brukerens nåværende beliggenhet, og du bryr deg ikke om å holde den oppdatert, sjekk ut FusedLocationApi.getLastLocation (), som fjerner behovet for LocationListener-grensesnittet. Nå, hvis du kjører aktiviteten din, bør du se en Toast-melding som skriver ut brukerens nåværende sted. Å kunne se deres GPS-koordinat er egentlig ikke alt som er nyttig for brukerne av seg selv, men la oss bruke deres plassering for å finne ut deres nåværende adresse og vise den til dem.

Slik viser du brukerens adresse

Android har en innebygd API kalt Geocoder for å slå opp en brukers adresse fra hans eller hennes GPS koordinater (og omvendt).

Det er ganske enkelt å bruke. Den eneste fangen er at fordi det gjør en nettverksforespørsel til Google på gjeldende tråd, er det opp til deg å sørge for at du bare kjører den på bakgrunns tråden (slik at du ikke forårsaker en henge på hovedbruddstråden på sakte nettverk).

Legg til følgende for din aktivitet eller fragment:

Geocoder geocoder; @Override public void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); … geocoder = ny Geocoder (getActivity ());} @Override public void onLocationChanged (sluttplasseringssted) {// Spør google for adressen til stedet. // Dette kan ta en stund, så gjør det i en AsyncTask. ny AsyncTask () {@Overtrid beskyttet Adress doInBackground (Void [] params) {prøv {List adresser = geocoder. getFromLocation (plassering. getLatitude (), sted. getLongitude (), 1); hvis (adresser! = null && adresser. størrelse ()> 0)

returadresser. få (0);

} fangst (IOException e) {

// ignorert } retur null; } // Utført på UI-tråden @Override beskyttet tomt påPostExecute (Adressadresse) { hvis (adresse! = Null) { Streng s = adresse. getThoroughfare (); hvis (s! = Null) Toast. makeText (getActivity (), s, Toast. LENGTH_LONG). forestilling(); } } }. henrette(); } Denne koden legger til et Geocoder-felt i aktiviteten eller fragmentet, initialiserer den i onCreate (), og bruker den i onLocationChanged () for å finne adressen for gjeldende plassering. Deretter vises en Toast-melding med "hovedveien" for adressen, for eksempel "600 West Chicago Avenue. "Adresseobjektet returnert av Geocoder er rik på informasjon; sjekk ut javadocs for detaljer om hva annet du kan vise.

Og med det, har du omtrent alt du trenger å vite om å abonnere på brukerens nåværende posisjon fra en Android-aktivitet eller -fragment
.
Android App Utvikling: Hvordan komme i gang med plassering - dummies

Redaktørens valg

Bruk skjermfeltet til å endre QuickBooks 2014 Rapporter - dummies

Bruk skjermfeltet til å endre QuickBooks 2014 Rapporter - dummies

Skjermbildet i QuickBooks Modify Report dialogboksen lar deg kontrollere rapportintervalldatoen, rapportgrunnlaget, kolonnene og en annen formatering. Bokstavene Rapporter datoområde - Datoer, Fra og Til - gjør det samme som Datoer, Fra og Til bokser i Rapportvinduet. Disse boksene lar ...

Bruk skjermfeltet til å modifisere QuickBooks 2013 Rapporter - dummies

Bruk skjermfeltet til å modifisere QuickBooks 2013 Rapporter - dummies

Hvis du klikker Tilpass rapport, QuickBooks viser dialogboksen Endre rapport, som du kan bruke til å tilpasse en rapport. Når du tilpasser en rapport, endrer du rapportens utseende, layout og informasjonen som den oppsummerer. Dialogboksen Endre rapport ser annerledes ut for ulike rapporttyper. Likevel, hvis du ser forbi ...

Bruk fanen Filtre til å modifisere QuickBooks 2014 Rapporter - dummies

Bruk fanen Filtre til å modifisere QuickBooks 2014 Rapporter - dummies

Filtrene kategorien er trolig den mest interessante og en nyttig kategori som er levert av dialogboksen QuickBooks Modify Report. Filtre-fanen lar deg sette opp filtre som du kan bruke til å angi hvilken informasjon som oppsummeres i rapporten. For å bruke Filtrer-fanen velger du først feltet du vil ha ...

Redaktørens valg

Administrere Cloud Computing Resources - dummies

Administrere Cloud Computing Resources - dummies

I teorien bør cloud computing-tjenester ikke være forskjellig fra ressursene i din eget miljø, bortsett fra at de bor eksternt. Ideelt sett har du en komplett visning av cloud computing-ressursene du bruker i dag, eller vil kanskje bruke i fremtiden. I de fleste skymiljøer kan kunden bare få tilgang til ...

Tips for Going Cloud med datanettverkene dine - dummies

Tips for Going Cloud med datanettverkene dine - dummies

Beregning med datanettverket ditt kan være, hva skal du gjøre for å ta nettverket ditt mot skyen? Her er noen anbefalinger: Ikke stole på en dårlig Internett-tilkobling. Først og fremst, før du tar noen av nettverksoperasjonene i skyen, gjør du ...

Nettverkstjenester levert gjennom Cloud Computing - dummies

Nettverkstjenester levert gjennom Cloud Computing - dummies

Tre forskjellige typer nettverkstjenester kan leveres via skyen: applikasjoner , plattformer og tjenester (infrastruktur). I de følgende avsnittene beskrives disse tre typer skyttjenester i større detalj. Programmer i skyen Vanligvis kalt Software as a Service (SaaS), fullt funksjonelle applikasjoner kan leveres via skyen. En av ...

Redaktørens valg

10 Hadoop Ressurser verdt en bokmerke - dummies

10 Hadoop Ressurser verdt en bokmerke - dummies

Følgende er ti fantastiske Hadoop-ressurser som er verdige til å skape en bokmerke i nettleseren din. Disse ressursene hjelper deg med å skape en livslang læringsplan for Hadoop. Sentralnervesystemet: Apache. org Apache Software Foundation (ASF) er det sentrale fellesskapet for open source-programvareprosjekter. Ikke bare et prosjekt kan være et Apache-prosjekt - ...

Data transformasjon i Hadoop - dummies

Data transformasjon i Hadoop - dummies

Ideen om Hadoop-inspirerte ETL motorer har fått mye trekkraft de siste årene. Hadoop er trods alt en fleksibel datalagrings- og behandlingsplattform som kan støtte store mengder data og operasjoner på dataene. Samtidig er det feiltolerant, og det gir mulighet for kapital- og programvarekostnad ...

Datablokker i Hadoop Distributed File System (HDFS) - dummier

Datablokker i Hadoop Distributed File System (HDFS) - dummier

Når du lagrer en fil i HDFS, bryter systemet det ned i et sett med individuelle blokker og lagrer disse blokkene i forskjellige slave noder i Hadoop-klyngen. Dette er en helt vanlig ting å gjøre, da alle filsystemer bryter filer ned i blokker før de lagres til disk. HDFS har ingen ...