В целях соблюдения конфиденциальности пользователей разработчикам приложений рекомендуется запрашивать только разрешение на определение приблизительного местоположения. Приложения, которым требуется приблизительное местоположение, обычно используют определение местоположения в сети (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" />
Такой подход обеспечивает максимальную совместимость с устройствами разных вертикалей и, следовательно, максимальную доступность приложения без каких-либо различий в коде для получения позиций при необходимости.