Ci sono 3 fornitori di servizi di localizzazione in Android.
Loro sono:
gps -> (GPS, AGPS): nome del provider di posizione GPS. Questo provider determina la posizione utilizzando i satelliti. A seconda delle condizioni, questo provider potrebbe richiedere del tempo per restituire una correzione della posizione. È richiesta l'autorizzazione android.permission.ACCESS_FINE_LOCATION.
rete -> (AGPS, CellID, WiFi MACID): nome del provider di posizione della rete. Questo provider determina la posizione in base alla disponibilità del tower tower e dei punti di accesso WiFi. I risultati vengono recuperati mediante una ricerca di rete. Richiede una delle autorizzazioni android.permission.ACCESS_COARSE_LOCATION o android.permission.ACCESS_FINE_LOCATION.
passivo -> (CellID, MACID WiFi): un provider di posizione speciale per la ricezione di posizioni senza avviare una correzione di posizione. Questo provider può essere utilizzato per ricevere passivamente gli aggiornamenti delle posizioni quando altre applicazioni o servizi li richiedono senza richiedere effettivamente le posizioni. Questo provider restituirà le posizioni generate da altri provider. Richiede l'autorizzazione android.permission.ACCESS_FINE_LOCATION, anche se se il GPS non è abilitato questo provider potrebbe restituire solo correzioni grossolane. Questo è ciò che Android chiama questi fornitori di servizi di localizzazione, tuttavia, le tecnologie sottostanti per far funzionare questa roba sono mappate al set specifico di funzionalità hardware e telco fornite (servizio di rete).
Il modo migliore è utilizzare prima il provider "rete" o "passivo", quindi il fallback su "gps" e, a seconda dell'attività, passare da un provider all'altro. Questo copre tutti i casi e fornisce un servizio di denominazione comune più basso (nel peggiore dei casi) e un ottimo servizio (nel migliore dei casi).
Articolo di riferimento: provider di posizione Android - gps, rete, passivo di Nazmul Idris
Codice di riferimento: https://stackoverflow.com/a/3145655/28557
-----------------------Aggiornare-----------------------
Ora Android ha provider di posizione fuso
Il fornitore di posizione fuso gestisce in modo intelligente la tecnologia di posizione sottostante e ti offre la posizione migliore in base alle tue esigenze. Semplifica i modi in cui le app possono ottenere la posizione corrente dell'utente con una maggiore precisione e un minore consumo di energia
Il fornitore di posizione fuso fornisce tre modi per recuperare la posizione
- Ultima posizione: utilizzare quando si desidera conoscere una volta la posizione corrente.
- Richiedi posizione utilizzando Listener: utilizzare quando l'applicazione è sullo schermo / frontend e richiede la posizione continua.
- Richiedi posizione utilizzando l'intento in sospeso: utilizzare quando l'applicazione in background e richiede la posizione continua.
Riferimenti :
Sito ufficiale: http://developer.android.com/google/play-services/location.html
Esempio di provider di località fuse: GIT: https://github.com/kpbird/fused-location-provider-example
http://blog.lemberg.co.uk/fused-location-provider
-------------------------------------------------- ------