Cómo conocer la ubicación aproximada

Para respetar la privacidad del usuario, se recomienda a los desarrolladores de apps que solo soliciten permisos de ubicación aproximada. Las apps que necesitan una posición aproximada suelen usar la ubicación de red (FLP) porque es rápida y consume menos energía.

En comparación con los dispositivos móviles basados en Android, la ubicación de red en las apps para automóviles puede ser más difícil de obtener. Puedes usar dos APIs de Android:

  • La API de LocationManager o LM requiere que identifiques de forma explícita el proveedor de ubicación preferido.

  • La API de Servicios de Google Play ofrece una forma más simplificada de trabajar con la ubicación a través de la introducción del Fused Location Provider (FLP).

Muchas apps para automóviles usan el FLP de la API de los Servicios de Google Play (GPS) en lugar del LM. El FLP selecciona el proveedor de ubicación óptimo según los criterios y las políticas de solicitud de ubicación (potencia y precisión) que necesita el vehículo.

En su lugar, puedes solicitar y usar NETWORK_PROVIDER de forma explícita en LM, así como GPS_PROVIDER para posiciones precisas, que usa permisos de android.permission.ACCESS_FINE_LOCATION. En la API 31, FUSED_PROVIDER, al que antes solo se podía acceder a través de la API de GPS, ahora está disponible como proveedor de ubicación para LM. Puedes ver una implementación más simple de FLP en FusedLocationProvider.java.

Si bien es posible usar GPS_PROVIDER solo con derechos de permiso aproximados, el framework degrada artificialmente la precisión para alinearse con las expectativas, por lo que no tiene mucho sentido para los desarrolladores que segmentan sus aplicaciones para teléfonos Android, ya que la disponibilidad general es baja y, a menudo, es más lento obtener una posición aproximada.

Ubicación de la red en la industria automotriz

El objeto NETWORK_PROVIDER que se usa en los teléfonos Android (con los Servicios móviles de Google) cambió de determinar la ubicación basándose únicamente en las torres de telefonía celular cercanas a usar también puntos de acceso Wi-Fi o incluso balizas Bluetooth (BT). El uso de NETWORK_PROVIDER puede requerir una conexión de datos.

En el caso de las apps para automóviles, las restricciones del dispositivo son diferentes. Como el GNSS suele estar activado, no se aplican penalizaciones por el aumento del uso de energía y batería. Como resultado, no se compromete el tiempo de actividad del IVI. Nos esforzamos por minimizar los datos que se intercambian con nuestros servidores.

Por lo tanto, muchas apps usan FLP de la API de Play en lugar de LM directamente, ya que FLP automáticamente hace lo inteligente usando el proveedor de ubicación que mejor puede satisfacer los criterios o las políticas de la solicitud de ubicación (es decir, potencia y precisión) de forma interna.

A diferencia de los dispositivos móviles, los vehículos rara vez parecen saltar de un lugar a otro. La posición del vehículo se conoce internamente la mayor parte del tiempo.

Proveedor de ubicación de red

La mayoría de los vehículos no implementan las APIs de telefonía requeridas para obtener la información necesaria sobre un ID de celda (y la intensidad de la señal). Como resultado, y debido a que minimizamos el uso de datos, no se proporciona ninguna implementación funcional adicional del PNL.

Proveedor de ubicación combinada

Además de usar de forma inteligente los proveedores de redes y GPS según corresponda, la FLP para dispositivos móviles fusiona información de otros sensores para mejorar aún más la calidad de las ubicaciones. Por otro lado, la implementación actual de la FLP de Automotive aprovecha las suposiciones mencionadas y usa GPS_PROVIDER como fuente subyacente en todo momento. Falsifica las posiciones del GNSS y agrega algunos errores para ser más impreciso cuando sea necesario. Por ejemplo, cuando se proporcionan ubicaciones aproximadas a un cliente.

Por lo tanto, en muy pocos casos, la primera posición puede tardar más de lo habitual en estar disponible. Por ejemplo, la primera vez que se usa un vehículo o, para ser más precisos, su subsistema de ubicación, o después de que se remolca.

Diseña apps para dispositivos móviles y automóviles

Recomendamos que las apps segmentadas para dispositivos móviles y automotrices que no requieren una mayor calidad de solicitud de precisión android.permission.ACCESS_COARSE_LOCATION solo y recurran al FLP cuando esté disponible. Como alternativa, y como último recurso, usa GPS_PROVIDER directamente con los mismos permisos. El framework reduce la precisión de la posición del GNSS subyacente para alinearse con las expectativas de la API. Para obtener más información, consulta Precisión.

Además, estas apps deben declarar de forma explícita la función android.hardware.location.network como opcional en su manifiesto. Por ejemplo:

<uses-feature android:name="android.hardware.location.network" android:required="false" />

Este enfoque garantiza la máxima compatibilidad con los dispositivos en todos los verticales y, por lo tanto, la máxima disponibilidad de la app sin diferencias de código para obtener posiciones cuando sea necesario.