Real-Time Location Tracking Using Google’s Fused Location Provider API

Imal Kumarage
Imal Kumarage

Follow

9. jul, 2020 – 3 min read

Foto af henry perks på Unsplash

Location sporing og overvågning har oplevet en kraftig stigning i moderne applikationsudvikling med forskellige tjenester som Uber, der i høj grad er afhængige af lokaliseringstjenester, som kræver konsistens og nøjagtighed. Med virksomheder og selskaber, der kræver placeringsoplysninger og overvågning af deres forskellige aktiver, har det været en vanskelig videnskab for mange udviklere at levere omfattende placeringsløsninger.

Identificering af den stigende efterspørgsel efter en bekvem placeringstjeneste introducerede Google Fused Location Provider API. Denne artikel vil fokusere på at bruge API’et til at spore en brugers placering i realtid ved hjælp af en Android-applikation og gennem eksemplet demonstrere API’ets skønhed.

API’et fokuserer på at levere placeringsoplysninger ved hjælp af en kombination af en enheds GPS, Wi-Fi og interne sensorer. Det vigtigste salgsargument er, at det beslutter, i hvilken kombination disse tre ressourcer skal bruges på baggrund af de angivne anmodningsparametre. I denne sammenhæng er forvaltningen af disse ressourcer abstraheret fra udvikleren.

Et simpelt anvendelsestilfælde til at demonstrere API’ets kapacitet er sporing af bevægelsen af en person, der går mod en bygning, går ind i den og derefter forlader den. I dette scenarie, hvor personen befinder sig udendørs, vil GPS-tjenesten fungere godt. Men når han går ind i bygningen, kan GPS-signalet falde. Fused Location Provider håndterer ovenstående scenario ved at spore placeringen udendørs via GPS, og når GPS-signalet falder inden for bygningen, anvendes Wi-Fi. Under skiftet fra GPS til Wi-Fi anvendes enhedens interne sensorer til at forudsige bevægelsen for at sikre en glattere overgang. På denne måde er forvaltningen af de tilgængelige ressourcer til at levere pålidelige lokaliseringstjenester på en batteribesparende måde den sande styrke i API’et.

Integrering af API’et i din android-applikation er en enkel proces. I dette eksempel vil vi gennemgå de nødvendige trin, der kræves for at opbygge en simpel applikation til lokaliseringssporing.

Først skal du oprette et android-projekt i Android Studio og inden for applikationens build.gradle-filen skal du sikre, at følgende afhængighed er til stede:

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

For det andet skal du i Manifest-filen give enten Fine eller Coarse location permission ved at tilføje nedenstående uddrag:

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

Nu skal du oprette instanser af FusedLocationProviderClient, LocationRequest og LocationCallBack i din aktivitet.

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

Objektet LocationRequest bruges til at opbygge en lokationsanmodning i overensstemmelse med parametrene for vores use case ved at angive detaljer såsom opdateringsfrekvens, nøjagtighedsniveau og batterieeffektivitet. Opret en metode til at opbygge placeringsanmodningen ud fra dine ønskede parametre. Et eksempel er vist nedenfor:

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());
}
}
};
}

Når locationRequest-objektet og locationCallBack-objekterne er initialiseret, skal du anmode om lokaliseringsdata ved at kalde FusedLocationProviderClient’s requestLocationUpdates-metode. Overgiv locationRequest- og locationCallback-objekterne som parametre.

FusedLocationProviderClient.requestLocationUpdates
(
locationRequest,
locationCallback,
null
);

Baseret på de parametre, der er defineret af anmodningen, vil API’et fortsat levere relevante lokaliseringsoplysninger, der kan bruges til at udføre adskillige funktioner som f.eks. overvågning af placering og realtidshastighedssporing.

Den Fused Location Provider API giver en bekvem metode til at administrere alle underliggende lokationsteknologier ved at abstrahere deres indre funktioner fra udvikleren og give metoder på højt niveau til at specificere kvaliteten og nøjagtigheden af de krævede tjenester.

Det, der er udforsket her, er blot en brøkdel af, hvad API’et giver, og Google har leveret omfattende dokumentation, der kan bruges til at opbygge forskellige og robuste applikationer i fremtiden. Følg nedenstående link for at komme i gang:

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

Leave a Reply