¿Hay un caché de GPS común en Android?

Por lo que entendí sobre la seguridad de Android, todas las aplicaciones están separadas por diferentes cuentas de usuario y diferentes ubicaciones del sistema de archivos.

PERO: Después de que la prueba de GPS haya fijado mi ubicación por primera vez después del encendido, todas las demás aplicaciones se arreglarán muy rápido. Mi conclusión: esto tiene que ser algo que no esté en el espacio de usuario de Android.

Entonces, ¿cómo funciona esto?

Respuestas (1)

Si cada aplicación tuviera que interpretar la entrada de GPS sin procesar, sería muy tonto. Diferentes aplicaciones duplicarían el mismo esfuerzo de decodificar e interpretar la entrada del GPS para calcular una ubicación. Diferentes aplicaciones terminarían usando diferentes bibliotecas para hacerlo, por lo que cada aplicación podría terminar con una idea diferente de tu ubicación.

En cambio, el proceso de interpretación de los datos del GPS para computar con una ubicación se maneja de forma centralizada en el propio Android. El sistema Android ofrece una interfaz para que las aplicaciones consulten la ubicación sin tener que preocuparse por los detalles de si proviene de GPS, torres de telefonía celular o redes Wi-Fi.

De esta manera, solo el sistema Android tiene que calcular la ubicación, utilizando cualquier fuente posible, puede proporcionar esta ubicación a muchas aplicaciones sin duplicar el esfuerzo y (como habrás notado) cada aplicación no tiene que comenzar desde cero para calcular La locación. Las versiones más recientes de Android también hacen trucos inteligentes como dar una ubicación menos precisa a las aplicaciones que tienen el permiso de "ubicación aproximada (basada en la red)" pero no el permiso de "ubicación precisa (GPS)", independientemente de qué métodos se usaron realmente para determinar La locación.

Internamente, esto funciona con lo que se llama un servicio de sistema vinculado : un mecanismo IPC para diferentes procesos para recibir datos del servicio que realmente calcula la ubicación. El servicio se ejecuta en el espacio del usuario, no dentro del kernel y, como cualquier otra aplicación de Android, se ejecuta dentro de su propio proceso. (Solo los niveles muy bajos del controlador del receptor GPS se ejecutan dentro del kernel) . Guía para desarrolladores de Android .

com.android.location.fused es un proceso en ejecución que suena así. ¿Es esa la capa de aplicación que describiste?
TL;RD; En el nivel bajo, el GPS almacena en caché la ubicación fija y recuerda dónde se quedó, lo que facilita su reanudación cuando se activa.
@ t0mm13b Suena un poco como una respuesta diferente para mí (el nivel bajo está incluso fuera de Android, ¿verdad?)
@Nils: en el marco, nivel de kernel (controlador) por debajo de Android :)
@ t0mm13b Eso simplemente no es cierto. En los sistemas Linux (incluido Android), todo el trabajo pesado de la ubicación GPS se realiza dentro de la biblioteca libgps del espacio del usuario. Como digo en mi respuesta, el único controlador de kernel requerido es el controlador UART para comunicarse con el hardware GPS. El controlador del kernel no realiza ningún cálculo de ubicación ni almacenamiento en caché.