18 votos

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

He leído que Android (y sistemas operativos similares, p. ej. iOS) obtienen la ubicación actual a grosso modo mediante triangulación de torres WiFi o GSM. Entiendo la idea básica, pero tengo preguntas sobre los detalles.

  1. ¿Android utiliza normalmente 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, enviando los SID de las WiFis 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?

9voto

Kevin Dente Puntos 7732

En realidad, depende del desarrollador cómo implantar el servicio de localización. La descripción completa está disponible en el sitio oficial de Android Developers (capturado el 24 de septiembre de 2010)

El gráfico que aparece un tercio más abajo es bastante útil para ver lo que puede hacer una aplicación típica, pero, de nuevo, todo depende del desarrollador de la aplicación. Los tipos de servicios de localización son:

  • Arreglo en caché
  • Identificación celular
  • WiFi
  • GPS
  • Ubicación simulada

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

Para responder a sus preguntas:

  1. Depende de cada desarrollador de aplicaciones, pero en la mayoría de los casos, la secuencia será Cached Fix, Cell-ID, WiFi, GPS, en ese orden.
  2. Sí, tras adquirir los ID de torre o 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. Google tiene su propia base de datos de ubicaciones de torres de telefonía móvil 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 resumida es que, cuando utilices una aplicación como Google Maps, la aplicación enviará la información actual de Cell-ID junto con tu posición GPS actual. De este modo, Google obtiene una buena muestra de la intensidad de la señal en distintos lugares y puede crear una base de datos muy completa.

1 votos

Me gusta bastante tu respuesta, pero no estoy seguro de que tengas razón en la parte de "depende totalmente del promotor". Hasta donde yo sé, el desarrollador sólo puede decidir obtener la localización fina o gruesa. En otras palabras, puede utilizar LocationManager.NETWORK_PROVIDER y/o LocationManager.GPS_PROVIDER para obtener la ubicación. Creo que no puede decidir o incluso ver, si se utiliza Wifi o GSM, ¿verdad?

0 votos

En el caso más común, al desarrollador no le importará si los datos provienen de WiFi o Cell-ID, pero el desarrollador podría poner restricciones para permitir que la aplicación sólo funcione cuando WiFi está desactivado o GPRS/GSM está desactivado. Entendí tu pregunta como: "¿Existe una secuencia estándar que sigan todas las aplicaciones?" y la respuesta es no. Sin embargo, en lo que respecta específicamente 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 localización.

3voto

Polsonby Puntos 11824

Mucho de esto es operador-específico y yo no soy un dev pero esto es lo que pude juntar de los interwebs y los entrenamientos que he tenido en la investigación del crimen electrónico:

  1. Sí, pero depende de las prioridades específicas del LBS de la aplicación, que son establecidas por el desarrollador y pueden basarse en la precisión del rumbo actual, niveles de potencia, prioridades predefinidas, etc.
  2. Sí, las operadoras tienen bases de datos propias de localización de estaciones base WiFi.
  3. No puedo hablar de Android específicamente, pero en general, esto va a ser el operador y el tipo de red (CDMA o GSM). Los teléfonos son capaces de ambos, pero al menos hace unos años que hicieron este trabajo en el teléfono debido a las limitaciones de ancho de banda de hacerlo OTA.

1 votos

0voto

Daan Puntos 3325

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

Existe una base de datos de proveedores para cada país en la que se almacena la ubicación de los ID de torre en el mapa. Esta base de datos puede ser lo suficientemente pequeña como para ser preinstalada por su proveedor o suministrada por el aire. Cómo obtiene estos datos un teléfono Android, no lo sé.

-1voto

somas1 Puntos 626

¿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 podría ser utilizado si desea utilizar la triangulación, pero es necesario utilizar el operador si desea hacer coincidir el Cell-ID y la localización de la torre GSM (o CDMA).

0 votos

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?

0 votos

Es obligatorio, si desea utilizar esta forma para localizar un dispositivo. El uso de la triangulación u otro método le permite saber dónde se encuentra frente a la posición de la antena. Pero si no sabes la lat/long de la antena, no podrás obtener tu posición en un mapa. I home I'm clear :)

0 votos

@Rob Pero no necesitas el operador para encontrar la ubicación de la torre. Cada torre emite un ID único, cualquiera puede cogerlo independientemente y mapearlo, sin interacción operador. Google lleva tiempo haciendo lo mismo con las torres de telefonía móvil y los puntos de acceso WiFi. El coche de Google Streetview recoge la información mientras viaja, y los usuarios de Google Maps en varias plataformas también envían datos anónimos que emparejan los puntos GPS con los ID y la intensidad de la antena y el wifi. Esto es similar a la forma en que Google recoge muchos de sus datos de tráfico en las ciudades, agregando la velocidad y las posiciones de muchos usuarios de Maps.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X