Провайдери локації Android - провайдер GPS або мережі?


128

У своїй програмі я хотів би визначити поточне місцезнаходження користувача. Однак у мене є кілька питань з цього приводу:

  1. Є різні постачальники місцеположень, який із них є найбільш точним? GPS Provider або провайдер мережі ?

  2. У чому різняться доступні постачальники? Як вони функціонують?

  3. Чи можете ви надати мені якісь фрагменти коду чи підручники щодо того, як розпочати роботу з реалізацією функціональності GPS у моїй програмі?


18
Голосуйте за повторне відкриття - питання добре, і відповідь надається корисно. Відповідь також застаріла, оскільки зараз є постачальник з’єднаних місцеположень - відкриття питання дозволить оновити її.
Річард Ле Месюр'є

Відповіді:


281

В Android є 3 провайдери локації.

Вони є:

gps -> (GPS, AGPS): назва постачальника GPS-локації. Цей провайдер визначає місцезнаходження за допомогою супутників. Залежно від умов, цей постачальник може зайняти деякий час, щоб повернути виправлення місцеположення. Потрібен дозвіл android.permission.ACCESS_FINE_LOCATION.

мережа -> (AGPS, CellID, WiFi MACID): Назва постачальника мережевого місцезнаходження. Цей провайдер визначає місцеположення на основі наявності стільникової башти та точок доступу Wi-Fi. Результати отримують за допомогою мережевого пошуку. Потрібен будь-який з дозволів android.permission.ACCESS_COARSE_LOCATION або android.permission.ACCESS_FINE_LOCATION.

пасивний -> (CellID, WiFi MACID): спеціальний постачальник місцеположення для прийому місцеположень без фактичного ініціювання виправлення місцеположення. Цей постачальник може використовуватися для пасивного отримання оновлень про місцеположення, коли інші програми чи послуги вимагають їх, фактично не вимагаючи місцеположення самостійно. Цей постачальник поверне місця, створені іншими постачальниками. Потрібен дозвіл android.permission.ACCESS_FINE_LOCATION, хоча якщо GPS не ввімкнено, цей провайдер може повертати лише грубі виправлення. Саме так Android називає цих провайдерів локації, однак основні технології для роботи цих матеріалів відображаються на певний набір апаратних і технічних можливостей, що надаються (послуга мережі).

Найкращий спосіб - спочатку скористатись “мережевим” або “пасивним” провайдером, а потім резервним “gps” та залежно від завдання переключитися між провайдерами. Це охоплює всі випадки та забезпечує найнижчу загальну послугу знаменника (в гіршому випадку) та велику послугу (в кращому випадку).

введіть тут опис зображення

Посилання на статтю: Провайдери локації Android - gps, мережа, пасивна Автор Nazmul Idris

Код посилання: https://stackoverflow.com/a/3145655/28557

----------------------- Оновлення -----------------------

Тепер у Android є постачальник з’єднаних адрес

Постачальник плавного розташування інтелектуально керує базовою технологією розташування та надає вам найкраще місце відповідно до ваших потреб. Це спрощує способи додатків отримувати поточне місцезнаходження користувача з покращеною точністю та меншим енергоспоживанням

Провайдер плавного розташування надає три способи отримання місця розташування

  1. Останнє місцезнаходження: Використовуйте, коли хочете дізнатися поточне місце розташування один раз.
  2. Запросити місцеположення за допомогою слухача: Використовуйте, коли програма знаходиться на екрані / фронту, і потрібно продовжувати місцезнаходження.
  3. Попросити місцеположення, використовуючи очікуваний намір: використовувати, коли додаток у фоновому режимі та вимагає продовження розташування

Список літератури:

Офіційний сайт: http://developer.android.com/google/play-services/location.html

Приклад постачальника плавного розташування: GIT: https://github.com/kpbird/fused-location-provider-example

http://blog.lemberg.co.uk/fused-location-provider

-------------------------------------------------- ------


2
Зауважте, що існує також постачальник послуг Google Play Services Fused Locator.
Річард Ле Месюр'є

Чи можливо створити власного постачальника послуг? android.permission.INSTALL_LOCATION_PROVIDER підписаний або система означає, що я повинен мати можливість встановити його на вкоріненому пристрої, ні?
JohnyTex

1
Провайдер плавленого розташування доступний лише для API> = 19. Нам потрібно дотримуватися старої процедури для пристроїв, що працюють з більш старими версіями, правда?
Shobhit Puri

чи є який-небудь зразок коду / існуючий API, який шукає місце розташування GPS і через деякий час повертається до постачальника послуг, якщо GPS не зможе отримати місцезнаходження? чи слід обробляти в коді якоюсь логікою таймера?
jrhamza

Пасивний провайдер «» «Цей провайдер може бути використаний для пасивного прийому оновлень розташування , коли інші програми або служби запросити їх практично не запитувач Місцях себе.» «»
nurisezgin

7

GPS, як правило, більш точний, ніж мережевий, але іноді GPS недоступний, тому вам може знадобитися перемикатися між цими двома.

Гарним початком може стати перегляд сайту розробників для android. У них був розділ, присвячений визначенню місцезнаходження користувача, і він містить усі необхідні зразки коду.

http://developer.android.com/guide/topics/location/obthing-user-location.html


@Noman Ви хочете отримати довготу та широту свого місцезнаходження?
Nikunj Patel

@Scorpio я насправді хотів дізнатись, який варіант краще серед постачальника мереж та постачальника GPS. . .Отправте мені посилання як відповідь на моє запитання про те, що ах мені дуже допомогло ... тепер я використовую ПОСТАВНИК МЕРЕЖІ у своєму додатку :-)
Noman

3

Тут згадуються кілька чудових відповідей. Ще одним підходом ви можете скористатись безкоштовними пакетами SDK, доступними в Інтернеті, такими як Atooma, tranql та Neura, які можна інтегрувати з вашим додатком Android (на інтеграцію потрібно менше 20 хв). Поряд із точним визначенням вашого користувача, він також може дати точну інформацію про діяльність вашого користувача. Також деякі з них споживають менше 1% від вашого акумулятора


1
чи можу я отримати посилання на sdk, який ви згадуєте?
Kishore Relangi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.