Как Android получает грубое местоположение?

15

Я читал, что андроид (и схожие операционные системы, например, iOS) получают текущее грубое местоположение с помощью триангуляции башни Wi-Fi или GSM. Я понял основную идею, но у меня есть вопросы по поводу деталей.

  1. Android обычно использует оба метода или предпочитает один и отступает к другому?
  2. Связывается ли он с сервером, чтобы получить позицию через WiFi? (например, отправка SID Wi-Fi в веб-сервис)
  3. Связывается ли он с оператором связи для определения местоположения через вышки GSM или это делается на устройстве?
Тим Бюте
источник

Ответы:

8

Это действительно зависит от разработчика, как реализовать сервис определения местоположения. Полное описание доступно здесь:

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

График примерно 1/3 вниз по странице довольно полезен, чтобы увидеть, что может делать типичное приложение, но опять же, это полностью зависит от разработчика приложения. Типы услуг определения местоположения:

  • Кэшированное исправление
  • Cell-ID
  • Wi-Fi
  • GPS
  • Макет Местоположение

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

Чтобы ответить на ваши вопросы ...

  1. Это зависит от конкретного разработчика приложения, но в большинстве случаев последовательность будет Cached Fix, Cell-ID, Wifi, GPS, в этом порядке.
  2. Да, после получения идентификаторов башен или идентификаторов SSID сигналов WiFi эти данные передаются в Google для определения приблизительного местоположения.
  3. Нет, Google сделал кое-что действительно умное здесь. Google имеет собственную базу данных местоположений вышек сотовой связи и не требует взаимодействия с оператором связи для определения местоположения вышек.

В этой статье есть некоторые подробности http://franciscokattan.com/2010/02/06/dynamic-cell-id-clever-way-to-block-google-but-will-it-backfire/

Короткая версия заключается в том, что при использовании приложения, такого как Google Maps, приложение будет отправлять текущую информацию Cell-ID обратно вместе с вашим текущим исправлением GPS. Таким образом, Google получает очень хорошую выборку уровней сигнала в разных местах и ​​может создать очень богатую базу данных.

JadeMason
источник
Мне очень нравится ваш ответ, но я не уверен, что вы правы в части "все зависит от разработчика". Насколько я могу судить, разработчик может решить только получить штраф или грубое местоположение. Другими словами, он может использовать LocationManager.NETWORK_PROVIDER и / или LocationManager.GPS_PROVIDER для получения местоположения. Я думаю, что он не может решить или даже увидеть, если используется Wi-Fi или GSM, верно?
Тим Бют
В наиболее распространенном случае разработчик не будет заботиться о том, поступают ли данные с WiFi или Cell-ID, но разработчик может установить ограничения, позволяющие приложению работать только тогда, когда WiFi отключен или GPRS / GSM отключен. Я взял твой вопрос, чтобы означать: «Есть ли стандартная последовательность, которой следуют все приложения», и ответ на это - нет. Однако с учетом различий между WiFi и Cell-ID разработчик приложения имеет ограниченную возможность специально запрашивать один тип службы определения местоположения.
JadeMason
1
Знаете ли вы, как отправить местоположение точек доступа Wi-Fi в их базу данных, чтобы у меня была лучшая триангуляция в моем районе / в помещении? Я открыл ветку для этого моего вопроса: android.stackexchange.com/questions/4715/…
Özgür
3

Во многом это зависит от носителя, и я не разработчик, но вот что я мог бы собрать воедино из Интернета и тренингов по электронному расследованию преступлений:

  1. Да, но это зависит от конкретных приоритетов LBS приложений, которые устанавливаются разработчиком и могут основываться на текущей точности курса, уровнях мощности, предопределенных приоритетах ...
  2. Да. Операторы имеют собственные базы данных местоположения базовых станций Wifi.
  3. Я не могу говорить с Android конкретно, но обычно это будет оператор и тип сети (CDMA или GSM). Телефоны способны на оба, но, по крайней мере, несколько лет назад они проделали эту работу на телефоне из-за ограничений пропускной способности.
Matt
источник
0

Ваш телефон знает, какие ближайшие башни. Для каждой страны существует база данных провайдеров, идентификатор которой находится на карте. Эта база данных может быть достаточно маленькой, чтобы быть предварительно установленной вашим провайдером или предоставленной по беспроводной сети. Как андроид телефон получает эти данные, я не знаю.

Barfieldmv
источник
-1

У меня немного другие ответы для # 3: устройство можно использовать, если вы хотите использовать триангуляцию, но вам нужно использовать носитель, если вы хотите сопоставить Cell-ID и локализацию башни gsm (или cdma).

обкрадывать
источник
но является ли эта опция определяемой разработчиком приложения или даже конечным пользователем, или оператором?
Мэтт
Это обязательно, если вы хотите использовать этот способ для локализации устройства. Использование триангуляции или другого метода позволяет вам узнать, где вы находитесь в зависимости от положения антенны. Но если вы не знаете широту / длину антенны, вы не сможете получить свое положение на карте. Я дома, я ясно :)
Роб
@Rob Но вам не нужен перевозчик, чтобы найти местоположение башни. Каждая башня транслирует уникальный идентификатор, каждый может самостоятельно подобрать его и отобразить на карте, без взаимодействия с оператором. Google уже давно занимается этим для вышек сотовой связи и точек доступа WiFi. Автомобиль Google Streetview собирает информацию во время своего путешествия, и пользователи Карт Google на различных платформах также отправляют анонимные данные, соответствующие GPS-исправлениям, с идентификаторами антенны и Wi-Fi и мощностью. Это похоже на то, как Google собирает большую часть своих данных о трафике в городах, они объединяют скорость и позиции от множества пользователей Карт.
GAThrawn
Вы уверены ? Выглядит удивительно Например, в Германии (и других странах Европы) Google был привлечен к ответственности за сбор информации о Wi-Fi, поэтому похоже, что они не использовали этот ресурс. Для базы данных GSM, если она принадлежит Google, она должна быть доступна, и я никогда не слышал об этом.
Роб
1
@Rob googlemobile.blogspot.com/2008/06/… "Телефон знает идентификатор вышки сотовой связи, которую он использует в настоящее время. Если в телефоне есть GPS, приложение Карты на телефоне отправляет координаты GPS вместе с идентификатором ячейки в сервер местоположения Google. " не могу найти ссылку сейчас, но они объявили некоторое время назад, что приложение Blackberry Google Maps отправляет обратно WiFi SSID и силу по той же причине. Это не то же самое, что программная «ошибка» в программном обеспечении Streetview, на которую они предъявляют иск, который захватил больше данных WiFi, чем предполагалось.
GAThrawn