Tracciamento della posizione in tempo reale usando l’API Fused Location Provider di Google

Imal Kumarage
Imal Kumarage

Follow

Jul 9, 2020 – 3 min read

Foto di henry perks su Unsplash

Location Il tracciamento e il monitoraggio hanno visto un’impennata nello sviluppo di applicazioni moderne con vari servizi come Uber che si basano pesantemente su servizi di localizzazione che richiedono coerenza e precisione. Con le imprese e le società che richiedono informazioni sulla posizione e il monitoraggio delle loro varie attività, fornire soluzioni di localizzazione complete è stata una scienza difficile per molti sviluppatori.

Identificando la crescente domanda di un servizio di localizzazione conveniente Google ha introdotto la Fused Location Provider API. Questo articolo si concentrerà sull’utilizzo dell’API per tracciare la posizione in tempo reale di un utente utilizzando un’applicazione Android e attraverso l’esempio dimostrerà la bellezza dell’API.

L’API si concentra sulla fornitura di informazioni sulla posizione utilizzando una combinazione di GPS, Wi-Fi e sensori interni di un dispositivo. Il principale punto di forza è che decide in quale combinazione utilizzare queste tre risorse in base ai parametri di richiesta forniti. In questo contesto la gestione di queste risorse è astratta dallo sviluppatore.

Un semplice caso d’uso per dimostrare la capacità dell’API è il monitoraggio del movimento di un individuo che cammina verso un edificio, entra e poi esce. In questo scenario, quando la persona è all’aperto, il servizio GPS funzionerà bene. Tuttavia, quando entra nell’edificio il segnale GPS può cadere. Il Fused Location Provider gestisce lo scenario di cui sopra tracciando la posizione all’esterno tramite GPS e quando il segnale GPS cade all’interno dell’edificio, utilizza il Wi-Fi. Durante il processo di passaggio dal GPS al Wi-Fi, per fornire una transizione più fluida, i sensori interni del dispositivo vengono utilizzati per prevedere il movimento. In questo modo, la gestione delle risorse disponibili per fornire servizi di localizzazione affidabili in un modo efficiente della batteria è la vera potenza dell’API.

Integrare l’API nella vostra applicazione Android è un processo semplice. In questo esempio, percorreremo i passi necessari per costruire una semplice applicazione di localizzazione.

Prima di tutto, create un progetto android in Android Studio e nel file build.gradle, assicurarsi che la seguente dipendenza sia presente:

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

In secondo luogo, all’interno del file Manifest è necessario fornire il permesso di localizzazione Fine o Coarse aggiungendo il seguente snippet:

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

Ora, creare istanze di FusedLocationProviderClient, LocationRequest e LocationCallBack nella vostra attività.

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

L’oggetto LocationRequest è usato per costruire una richiesta di localizzazione secondo i parametri del nostro caso d’uso, fornendo dettagli come la frequenza di aggiornamento, il livello di precisione e l’efficienza della batteria. Creare un metodo per costruire la richiesta di localizzazione in base ai parametri desiderati. Un esempio è fornito di seguito:

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

Una volta che l’oggetto locationRequest e gli oggetti locationCallBack sono inizializzati, richiedere i dati di localizzazione chiamando il metodo requestLocationUpdates del FusedLocationProviderClient. Passare gli oggetti locationRequest e locationCallback come parametri.

FusedLocationProviderClient.requestLocationUpdates
(
locationRequest,
locationCallback,
null
);

In base ai parametri definiti dalla richiesta l’API continuerà a fornire informazioni rilevanti sulla posizione che possono essere utilizzate per eseguire numerose funzioni come il monitoraggio della posizione e il tracciamento della velocità in tempo reale.

L’API Fused Location Provider fornisce un metodo conveniente per gestire tutte le tecnologie di localizzazione sottostanti, astraendo il loro funzionamento interno dallo sviluppatore e fornendo metodi di alto livello per specificare la qualità e la precisione dei servizi richiesti.

Quello che viene esplorato qui è solo una frazione di ciò che l’API fornisce, e Google ha fornito una documentazione completa che può essere utilizzata per costruire applicazioni diverse e robuste in futuro. Segui il link qui sotto per iniziare:

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

Leave a Reply