Есть ли преимущества использования FusedLocationProviderApi над LocationManager?
Раньше, чтобы получить текущее местоположение пользователя, я использовал LocationManager:
LocationManager locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
} else if (locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
}
Легко читается и очень простой код.
Но я заметил, что недавно Google опубликовал модель нового клиента API в сервисах Google Play и предлагает использовать FusedLocationProviderApi, который выглядит намного сложнее, он асинхронный, он требует обработки обратных вызовов и т.д.
Есть ли преимущества использования FusedLocationProviderApi над LocationManager?
Ответы
Ответ 1
FusedLocationProvider использует сочетание аппаратного обеспечения для определения местоположения на основе контекста запроса, что означает, что он оптимизирован для вас прозрачно. Он также будет кэшировать захваченные места между приложениями, чтобы избежать ненужной работы для определения информации о местоположении. Поэтому, если у пользователя есть множество приложений, ориентированных на местоположение, они потенциально могут избежать налогообложения устройства (и ожидания) для захвата местоположения, поскольку он, возможно, уже был кэширован.
В то время как ol 'LocationManager будет достаточным в небольших одноразовых ситуациях, вы должны обязательно рассмотреть более новую альтернативу, так как преимущества могут быть большими, а работа по внедрению проста.
Вы также можете использовать его, поскольку Google Play Services регулярно обновляется на всех устройствах и постоянно включает улучшения в функции, основанные на местоположении (и многое другое).
Ссылка на объяснение FusedLocationProvider при запуске: https://www.youtube.com/watch?v=Bte_GHuxUGc
Ответ 2
В некоторых ситуациях FusedLocationProvider выполняется ужасно. Например, если вы хотите отслеживать свой путь на карте, он может решить переключиться между данными GPS и данными Wi-Fi. Чтобы рассчитать точное пройденное расстояние, гораздо лучше заставить показания GPS с помощью LocationManager, особенно если вы также хотите отслеживать высоту, которую Wi-Fi не предоставляет.
Ответ 3
Просто имейте в виду, что FusedLocationProvider
использует LocationManager
под обложками, чтобы хотя бы получить точки GPS. Это может быть выполнение Wifi-сканирования и поиск результатов для определения местоположения, а не использование сетевого провайдера, но я не знаю о документации, о которой я знаю.
Если вы не можете или не хотите использовать FusedLocationProvider
, я бы рекомендовал его использовать.