В целях соблюдения конфиденциальности пользователей разработчикам приложений рекомендуется запрашивать только грубые разрешения на определение местоположения. Приложения, которым требуется приблизительное приблизительное местоположение, обычно используют сетевое местоположение (FLP), поскольку оно быстрое и потребляет меньше энергии.
По сравнению с мобильными устройствами на базе Android определение местоположения в автомобильных приложениях может оказаться более сложной задачей. Вы можете использовать два API Android:
API LocationManager требует, чтобы вы явно указали предпочтительного поставщика местоположений.
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 Mobile Services), изменился с определения местоположения исключительно на основе близлежащих вышек сотовой связи, теперь он также использует точки доступа Wi-Fi или даже маяки Bluetooth (BT). Для использования NETWORK_PROVIDER
может потребоваться подключение для передачи данных.
Для автомобильных приложений ограничения устройств различаются. Поскольку GNSS обычно включена, никаких штрафов из-за увеличения мощности и использования батареи не возникает. В результате время безотказной работы IVI не ухудшается. Мы стремимся свести к минимуму обмен данными с нашими серверами.
Поэтому многие приложения используют FLP из Play API вместо LM напрямую, поскольку FLP автоматически делает разумные вещи, используя поставщика местоположения, который лучше всего может удовлетворить критерии/политики запроса местоположения (а именно мощность и точность) под капотом.
В отличие от мобильных устройств, транспортные средства редко перепрыгивают с одного места на другое. Положение автомобиля под капотом в большинстве случаев известно.
Поставщик сетевого местоположения
В большинстве транспортных средств не реализованы необходимые 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" />
Такой подход обеспечивает максимальную совместимость с устройствами разных вертикалей и, следовательно, максимальную доступность приложений без различий в коде для получения позиций при необходимости.