¿Cómo obtiene Android la ubicación aproximada?

Leí que Android (y sistemas operativos similares, por ejemplo, iOS) obtienen la ubicación aproximada actual mediante el uso de triangulación de torre WiFi o GSM. Entiendo la idea básica, pero tengo preguntas sobre los detalles.

  1. ¿Android normalmente usa ambos métodos, o prefiere uno y recurre al otro?
  2. ¿Se comunica con un servidor para obtener la posición a través de WiFi? (por ejemplo, enviar los SID de los WiFi a un servicio web)
  3. ¿Se comunica con el operador para obtener la posición a través de las torres GSM o se hace en el dispositivo?

Respuestas (4)

Realmente depende del desarrollador cómo implementar el servicio de ubicación. La descripción completa está disponible en el sitio oficial de desarrolladores de Android (como se capturó el 24 de septiembre de 2010)

El gráfico de aproximadamente 1/3 de la página es bastante útil para ver lo que podría hacer una aplicación típica, pero nuevamente, depende completamente del desarrollador de la aplicación. Los tipos de servicios de localización son:

  • Corrección en caché
  • ID de celda
  • Wifi
  • GPS
  • Ubicación simulacro

Si la aplicación solicita permiso solo para la ubicación aproximada, no utilizará el GPS para determinar la ubicación.

Para responder tu pregunta:

  1. Depende del desarrollador de la aplicación individual, pero en la mayoría de los casos, la secuencia será Cached Fix, Cell-ID, WiFi, GPS, en ese orden.
  2. Sí, después de adquirir los ID de la torre o los SSID de las señales WiFi, esos datos se transmiten a Google para determinar una ubicación aproximada.
  3. No, Google ha hecho algo realmente inteligente aquí. Google tiene su propia base de datos de ubicaciones de torres celulares y no requiere una interacción con el operador para determinar la ubicación de la torre.

Un artículo de Francisco Kattan sobre "Dynamic Cell-ID" tiene algunos detalles. La versión corta es que, cuando usa una aplicación como Google Maps, la aplicación enviará la información actual de Cell-ID junto con su posición de GPS actual. De esta forma, Google obtiene una muy buena muestra de la intensidad de la señal en varios lugares y puede crear una base de datos muy rica.

Me gusta bastante tu respuesta, pero no estoy seguro de si tienes razón en la parte "depende totalmente del desarrollador". Por lo que puedo decir, el desarrollador solo puede decidir obtener la ubicación fina o gruesa. En otras palabras, puede usar LocationManager.NETWORK_PROVIDER y/o LocationManager.GPS_PROVIDER para obtener la ubicación. Creo que no puede decidir o incluso ver, si se usa Wifi o GSM, ¿verdad?
En el caso más común, al desarrollador no le importará si los datos provienen de WiFi o de Cell-ID, pero el desarrollador podría imponer restricciones para permitir que la aplicación solo funcione cuando WiFi está deshabilitado o GPRS/GSM está deshabilitado. Tomé su pregunta en el sentido de: "¿Existe una secuencia estándar que sigan todas las aplicaciones?" y la respuesta es no. Sin embargo, con respecto específico a la diferencia entre WiFi y Cell-ID, el desarrollador de la aplicación tiene una capacidad limitada para solicitar específicamente un tipo de servicio de ubicación.

Mucho de esto es específico del operador y no soy un desarrollador, pero esto es lo que pude juntar de las interwebs y los entrenamientos que he tenido en la investigación de delitos electrónicos:

  1. Sí, pero depende de las prioridades LBS de las aplicaciones específicas que establece el desarrollador y pueden basarse en la precisión del curso actual, los niveles de potencia, las prioridades predefinidas, etc.
  2. Sí. Los operadores tienen bases de datos de ubicación de estación base WiFi patentadas.
  3. No puedo hablar específicamente de Android, pero en general, este será el tipo de operador y red (CDMA o GSM). Los teléfonos son capaces de hacer ambas cosas, pero al menos hace unos años hacían este trabajo en el teléfono debido a las limitaciones de ancho de banda de hacerlo OTA.

Tu teléfono sabe cuáles son las torres más cercanas.

Hay una base de datos de proveedores para cada país en la que se almacena la ubicación de las ID de torre en el mapa. Esta base de datos puede ser lo suficientemente pequeña como para que su proveedor la preinstale o la suministre de forma inalámbrica. Cómo un teléfono Android obtiene estos datos, no lo sé.

¿Se comunica con el operador para obtener la posición a través de las torres GSM o se hace en el dispositivo?

El dispositivo se puede usar si desea usar la triangulación, pero debe usar el operador si desea hacer coincidir la identificación de la celda y la localización de la torre GSM (o CDMA).

pero, ¿es esta una opción que puede determinar un desarrollador de aplicaciones o incluso un usuario final o es algo que determina el operador?
Es obligatorio si desea utilizar este método para localizar un dispositivo. El uso de la triangulación u otro método le permite saber dónde se encuentra en comparación con la posición de la antena. Pero si no conoce la latitud/longitud de la antena, no podrá obtener su posición en un mapa. Yo en casa lo tengo claro :)
@Rob Pero no necesita el transportista para encontrar la ubicación de la torre. Cada torre transmite una identificación única, cualquiera puede tomarla de forma independiente y mapearla, sin interacción del operador. Google ha estado haciendo esto durante un tiempo para las torres de telefonía móvil y los puntos de acceso WiFi. El automóvil de Google Streetview recoge la información a medida que viaja, y los usuarios de Google Maps en varias plataformas también envían datos anónimos que coinciden con las correcciones de GPS con las identificaciones y la potencia de la antena y wifi. Esto es similar a cómo Google recopila muchos de sus datos de tráfico en las ciudades, agrega la velocidad y las posiciones de muchos usuarios de Maps.
Está seguro ? Parece sorprendente. Por ejemplo, en Alemania (y otros países de Europa), Google ha sido demandado por recopilar información wifi, por lo que parece que no usaron este recurso. Para la base de datos GSM, si Google posee una, debería ser accesible y nunca escuché sobre ella.
@Rob googlemobile.blogspot.com/2008/06/… "El teléfono conoce el ID de la torre celular que está usando actualmente. Si el teléfono tiene GPS, la aplicación Maps del teléfono envía las coordenadas GPS junto con el ID del celular a el servidor de ubicación de Google". No puedo encontrar el enlace en este momento, pero anunciaron hace un tiempo que la aplicación Blackberry Google Maps estaba enviando el SSID y la fuerza de WiFi cercanos por la misma razón. Esto no es lo mismo que el "error" de programación en el software Streetview por el que están siendo demandados que capturó más datos WiFi de los que debía.
+1 ¡Gracias por el enlace! Entonces, Google tiene una base de datos con localización de las torres GSM... Qué interesante. ¿Si podemos acceder a este servicio web?