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

Imal Kumarage
Imal Kumarage

Follow

Júl 9, 2020 – 3 min read

Photo by henry perks on Unsplash

Location A helymeghatározás és -megfigyelés a modern alkalmazásfejlesztés során ugrásszerűen megnőtt, mivel a különböző szolgáltatások, mint például az Uber, nagymértékben támaszkodnak a helymeghatározási szolgáltatásokra, amelyek következetességet és pontosságot igényelnek. Mivel a vállalkozásoknak és vállalatoknak szükségük van a helymeghatározási információkra és a különböző eszközeik nyomon követésére, az átfogó helymeghatározási megoldások biztosítása sok fejlesztő számára trükkös tudomány volt.

A kényelmes helymeghatározási szolgáltatást nyújtó szolgáltatás iránti növekvő igényt felismerve a Google bevezette a Fused Location Provider API-t. Ez a cikk az API használatával a felhasználó valós idejű helyének követésére összpontosít egy androidos alkalmazás segítségével, és a példán keresztül bemutatja az API szépségét.

Az API a helyinformációk szolgáltatására összpontosít az eszköz GPS, Wi-Fi és belső érzékelők kombinációjának felhasználásával. A fő értékesítési szempont az, hogy a megadott kérési paraméterek alapján dönti el, hogy milyen kombinációban használja ezt a három erőforrást. Ebben az összefüggésben ezen erőforrások kezelése elválik a fejlesztőtől.

Az API kapacitásának bemutatására szolgáló egyszerű felhasználási eset egy épület felé sétáló, oda belépő, majd onnan távozó személy mozgásának nyomon követése. Ebben a forgatókönyvben, amikor a személy a szabadban tartózkodik, a GPS szolgáltatás jól fog működni. Az épületbe való belépéskor azonban a GPS-jel csökkenhet. A Fused Location Provider úgy kezeli a fenti forgatókönyvet, hogy a tartózkodási helyet a szabadban GPS-en keresztül követi, és amikor a GPS-jel az épületen belül csökken, a Wi-Fi-t használja. A GPS-ről Wi-Fi-re való átváltás során a zökkenőmentesebb átmenet érdekében a készülék belső érzékelőit használja a mozgás előrejelzésére. Ily módon a rendelkezésre álló erőforrások kezelése a megbízható helymeghatározási szolgáltatások akkumulátor-hatékony módon történő biztosítása érdekében az API valódi ereje.

Az API integrálása az androidos alkalmazásba egyszerű folyamat. Ebben a példában egy egyszerű helymeghatározó alkalmazás létrehozásához szükséges lépéseken fogunk végigmenni.

Először hozzon létre egy android projektet az Android Studio-ban és az alkalmazás építésén belül.gradle fájlban biztosítsuk a következő függőség jelenlétét:

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

Második lépésként a Manifest fájlon belül az alábbi snippet hozzáadásával biztosítsuk a Fine vagy Coarse helymeghatározási engedélyt:

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

Most hozzuk létre a FusedLocationProviderClient, LocationRequest és LocationCallBack példányait a tevékenységünkben.

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

A LocationRequest objektumot arra használjuk, hogy a használati esetünk paramétereinek megfelelően felépítsünk egy helymeghatározási kérelmet olyan részletek megadásával, mint a frissítési gyakoriság, a pontossági szint és az akkumulátor hatékonysága. Hozzon létre egy metódust a helymeghatározási kérelem felépítéséhez a kívánt paraméterek alapján. Egy példa az alábbiakban látható:

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

A locationRequest objektum és a locationCallBack objektumok inicializálása után kérjen helyadatokat a FusedLocationProviderClient requestLocationUpdates metódusának meghívásával. Adja át paraméterként a locationRequest és locationCallback objektumokat.

FusedLocationProviderClient.requestLocationUpdates
(
locationRequest,
locationCallback,
null
);

A kérés által meghatározott paraméterek alapján az API továbbra is releváns helyadatokat fog szolgáltatni, amelyek számos funkció, például a helymegfigyelés és a valós idejű sebességkövetés elvégzéséhez felhasználhatók.

A Fused Location Provider API kényelmes módszert biztosít az összes alapul szolgáló helymeghatározási technológia kezelésére azáltal, hogy absztrahálja azok belső működését a fejlesztő elől, és magas szintű módszereket biztosít a szükséges szolgáltatások minőségének és pontosságának meghatározásához.

Az itt feltártak csupán egy töredéke annak, amit az API nyújt, és a Google átfogó dokumentációt biztosított, amelyből a jövőben változatos és robusztus alkalmazások építhetők. A kezdéshez kövesse az alábbi linket:

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

Leave a Reply