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

Imal Kumarage
Imal Kumarage

Follow

Jul 9, 2020 – 3 min read

Photo by henry perks on Unsplash

Lokalizacja śledzenie i monitorowanie widział gwałtowny wzrost w rozwoju nowoczesnych aplikacji z różnych usług, takich jak Uber mocno opiera się na usługach lokalizacyjnych, które wymagają spójności i dokładności. Z firm i korporacji wymagających informacji o lokalizacji i monitorowania ich różnych aktywów, dostarczanie kompleksowych rozwiązań lokalizacyjnych jest trudna nauka dla wielu programistów.

Identyfikując rosnące zapotrzebowanie na wygodne usługi dostarczania lokalizacji Google wprowadził Fused Location Provider API. Ten artykuł będzie koncentrować się na wykorzystaniu API do śledzenia lokalizacji użytkownika w czasie rzeczywistym za pomocą aplikacji android i poprzez przykład pokazać piękno API.

API koncentruje się na dostarczaniu informacji o lokalizacji za pomocą kombinacji GPS urządzenia, Wi-Fi i czujników wewnętrznych. Głównym punktem sprzedaży jest to, że decyduje, w jakiej kombinacji użyć tych trzech zasobów w oparciu o parametry żądania dostarczone. W tym kontekście zarządzanie tymi zasobami jest abstrahowane od dewelopera.

Prostym przypadkiem użycia w celu zademonstrowania możliwości API jest śledzenie ruchu osoby idącej w kierunku budynku, wchodzącej do niego, a następnie wychodzącej. W tym scenariuszu, gdy osoba jest na zewnątrz, usługa GPS będzie działać dobrze. Jednak po wejściu do budynku sygnał GPS może spaść. Fused Location Provider obsługuje powyższy scenariusz, śledząc lokalizację na zewnątrz za pomocą systemu GPS, a gdy sygnał GPS spadnie w budynku, wykorzystuje sieć Wi-Fi. Podczas procesu przełączania z GPS na Wi-Fi, aby zapewnić bardziej płynne przejście, wewnętrzne czujniki urządzenia są wykorzystywane do przewidywania ruchu. W ten sposób, zarządzanie dostępnymi zasobami w celu zapewnienia niezawodnych usług lokalizacyjnych w sposób wydajny dla baterii jest prawdziwą mocą API.

Integracja API do aplikacji android jest prostym procesem. W tym przykładzie, przejdziemy przez niezbędne kroki wymagane do zbudowania prostej aplikacji śledzenia lokalizacji.

Po pierwsze, utwórz projekt android w Android Studio i w ramach aplikacji build.gradle, upewnij się, że obecna jest następująca zależność:

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

Po drugie, w pliku Manifest musisz zapewnić zezwolenie na lokalizację Fine lub Coarse poprzez dodanie poniższego fragmentu:

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

Teraz utwórz instancje FusedLocationProviderClient, LocationRequest i LocationCallBack w swojej aktywności.

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

Obiekt LocationRequest jest używany do budowania żądania lokalizacji zgodnie z parametrami naszego przypadku użycia poprzez dostarczanie szczegółów, takich jak częstotliwość aktualizacji, poziom dokładności i wydajność baterii. Utwórz metodę do budowania żądania lokalizacji w oparciu o pożądane parametry. Przykład jest podany poniżej:

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

Po zainicjalizowaniu obiektu locationRequest i obiektów locationCallBack zażądaj danych o lokalizacji, wywołując metodę requestLocationUpdates klienta FusedLocationProviderClient. Przekaż obiekty locationRequest i locationCallback jako parametry.

FusedLocationProviderClient.requestLocationUpdates
(
locationRequest,
locationCallback,
null
);

W oparciu o parametry zdefiniowane w żądaniu interfejs API będzie nadal dostarczał odpowiednie informacje o lokalizacji, które mogą być wykorzystywane do wykonywania wielu funkcji, takich jak monitorowanie lokalizacji i śledzenie prędkości w czasie rzeczywistym.

Fused Location Provider API zapewnia wygodną metodę zarządzania wszystkimi podstawowymi technologiami lokalizacyjnymi, abstrahując ich wewnętrzne funkcjonowanie od dewelopera i zapewniając metody wysokiego poziomu, aby określić jakość i dokładność wymaganych usług.

To, co zostało tutaj zbadane, jest zaledwie ułamkiem tego, co zapewnia API, a Google dostarczyło kompleksową dokumentację, która może być wykorzystana do budowania różnorodnych i solidnych aplikacji w przyszłości. Kliknij poniższy link, aby rozpocząć:

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

.

Leave a Reply