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

Imal Kumarage
Imal Kumarage

Follow

Jul 9, 2020 – 3 min read

Foto von henry perks auf Unsplash

Location Ortung und Überwachung haben in der modernen Anwendungsentwicklung einen Aufschwung erlebt, da verschiedene Dienste wie Uber in hohem Maße auf Standortdienste angewiesen sind, die Konsistenz und Genauigkeit erfordern. Da Unternehmen und Konzerne Standortinformationen und die Überwachung ihrer verschiedenen Anlagen benötigen, ist die Bereitstellung umfassender Standortlösungen für viele Entwickler eine schwierige Wissenschaft.

Die wachsende Nachfrage nach einem bequemen Standortdienst erkennend, hat Google die Fused Location Provider API eingeführt. Dieser Artikel wird sich auf die Verwendung der API konzentrieren, um den Echtzeit-Standort eines Benutzers mit einer Android-Anwendung zu verfolgen und anhand eines Beispiels die Schönheit der API zu demonstrieren.

Die API konzentriert sich auf die Bereitstellung von Standortinformationen unter Verwendung einer Kombination aus GPS, Wi-Fi und internen Sensoren eines Geräts. Das Hauptargument ist, dass sie auf der Grundlage der bereitgestellten Anforderungsparameter entscheidet, in welcher Kombination diese drei Ressourcen verwendet werden. In diesem Zusammenhang wird die Verwaltung dieser Ressourcen vom Entwickler abstrahiert.

Ein einfacher Anwendungsfall zur Demonstration der Leistungsfähigkeit der API ist die Verfolgung der Bewegung einer Person, die sich auf ein Gebäude zubewegt, es betritt und dann wieder verlässt. In diesem Szenario funktioniert der GPS-Dienst gut, wenn sich die Person im Freien befindet. Sobald die Person jedoch das Gebäude betritt, kann das GPS-Signal abfallen. Der Fused Location Provider behandelt das oben beschriebene Szenario, indem er den Standort im Freien über GPS verfolgt, und wenn das GPS-Signal innerhalb des Gebäudes abfällt, nutzt er Wi-Fi. Während des Umschaltvorgangs von GPS auf Wi-Fi werden die internen Sensoren des Geräts zur Vorhersage der Bewegung verwendet, um einen reibungsloseren Übergang zu ermöglichen. Auf diese Weise ist die Verwaltung der verfügbaren Ressourcen zur Bereitstellung zuverlässiger Standortdienste mit geringem Batterieverbrauch die wahre Stärke der API.

Die Integration der API in Ihre Android-Anwendung ist ein einfacher Prozess. In diesem Beispiel gehen wir die notwendigen Schritte durch, um eine einfache Anwendung zur Standortverfolgung zu erstellen.

Erstellen Sie zunächst ein Android-Projekt in Android Studio und stellen Sie in der Build.gradle-Datei stellen Sie sicher, dass die folgende Abhängigkeit vorhanden ist:

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

Zweitens müssen Sie in der Manifest-Datei entweder die Fine- oder die Coarse-Standortberechtigung bereitstellen, indem Sie den folgenden Ausschnitt hinzufügen:

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

Nun erstellen Sie Instanzen von FusedLocationProviderClient, LocationRequest und LocationCallBack in Ihrer Aktivität.

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

Das LocationRequest-Objekt wird verwendet, um eine Standortanfrage in Übereinstimmung mit den Parametern unseres Anwendungsfalls zu erstellen, indem Details wie die Aktualisierungshäufigkeit, der Genauigkeitsgrad und die Batterieleistung angegeben werden. Erstellen Sie eine Methode, um die Standortanforderung basierend auf den gewünschten Parametern zu erstellen. Im Folgenden finden Sie ein Beispiel:

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

Wenn das locationRequest-Objekt und die locationCallBack-Objekte initialisiert sind, fordern Sie Standortdaten an, indem Sie die requestLocationUpdates-Methode des FusedLocationProviderClient aufrufen. Übergeben Sie die Objekte locationRequest und locationCallback als Parameter.

FusedLocationProviderClient.requestLocationUpdates
(
locationRequest,
locationCallback,
null
);

Auf der Grundlage der durch die Anforderung definierten Parameter stellt die API weiterhin relevante Standortinformationen bereit, die für zahlreiche Funktionen wie Standortüberwachung und Geschwindigkeitsverfolgung in Echtzeit genutzt werden können.

Die Fused Location Provider API bietet eine bequeme Methode zur Verwaltung aller zugrundeliegenden Standorttechnologien, indem sie deren Innenleben vom Entwickler abstrahiert und High-Level-Methoden zur Spezifizierung der Qualität und Genauigkeit der benötigten Dienste bereitstellt.

Was hier erforscht wird, ist nur ein Bruchteil dessen, was die API bietet, und Google hat eine umfassende Dokumentation bereitgestellt, die verwendet werden kann, um in Zukunft vielfältige und robuste Anwendungen zu erstellen. Folgen Sie dem unten stehenden Link, um loszulegen:

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

Leave a Reply