Spårning av plats i realtid med hjälp av Googles Fused Location Provider API

Imal Kumarage
Imal Kumarage

Follow

9 juli, 2020 – 3 min read

Foto av henry perks på Unsplash

Ställe spårning och övervakning har fått ett uppsving i modern applikationsutveckling med olika tjänster som Uber som är starkt beroende av lokaliseringstjänster som kräver konsistens och noggrannhet. Med företag och bolag som kräver platsinformation och övervakning av sina olika tillgångar har det varit svårt för många utvecklare att leverera heltäckande lokaliseringslösningar.

Med tanke på den ökande efterfrågan på en bekväm tjänst som tillhandahåller lokalisering introducerade Google API:et för sammanslagna lokaliseringsleverantörer (Fused Location Provider API). Den här artikeln kommer att fokusera på att använda API:et för att spåra en användares plats i realtid med hjälp av en Android-applikation och genom exemplet demonstrera API:ets skönhet.

API:et fokuserar på att tillhandahålla platsinformation med hjälp av en kombination av en enhets GPS, Wi-Fi och interna sensorer. Det viktigaste försäljningsargumentet är att det bestämmer i vilken kombination dessa tre resurser ska användas baserat på de begärda parametrarna som tillhandahålls. I detta sammanhang är hanteringen av dessa resurser abstraherad från utvecklaren.

Ett enkelt användningsfall för att visa API:ets kapacitet är att spåra rörelsen hos en person som går mot en byggnad, går in i den och sedan lämnar den. I detta scenario, när personen befinner sig utomhus, kommer GPS-tjänsten att fungera bra. Men när han går in i byggnaden kan GPS-signalen sjunka. Fused Location Provider hanterar ovanstående scenario genom att spåra platsen utomhus via GPS och när GPS-signalen sjunker i byggnaden används Wi-Fi. Under växlingsprocessen från GPS till Wi-Fi används enhetens interna sensorer för att förutsäga rörelsen, för att ge en smidigare övergång. På detta sätt är det hanteringen av tillgängliga resurser för att tillhandahålla tillförlitliga lokaliseringstjänster på ett batterisnålt sätt som är den verkliga kraften i API:et.

Integrera API:et i din Android-applikation är en enkel process. I det här exemplet kommer vi att gå igenom de nödvändiga stegen som krävs för att bygga en enkel applikation för lokaliseringsspårning.

Först skapar du ett androidprojekt i Android Studio och inom applikationens build.gradle-filen se till att följande beroende finns:

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

För det andra måste du i Manifest-filen tillhandahålla antingen Fine eller Coarse location permission genom att lägga till följande stycke:

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

Nu skapar du instanser av FusedLocationProviderClient, LocationRequest och 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 används för att bygga upp en platsförfrågan i enlighet med parametrarna för vårt användningsfall genom att tillhandahålla detaljer som uppdateringsfrekvens, noggrannhetsnivå och batterieffektivitet. Skapa en metod för att bygga upp platsförfrågan utifrån dina önskade parametrar. Ett exempel ges nedan:

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 och locationCallBack-objekten har initialiserats begär du platsdata genom att anropa FusedLocationProviderClient’s requestLocationUpdates-metod. Överlämna locationRequest- och locationCallback-objekten som parametrar.

FusedLocationProviderClient.requestLocationUpdates
(
locationRequest,
locationCallback,
null
);

Baserat på de parametrar som definieras av begäran kommer API:et att fortsätta att tillhandahålla relevant lokaliseringsinformation som kan användas för att utföra många funktioner, t.ex. platsövervakning och hastighetsuppföljning i realtid.

Api:et för tillhandahållare av lokaliseringstjänster (Fused Location Provider API) erbjuder en praktisk metod för att hantera all underliggande lokaliseringsteknik genom att abstrahera deras inre arbete från utvecklaren och tillhandahålla metoder på hög nivå för att specificera kvaliteten och noggrannheten hos de tjänster som krävs.

Det som undersöks här är bara en bråkdel av vad API:et erbjuder, och Google har tillhandahållit en omfattande dokumentation som kan användas för att bygga mångsidiga och robusta tillämpningar i framtiden. Följ länken nedan för att komma igång:

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

Leave a Reply