Reaaliaikainen sijainnin seuranta Googlen Fused Location Provider API:n avulla

Imal Kumarage
Imal Kumarage

Follow

9.7, 2020 – 3 min read

Kuvan on ottanut henry perks on Unsplash

Location paikannus ja seuranta ovat kokeneet voimakkaan nousun nykyaikaisessa sovelluskehityksessä, sillä erilaiset palvelut, kuten Uber, tukeutuvat vahvasti sijaintipalveluihin, jotka edellyttävät johdonmukaisuutta ja tarkkuutta. Kun yritykset ja yhtiöt vaativat sijaintitietoja ja eri omaisuuseriensä seurantaa, kattavien sijaintiratkaisujen tuottaminen on ollut monille kehittäjille hankala tiede.

Tunnistaessaan kasvavan kysynnän kätevälle sijaintia tarjoavalle palvelulle Google esitteli Fused Location Provider API:n. Tässä artikkelissa keskitytään API:n käyttämiseen käyttäjän reaaliaikaisen sijainnin seuraamiseen android-sovelluksella ja osoitetaan esimerkin avulla API:n kauneus.

Asiointirajapinta keskittyy sijaintitiedon tarjoamiseen laitteen GPS:n, Wi-Fi:n ja sisäisten antureiden yhdistelmää käyttäen. Tärkein myyntivaltti on, että se päättää, missä yhdistelmässä näitä kolmea resurssia käytetään annettujen pyyntöparametrien perusteella. Tässä yhteydessä näiden resurssien hallinta on abstrahoitu kehittäjältä.

Yksinkertainen käyttötapaus API:n kapasiteetin osoittamiseksi on rakennusta kohti kävelevän, sinne menevän ja sieltä poistuvan henkilön liikkeen seuraaminen. Tässä skenaariossa, kun henkilö on ulkona, GPS-palvelu toimii hyvin. Kun hän kuitenkin astuu rakennukseen, GPS-signaali saattaa laskea. Fused Location Provider hoitaa edellä mainitun skenaarion seuraamalla sijaintia ulkona GPS:n avulla, ja kun GPS-signaali heikkenee rakennuksessa, se käyttää Wi-Fi-yhteyttä. GPS:stä Wi-Fi-yhteyteen siirtymisen aikana käytetään laitteen sisäisiä antureita liikkeen ennustamiseen, jotta siirtyminen olisi sujuvampaa. Tällä tavoin käytettävissä olevien resurssien hallinta luotettavien sijaintipalveluiden tarjoamiseksi akkukestävällä tavalla on API:n todellinen voima.

Asiointirajapinnan integroiminen android-sovellukseesi on yksinkertainen prosessi. Tässä esimerkissä käymme läpi tarvittavat vaiheet, joita tarvitaan yksinkertaisen sijainninseurantasovelluksen rakentamiseen.

Luo ensin android-projekti Android Studiossa ja sovelluksen buildissa.gradle-tiedoston sisällä varmista, että seuraava riippuvuus on läsnä:

dependencies{
implementation 'com.google.android.gms:play-services:11.8.0'
}

Toiseksi, Manifest-tiedostossa sinun on annettava joko Fine- tai Coarse-paikannusoikeus lisäämällä alla oleva pätkä:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"
/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"
/>

Luo nyt aktiviteetissasi FusedLocationProviderClient-, LocationRequest- ja LocationCallBack-instanssit.

private FusedLocationProviderClient fusedLocationClient;private LocationRequest locationRequest;
private LocationCallback locationCallback;@Override
protected void onCreate(Bundle savedInstanceState) {
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
}
}

LocationRequest-oliota käytetään rakentamaan sijaintipyyntö käyttötapauksemme parametrien mukaisesti antamalla yksityiskohtia, kuten päivitystiheys, tarkkuustaso ja akun tehokkuus. Luo metodi, joka rakentaa sijaintipyynnön haluamiesi parametrien perusteella. Alla on esimerkki:

private void buildLocationRequest() {locationRequest = new LocationRequest(); locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); locationRequest.setInterval(100);locationRequest.setFastestInterval(100); locationRequest.setSmallestDisplacement(1);
}//Build the location callback object and obtain the location results //as demonstrated below:private void buildLocationCallBack() {
locationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
for (Location location: locationResult.getLocations()){
String latitude = String.valueOf(location.getLatitude());
String longitude = String.valueOf(location.getLongitude());
}
}
};
}

Kun locationRequest-objekti ja locationCallBack-objektit on alustettu, pyydä sijaintitietoja kutsumalla FusedLocationProviderClientin requestLocationUpdates-metodia. Siirrä locationRequest- ja locationCallback-objektit parametreina.

FusedLocationProviderClient.requestLocationUpdates
(
locationRequest,
locationCallback,
null
);

Pyynnössä määriteltyjen parametrien perusteella sovellusrajapinta tarjoaa edelleen asiaankuuluvia sijaintitietoja, joita voidaan hyödyntää lukuisten toimintojen, kuten sijainnin seurannan ja reaaliaikaisen nopeuden seurannan, suorittamiseen.

Fused Location Provider API tarjoaa kätevän menetelmän kaikkien taustalla olevien sijaintitekniikoiden hallintaan abstrahoimalla niiden sisäiset toiminnot kehittäjältä ja tarjoamalla korkean tason menetelmiä, joilla voidaan määritellä vaadittujen palveluiden laatu ja tarkkuus.

Tässä esitelty on vain murto-osa API:n tarjoamista mahdollisuuksista, ja Google on tarjonnut kattavan dokumentaation, jota voidaan käyttää monipuolisten ja vankkojen sovellusten rakentamiseen tulevaisuudessa. Pääset alkuun alla olevan linkin kautta:

https://developers.google.com/location-context/fused-location-provider

Leave a Reply