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

Imal Kumarage
Imal Kumarage

Follow

9 jul, 2020 – 3 min read

Photo by henry perks on Unsplash

Location tracking en monitoring zijn sterk toegenomen in de ontwikkeling van moderne toepassingen, waarbij verschillende diensten zoals Uber sterk afhankelijk zijn van locatiediensten die consistentie en nauwkeurigheid vereisen. Nu bedrijven en ondernemingen locatie-informatie nodig hebben en hun verschillende bedrijfsmiddelen moeten bewaken, is het leveren van uitgebreide locatie-oplossingen voor veel ontwikkelaars een lastige wetenschap.

Doordat Google de groeiende vraag naar een handige locatieverschaffende dienst zag, introduceerde het de Fused Location Provider API. Dit artikel zal zich richten op het gebruik van de API om de real-time locatie van een gebruiker te volgen met behulp van een Android-applicatie en door middel van het voorbeeld de schoonheid van de API te demonstreren.

De API richt zich op het verstrekken van locatie-informatie met behulp van een combinatie van GPS, Wi-Fi en interne sensoren van een apparaat. Het belangrijkste verkoopargument is dat het beslist in welke combinatie deze drie middelen moeten worden gebruikt op basis van de opgegeven verzoekparameters. In deze context is het beheer van deze bronnen geabstraheerd van de ontwikkelaar.

Een eenvoudige use case om de capaciteit van de API te demonstreren is het volgen van de beweging van een individu dat naar een gebouw loopt, het gebouw binnengaat en het vervolgens verlaat. In dit scenario, wanneer de persoon buiten is, zal de GPS-dienst goed functioneren. Wanneer hij echter het gebouw binnengaat, kan het GPS-signaal wegvallen. De Fused Location Provider handelt het bovenstaande scenario af door de locatie buitenshuis te traceren via GPS en wanneer het GPS-signaal binnen het gebouw wegvalt, gebruik te maken van Wi-Fi. Tijdens het overschakelen van GPS naar Wi-Fi worden de interne sensoren van het apparaat gebruikt om de beweging te voorspellen, zodat de overgang soepeler verloopt. Op deze manier is het beheer van de beschikbare middelen om betrouwbare locatiediensten te bieden op een batterij-efficiënte manier de ware kracht van de API.

Het integreren van de API in uw Android applicatie is een eenvoudig proces. In dit voorbeeld zullen we door de noodzakelijke stappen lopen die nodig zijn om een eenvoudige locatie-tracking applicatie te bouwen.

Maak eerst een android project in Android Studio en binnen de applicatie’s build.gradle bestand, zorg ervoor dat de volgende afhankelijkheid aanwezig is:

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

Tweede, binnen het Manifest-bestand moet u ofwel de Fine of Coarse locatie toestemming geven door het toevoegen van de onderstaande snippet:

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

Nu, maak instanties van FusedLocationProviderClient, LocationRequest en LocationCallBack in uw activiteit.

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

Het LocationRequest-object wordt gebruikt om een locatieverzoek op te bouwen in overeenstemming met de parameters van onze use-case door details te verstrekken zoals de updatefrequentie, het nauwkeurigheidsniveau en de batterij-efficiëntie. Maak een methode om het locatieverzoek op te bouwen op basis van de gewenste parameters. Een voorbeeld wordt hieronder gegeven:

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

Als het locationRequest object en de locationCallBack objecten eenmaal zijn geïnitialiseerd, vraag dan locatiegegevens op door de FusedLocationProviderClient’s requestLocationUpdates methode aan te roepen. Geef de locationRequest en locationCallback objecten door als parameters.

FusedLocationProviderClient.requestLocationUpdates
(
locationRequest,
locationCallback,
null
);

Gebaseerd op de parameters gedefinieerd door het verzoek zal de API doorgaan met het verstrekken van relevante locatie-informatie die kan worden gebruikt om tal van functies uit te voeren, zoals locatie monitoring en real-time snelheid tracking.

De Fused Location Provider API biedt een handige methode om alle onderliggende locatietechnologieën te beheren door hun innerlijke werking te abstraheren van de ontwikkelaar en methoden op hoog niveau te bieden om de kwaliteit en nauwkeurigheid van de vereiste services te specificeren.

Wat hier wordt verkend, is slechts een fractie van wat de API biedt, en Google heeft uitgebreide documentatie verstrekt die kan worden gebruikt om in de toekomst diverse en robuuste toepassingen te bouwen. Volg de onderstaande link om aan de slag te gaan:

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

Leave a Reply