FakiNyan написав:Але ви забули зазначити, що там є кілька сервісів. LocationManager, та FusedLocationProviderClient.
Перший показує досить точні координати, але в мене не вдалося запустити його в фоновому режимі, а другий працює в фоновому режимі (foreground service), але іноді показує дуже неточні дані (це баг такий, і в найближчі кілька тижнів має бути фікс)
Не питали, не казав LocationManager відноситься до Android SDK і він точний бо швидше за все просто тіпає GPS. Не використовуйте його якщо не знаєте що робите, інакше батарею з'їсть дуже швидко.
Натомість, FusedLocationProviderClient дійсно частина Google SDK. Цей клас - не сервіс, отже він не "працює в фоновому режимі" а працює там, де ви його використовуєте (може й бути foreground service, а може й ні). Те, що він показує інколи не точні дані - не баг, а виходить з його дизайну. Він комбінує джерела, що не витрачають багато енергії (Wi-Fi, мобільні станції). Окрім того, цей провайдер може працювати у пасивному режимі, не використовуючи жодні методи локалізації, натомість "підслуховуючи" запити інших додатків. Якщо ваш додаток осіннє на сповіщення про зміну місцезнаходження у такому режимі, сповіщення не надійдуть доки, наприклад, користувач не відкриє Google Maps, який запитає місцезнаходження через GPS.
ПС: не виключаю, що баг існує, але вказую на те, що FusedLocationProviderClient може бути налаштований на низьку частоту оновлення та використання на дуже точних джерел.