Получить грубое местоположение

В целях соблюдения конфиденциальности пользователей разработчикам приложений рекомендуется запрашивать только грубые разрешения на определение местоположения. Приложения, которым требуется приблизительное приблизительное местоположение, обычно используют объединенное сетевое местоположение (FLP), поскольку оно быстрое и потребляет меньше энергии. По сравнению с мобильными устройствами на базе Android определение местоположения в автомобильных приложениях может оказаться более сложной задачей. Вы можете использовать два API Android:

  • API LocationManager требует, чтобы вы использовали requestLocationUpdates для явного определения предпочтительного поставщика местоположений.

  • API сервисов Google Play предлагает более простой способ работы с местоположением в FusedLocationProviderClient .

Многие автомобильные приложения используют FLP из API сервисов 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 (BT). В результате NETWORK_PROVIDER может потребоваться подключение для передачи данных.

Для автомобильных приложений ограничения устройств различаются. Поскольку глобальная навигационная спутниковая система (GNSS) обычно включена, никаких штрафов из-за увеличения энергопотребления и использования батареи не возникает. В результате время безотказной работы IVI не ухудшается. Мы стремимся свести к минимуму обмен данными с нашими серверами.

Поэтому многие приложения используют FLP из Play API вместо напрямую LocationManager , поскольку FLP автоматически делает разумные действия, используя поставщика местоположения, который лучше всего соответствует критериям/политикам запроса местоположения (а именно мощности и точности).

В отличие от мобильных устройств, транспортные средства редко перепрыгивают с одного места на другое. Положение автомобиля под капотом в большинстве случаев известно.

Поставщик сетевого определения местоположения (NLP)

В большинстве транспортных средств не реализованы необходимые API-интерфейсы телефонии для получения необходимой информации об идентификаторе ячейки (и уровне сигнала). В результате, поскольку мы минимизируем использование данных, дополнительная функциональная реализация NLP не предоставляется.

Поставщик объединенного местоположения

Мобильный FLP, помимо разумного использования сетевых и GPS-провайдеров по мере необходимости, объединяет информацию от других датчиков для дальнейшего повышения качества местоположений. С другой стороны, текущая реализация FLP компании Automotive использует преимущества вышеупомянутых предположений и постоянно использует 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" />

Такой подход обеспечивает максимальную совместимость с устройствами разных вертикалей и, следовательно, максимальную доступность приложений без различий в коде для получения позиций при необходимости.