Чтобы обеспечить конфиденциальность пользователей, разработчикам приложений рекомендуется запрашивать только приблизительные разрешения на определение местоположения. Приложения, которым требуется приблизительное определение местоположения, обычно используют объединенное сетевое определение местоположения (FLP), поскольку оно быстрое и потребляет меньше энергии. По сравнению с мобильными устройствами на базе Android, определение местоположения по сети в автомобильных приложениях может быть более сложной задачей. Можно использовать два API Android:
Для использования API LocationManager необходимо явно указать предпочтительный поставщик местоположения с помощью
requestLocationUpdates.API сервисов Google Play предлагает более простой способ работы с местоположением в
FusedLocationProviderClient.
Многие автомобильные приложения используют API FLP из сервисов Google Play вместо LocationManager . FLP выбирает оптимальный поставщик местоположения на основе критериев и политик запроса местоположения (мощность и точность), необходимых для транспортного средства.
Вместо этого вы можете явно запросить и использовать NETWORK_PROVIDER , а также GPS_PROVIDER для точного определения местоположения, что осуществляется с помощью разрешений android.permission.ACCESS_FINE_LOCATION . В Android 12 (уровень API 31) и выше FUSED_PROVIDER , ранее доступный только через API сервисов Google Play, теперь доступен в качестве поставщика местоположения для LocationManager . Реализацию FLP можно увидеть в файле FusedLocationProvider.java .
Хотя можно использовать GPS_PROVIDER только с приблизительными правами доступа — фреймворк искусственно занижает точность, чтобы соответствовать ожиданиям, — это малоцелесообразно для разработчиков, ориентированных на телефоны Android, поскольку общая доступность низкая, а получение приблизительного местоположения часто занимает больше времени.
Расположение сети в автомобильной отрасли
Параметр NETWORK_PROVIDER используемый на телефонах Android (с Google Mobile Services), определяет местоположение на основе ближайших базовых станций сотовой связи, точек доступа Wi-Fi и Bluetooth-маяков. В результате для работы NETWORK_PROVIDER может потребоваться подключение к интернету.
Для автомобильных приложений ограничения устройств отличаются. Поскольку глобальная навигационная спутниковая система (GNSS) обычно включена, никаких потерь из-за повышенного энергопотребления и расхода заряда батареи не происходит. В результате время безотказной работы IVI не снижается. Мы стремимся минимизировать обмен данными с нашими серверами.
Многие приложения используют FLP из Play API вместо прямого LocationManager , потому что FLP автоматически выбирает наиболее подходящий поставщик данных о местоположении, удовлетворяющий критериям или правилам вашего запроса, таким как мощность и точность.
В отличие от мобильных устройств, транспортные средства редко перемещаются с места на место. Положение автомобиля под капотом известно в большинстве случаев.
Поставщик информации о местоположении в сети (NLP)
В большинстве автомобилей отсутствуют необходимые API для телефонной связи, позволяющие получать необходимую информацию об идентификаторе сотовой сети (и уровне сигнала). В результате, и поскольку мы сводим к минимуму использование данных, дополнительная функциональная реализация обработки естественного языка не предоставляется.
Поставщик объединенных данных о местоположении
Мобильная версия FLP объединяет информацию от других датчиков для повышения качества определения местоположения, помимо использования сетевых и GPS-провайдеров. В свою очередь, автомобильная версия FLP использует GPS_PROVIDER в качестве базового источника. Она корректирует координаты GNSS, добавляя преднамеренную ошибку для снижения точности, когда клиент запрашивает приблизительные координаты.
Таким образом, в очень редких случаях время, необходимое для получения первой позиции, может быть дольше обычного. Например, при первом использовании транспортного средства или, точнее, его подсистемы определения местоположения, или после буксировки.
Разработка приложений, ориентированных на мобильные устройства и автомобильную промышленность.
Для приложений, предназначенных для мобильных и автомобильных устройств, которым не требуется более высокая точность, запрашивайте только разрешение android.permission.ACCESS_COARSE_LOCATION и используйте FLP в качестве запасного варианта, если оно доступно. В качестве альтернативы используйте GPS_PROVIDER напрямую с теми же разрешениями. Фреймворк снижает точность базовой GNSS-позиции, чтобы соответствовать ожиданиям API. Для получения дополнительной информации см. раздел «Точность» в разделе «Запрос разрешений на определение местоположения» .
Кроме того, эти приложения должны явно указать в своем манифесте, что функция android.hardware.location.network является необязательной . Например:
<uses-feature android:name="android.hardware.location.network" android:required="false" />
Такой подход помогает добиться большей совместимости с устройствами разных форм-факторов и, следовательно, максимальной доступности приложения без различий в коде для получения данных о местоположении при необходимости.