Para respetar la privacidad del usuario, se recomienda que los desarrolladores de apps solo soliciten permisos de ubicación aproximada. Las apps que necesitan una posición aproximada suelen usar la ubicación de la 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 la red en las apps para automóviles puede ser más desafiante. 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 sencilla de trabajar con la ubicación con la introducción del proveedor de ubicación combinada (FLP).
Muchas apps para automóviles usan FLP de la API de Servicios de Google Play (GPS) en lugar de LM. FLP selecciona el proveedor de ubicación óptimo en función de los criterios y las políticas de solicitud de ubicación (potencia y precisión) que necesita el vehículo.
En cambio, puedes elegir solicitar y usar
NETWORK_PROVIDER de forma explícita en LM, así como
GPS_PROVIDER para posiciones precisas, que usa
android.permission.ACCESS_FINE_LOCATION
permisos. En la API 31, FUSED_PROVIDER,
a la 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
implementación de FLP en
FusedLocationProvider.java.
Si bien es posible usar GPS_PROVIDER solo con derechos de permisos aproximados, el framework degrada artificialmente la exactitud para alinearse con las expectativas, lo que tiene poco sentido para los desarrolladores que segmentan teléfonos Android porque la disponibilidad general es baja y, a menudo, es más lenta para obtener una posición aproximada.
Ubicación de la red en automóviles
El NETWORK_PROVIDER que se usa en teléfonos Android (con Servicios de Google para dispositivos móviles) cambió de determinar la ubicación en función de las torres de telefonía celular cercanas a usar también puntos de acceso Wi-Fi o incluso balizas de 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. Debido a que el GNSS suele estar activado, no se aplican sanciones debido al aumento del uso de energía y batería. Como resultado, el tiempo de actividad de IVI no se ve afectado. Nos esforzamos por minimizar los datos intercambiados con nuestros servidores.
Por lo tanto, muchas apps usan FLP de la API de Play en lugar de LM directamente, ya que FLP hace automáticamente lo inteligente usando el proveedor de ubicación que mejor puede satisfacer los criterios o las políticas de solicitud de ubicación (es decir, potencia y precisión) en segundo plano.
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 en segundo plano la mayor parte del tiempo.
Proveedor de ubicación de la red
La mayoría de los vehículos no implementan las APIs de telefonía necesarias 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 de NLP.
Proveedor de ubicación combinada
Además de usar de forma inteligente los proveedores de red y GPS según corresponda, el FLP móvil combina información de otros sensores para mejorar aún más la calidad de las ubicaciones. Por otro lado, la implementación actual de FLP de Automotive aprovecha los supuestos mencionados anteriormente y usa GPS_PROVIDER como fuente subyacente todo el tiempo. Falsifica las posiciones de GNSS y agrega algunos errores para que sean más imprecisas 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 remolcarlo.
Diseña apps para segmentar usos móviles y automotrices
Recomendamos que las apps segmentadas para dispositivos móviles y automotrices que no
requieran una mayor calidad de precisión soliciten
android.permission.ACCESS_COARSE_LOCATION
solo y vuelvan a usar FLP
cuando esté disponible. Como alternativa, como último recurso, usa GPS_PROVIDER directamente con los mismos permisos. El framework degrada la precisión de la posición 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 explícitamente la
android.hardware.location.network
función 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 sectores verticales y, por lo tanto, la máxima disponibilidad de la app sin diferencias de código para obtener posiciones cuando sea necesario.