Provider di posizioni Android - GPS o provider di rete?


128

Nella mia domanda vorrei determinare la posizione corrente dell'utente. Tuttavia, ho un paio di domande al riguardo:

  1. Esistono diversi provider di posizione, qual è il più preciso? Il provider GPS o il provider di rete ?

  2. In che misura differiscono i provider disponibili? Come funzionano?

  3. Potresti fornirmi alcuni frammenti di codice o tutorial su come iniziare a implementare la funzionalità GPS nella mia applicazione?


18
Vota per riaprire - la domanda è buona e la risposta fornita è utile. Anche la risposta non è aggiornata poiché ora è presente il fornitore della posizione fusa: l'apertura della domanda consentirebbe l'aggiornamento.
Richard Le Mesurier,

Risposte:


281

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).

inserisci qui la descrizione dell'immagine

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

  1. Ultima posizione: utilizzare quando si desidera conoscere una volta la posizione corrente.
  2. Richiedi posizione utilizzando Listener: utilizzare quando l'applicazione è sullo schermo / frontend e richiede la posizione continua.
  3. 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

-------------------------------------------------- ------


2
Tieni presente che esiste anche il provider Localizzatore fuso di Google Play Services che puoi utilizzare.
Richard Le Mesurier,

È possibile creare il proprio provider di localizzazione personalizzato? android.permission.INSTALL_LOCATION_PROVIDER è firmato o il sistema significa che dovrei essere in grado di installarne uno sul dispositivo rootato, no?
JohnyTex,

1
Il provider della posizione fusa è disponibile solo per API> = 19. Dobbiamo ancora seguire la vecchia procedura per i dispositivi che eseguono versioni precedenti, giusto?
Shobhit Puri,

c'è qualche codice di esempio / API esistente che cerca la posizione GPS e ricade sul provider di rete dopo qualche tempo, se il GPS non riesce a recuperare la posizione? o dovrebbe essere gestito nel codice da una logica del timer?
jrhamza,

Provider passivo "" "Questo provider può essere utilizzato per ricevere passivamente gli aggiornamenti delle posizioni quando altre applicazioni o servizi li richiedono senza effettivamente richiedere le posizioni da soli." ""
nurisezgin

7

Il GPS è generalmente più preciso della rete ma a volte il GPS non è disponibile, quindi potrebbe essere necessario passare da uno all'altro.

Un buon inizio potrebbe essere quello di guardare il sito di sviluppo Android. Avevano una sezione dedicata alla determinazione della posizione dell'utente e conteneva tutti gli esempi di codice necessari.

http://developer.android.com/guide/topics/location/obtaining-user-location.html


@Noman vuoi ottenere la tua posizione longitudine e latitudine?
Nikunj Patel,

@Scorpio in realtà volevo sapere quale opzione è migliore tra PROVIDER DI RETE e PROVIDER GPS. . .Otra inviami un link come risposta alla mia domanda che mi ha aiutato molto ... ora sto usando NETWORK PROVIDER nella mia app :-)
Noman

3

Ci sono alcune grandi risposte menzionate qui. Un altro approccio che potresti adottare sarebbe quello di utilizzare alcuni SDK gratuiti disponibili online come Atooma, tranql e Neura, che possono essere integrati con la tua applicazione Android (l'integrazione richiede meno di 20 minuti). Oltre a fornirti la posizione precisa del tuo utente, può anche darti buoni spunti sulle attività dell'utente. Inoltre, alcuni consumano meno dell'1% della batteria


1
posso ottenere riferimenti al SDK di cui stai parlando?
Kishore Relangi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.