Sledování polohy v reálném čase pomocí rozhraní API Fused Location Provider společnosti Google

Imal Kumarage
Imal Kumarage

Follow

9. července, 2020 – 3 minuty čtení

Foto: henry perks na Unsplash

Lokalita. sledování a monitorování zaznamenaly prudký nárůst ve vývoji moderních aplikací, přičemž různé služby, jako je například Uber, se do značné míry spoléhají na služby určování polohy, které vyžadují konzistenci a přesnost. Vzhledem k tomu, že podniky a korporace vyžadují informace o poloze a monitorování svých různých aktiv, je poskytování komplexních řešení pro určování polohy pro mnoho vývojářů složitou vědou.

Vzhledem k rostoucí poptávce po pohodlném poskytování služeb určování polohy společnost Google představila rozhraní API Fused Location Provider. Tento článek se zaměří na použití tohoto rozhraní API ke sledování polohy uživatele v reálném čase pomocí aplikace pro systém Android a na příkladu ukáže krásy tohoto rozhraní API.

Rozhraní API se zaměřuje na poskytování informací o poloze pomocí kombinace GPS, Wi-Fi a interních senzorů zařízení. Hlavní předností je, že na základě zadaných parametrů požadavku rozhoduje, v jaké kombinaci tyto tři zdroje použít. V tomto kontextu je správa těchto zdrojů od vývojáře abstrahována.

Jednoduchým případem použití, který demonstruje kapacitu rozhraní API, je sledování pohybu osoby, která jde k budově, vstupuje do ní a poté ji opouští. V tomto scénáři, kdy se osoba nachází venku, bude služba GPS fungovat dobře. Jakmile však vstoupí do budovy, může signál GPS poklesnout. Fused Location Provider řeší výše uvedený scénář tak, že sleduje polohu venku pomocí GPS, a když signál GPS v budově klesne, využije Wi-Fi. Během procesu přepínání z GPS na Wi-Fi se pro zajištění plynulejšího přechodu používají vnitřní senzory zařízení k předvídání pohybu. Tímto způsobem je správa dostupných zdrojů pro poskytování spolehlivých služeb určování polohy způsobem šetrným k baterii skutečnou silou rozhraní API.

Integrace rozhraní API do aplikace pro systém Android je jednoduchý proces. V tomto příkladu si projdeme nezbytné kroky potřebné k vytvoření jednoduché aplikace pro sledování polohy.

Nejprve vytvořte projekt android v aplikaci Android Studio a v rámci sestavení aplikace.gradle zajistěte přítomnost následující závislosti:

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

Druhé, v rámci souboru Manifest musíte poskytnout oprávnění Fine nebo Coarse location přidáním níže uvedeného úryvku:

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

Nyní vytvořte instance FusedLocationProviderClient, LocationRequest a LocationCallBack ve své aktivitě.

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

Objekt LocationRequest slouží k sestavení požadavku na polohu v souladu s parametry našeho případu užití tím, že poskytuje podrobnosti, jako je frekvence aktualizace, úroveň přesnosti a účinnost baterie. Vytvořte metodu pro sestavení požadavku na určení polohy na základě požadovaných parametrů. Příklad je uveden níže:

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 inicializaci objektu locationRequest a objektu locationCallBack si vyžádejte údaje o poloze voláním metody requestLocationUpdates objektu FusedLocationProviderClient. Jako parametry předejte objekty locationRequest a locationCallback.

FusedLocationProviderClient.requestLocationUpdates
(
locationRequest,
locationCallback,
null
);

Na základě parametrů definovaných v požadavku bude rozhraní API nadále poskytovat relevantní informace o poloze, které lze využít k provádění mnoha funkcí, jako je sledování polohy a sledování rychlosti v reálném čase.

Fused Location Provider API poskytuje pohodlnou metodu pro správu všech základních technologií určování polohy tím, že abstrahuje jejich vnitřní fungování od vývojáře a poskytuje metody na vysoké úrovni pro specifikaci kvality a přesnosti požadovaných služeb.

To, co je zde prozkoumáno, je pouze zlomek toho, co API poskytuje, a společnost Google poskytla rozsáhlou dokumentaci, kterou lze v budoucnu použít k vytváření různorodých a robustních aplikací. Chcete-li začít, přejděte na níže uvedený odkaz:

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

.

Leave a Reply