Proveedores de ubicación de Android: ¿GPS o proveedor de red?

128

En mi aplicación, me gustaría determinar la ubicación actual del usuario. Sin embargo, tengo un par de preguntas a este respecto:

  1. Existen diferentes proveedores de ubicación, ¿cuál es el más preciso? ¿El proveedor de GPS o el proveedor de red ?

  2. ¿Hasta qué punto difieren esos proveedores disponibles? ¿Cómo funcionan?

  3. ¿Podría proporcionarme algunos fragmentos de código o tutoriales sobre cómo comenzar a implementar la funcionalidad GPS en mi aplicación?

Ningún hombre
fuente
18
Vote por reabrir: la pregunta es buena y la respuesta proporcionada es útil. La respuesta también está desactualizada ya que ahora existe el Proveedor de ubicación fusionada: abrir la pregunta permitiría que se actualice.
Richard Le Mesurier

Respuestas:

281

Hay 3 proveedores de ubicación en Android.

Son:

gps -> (GPS, AGPS): nombre del proveedor de ubicación GPS. Este proveedor determina la ubicación mediante satélites. Dependiendo de las condiciones, este proveedor puede tardar un tiempo en devolver una corrección de ubicación. Requiere el permiso android.permission.ACCESS_FINE_LOCATION.

red -> (AGPS, CellID, WiFi MACID): Nombre del proveedor de ubicación de red. Este proveedor determina la ubicación en función de la disponibilidad de la torre celular y los puntos de acceso WiFi. Los resultados se recuperan mediante una búsqueda en la red. Requiere cualquiera de los permisos android.permission.ACCESS_COARSE_LOCATION o android.permission.ACCESS_FINE_LOCATION.

pasivo -> (CellID, WiFi MACID): un proveedor de ubicación especial para recibir ubicaciones sin iniciar realmente una corrección de ubicación. Este proveedor se puede usar para recibir pasivamente actualizaciones de ubicación cuando otras aplicaciones o servicios lo soliciten sin solicitar las ubicaciones usted mismo. Este proveedor devolverá ubicaciones generadas por otros proveedores. Requiere el permiso android.permission.ACCESS_FINE_LOCATION, aunque si el GPS no está habilitado, este proveedor solo puede devolver soluciones gruesas. Esto es lo que Android llama a estos proveedores de ubicaciones, sin embargo, las tecnologías subyacentes para hacer que esto funcione se asignan al conjunto específico de capacidades de hardware y telecomunicaciones proporcionadas (servicio de red).

La mejor manera es usar primero el proveedor de "red" o "pasivo", y luego recurrir a "gps", y dependiendo de la tarea, cambiar de proveedor. Esto cubre todos los casos y proporciona un servicio de mínimo común denominador (en el peor de los casos) y un excelente servicio (en el mejor de los casos).

ingrese la descripción de la imagen aquí

Referencia del artículo: Proveedores de ubicación de Android: gps, red, pasivo Por Nazmul Idris

Código de referencia: https://stackoverflow.com/a/3145655/28557

-----------------------Actualizar-----------------------

Ahora Android tiene proveedor de ubicación fusionada

El proveedor de ubicaciones fusionadas administra de manera inteligente la tecnología de ubicación subyacente y le brinda la mejor ubicación de acuerdo con sus necesidades. Simplifica las formas en que las aplicaciones obtienen la ubicación actual del usuario con mayor precisión y menor consumo de energía.

El proveedor de ubicación fusionada proporciona tres formas de recuperar la ubicación

  1. Última ubicación: utilícela cuando desee conocer la ubicación actual una vez.
  2. Solicitar ubicación usando el escucha: se usa cuando la aplicación está en pantalla / interfaz y requiere una ubicación continua.
  3. Solicitar ubicación con intención pendiente: se usa cuando la aplicación está en segundo plano y requiere una ubicación continua.

Referencias

Sitio oficial: http://developer.android.com/google/play-services/location.html

Ejemplo de proveedor de ubicación fusionada: GIT: https://github.com/kpbird/fused-location-provider-example

http://blog.lemberg.co.uk/fused-location-provider

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

Vinayak Bevinakatti
fuente
2
Tenga en cuenta que también existe el proveedor de Localizador fusionado de servicios de Google Play que se puede usar.
Richard Le Mesurier
¿Es posible hacer su propio proveedor de ubicación personalizada? android.permission.INSTALL_LOCATION_PROVIDER está firmado o el sistema significa que debería poder instalar uno en el dispositivo rooteado, ¿no?
JohnyTex
1
El proveedor de ubicación fusionada solo está disponible para API> = 19. Todavía tenemos que seguir el procedimiento anterior para dispositivos que ejecutan versiones anteriores, ¿verdad?
Shobhit Puri
¿hay algún código de muestra / API existente que busque la ubicación del GPS y recurra al proveedor de la red después de un tiempo, si el GPS no puede buscar la ubicación? ¿o debería ser manejado en el código por alguna lógica de temporizador?
jrhamza
Proveedor pasivo "" "Este proveedor se puede usar para recibir pasivamente actualizaciones de ubicación cuando otras aplicaciones o servicios lo soliciten sin solicitar las ubicaciones usted mismo." ""
nurisezgin
7

El GPS es generalmente más preciso que la red, pero a veces el GPS no está disponible, por lo tanto, es posible que deba cambiar entre los dos.

Un buen comienzo podría ser mirar el sitio de desarrollo de Android. Tenían una sección dedicada a determinar la ubicación del usuario y tiene todos los ejemplos de código que necesita.

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

Otra
fuente
@Noman, ¿quieres obtener tu ubicación de longitud y latitud?
Nikunj Patel
@Scorpio, realmente quería saber qué opción es mejor entre el PROVEEDOR DE RED Y EL PROVEEDOR GPS. . .Otra me envió un enlace como respuesta a mi pregunta que me ha ayudado mucho ... ahora estoy usando NETWORK PROVIDER en mi aplicación :-)
Noman
3

Hay algunas excelentes respuestas mencionadas aquí. Otro enfoque que podría adoptar sería utilizar algunos SDK gratuitos disponibles en línea como Atooma, tranql y Neura, que pueden integrarse con su aplicación de Android (se tarda menos de 20 minutos en integrarse). Además de brindarle la ubicación precisa de su usuario, también puede brindarle una buena perspectiva sobre las actividades de su usuario. Además, algunos de ellos consumen menos del 1% de su batería

johndaly
fuente
1
¿Puedo obtener referencias al SDK que estás mencionando?
Kishore Relangi