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

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

По сравнению с мобильными устройствами на базе Android, определение местоположения в сети в автомобильных приложениях может быть более сложным. Для этого можно использовать два API Android:

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

  • API сервисов Google Play предлагает более упрощенный способ работы с местоположением благодаря внедрению Fused Location Provider (FLP).

Многие автомобильные приложения используют FLP из API сервисов Google Play (GPS) вместо LM. FLP выбирает оптимального поставщика геолокации на основе критериев запроса и политик (мощность и точность), необходимых автомобилю.

Вместо этого вы можете явно запросить и использовать NETWORK_PROVIDER в LM, а также GPS_PROVIDER для точного определения местоположения, используя разрешения android.permission.ACCESS_FINE_LOCATION . В API 31 FUSED_PROVIDER , ранее доступный только через API GPS, теперь доступен в качестве поставщика местоположения для LM. Более простую реализацию FLP можно найти в FusedLocationProvider.java .

Хотя можно использовать GPS_PROVIDER только с правами грубого разрешения, фреймворк искусственно снижает точность, чтобы соответствовать ожиданиям, это не имеет смысла для разработчиков, ориентированных на телефоны Android, поскольку общая доступность низкая и получение грубого местоположения часто занимает больше времени.

Сетевое расположение в автомобильной промышленности

Функция NETWORK_PROVIDER , используемая на телефонах Android (с мобильными сервисами Google), теперь определяет местоположение не только по ближайшим вышкам сотовой связи, но и по точкам доступа Wi-Fi или даже по маякам Bluetooth (BT). Для использования NETWORK_PROVIDER может потребоваться подключение к интернету.

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

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

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

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

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

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

Мобильный 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" />

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