Является ли Fused Location Provider хорошим выбором?

Я разрабатываю приложение, в котором хочу использовать Fused Location Provider. Но у меня есть некоторые сомнения и пара вопросов.

  1. Когда GPS выключен и я установил высокий приоритет, означает ли это, что GPS будет автоматически включен или нет?
  2. Могу ли я установить UpdateLocation с провайдером Fused с ВЫСОКИМ приоритетом по запросу, чтобы хотя бы немного сэкономить заряд батареи?
  3. Как я могу узнать, какой провайдер использует Fused (GPS или сетевой провайдер)? И наконец
  4. Является ли провайдер Fused лучшим выбором для определения местоположения Android? Есть ли в нем отрицательные моменты?

Каково твое мнение? Заранее спасибо.


person Atenica    schedule 28.06.2016    source источник
comment
да, FusedLocationApi лучше всего подходит для Android, он включает улучшенные обновления местоположения с высокой точностью и экономией заряда батареи. Проверьте это для получения дополнительной информации - разработчики. google.com/android/reference/com/google/android/gms/   -  person Onkar Nene    schedule 28.06.2016
comment
Это может быть лучше, но это ничего не значит. Это все еще отстой, потому что никто из Google не заботится об изменении положения маршрутизаторов WLAN, что может привести к местоположениям, которые находятся за тысячи километров от реальных, и кажется, что Google предпочитает местоположение WLAN, даже если GPS имеет правильные значения...   -  person The incredible Jan    schedule 13.10.2017


Ответы (4)


Когда GPS выключен и я установил высокий приоритет, означает ли это, что GPS будет автоматически включен или нет?

Нет, он не включится автоматически. Но если вы используете SettingsApi, пользователю будет предложено диалоговое окно с информацией о том, что GPS должен быть включен. Если пользователь примет это, GPS будет активен автоматически. Проверьте SettingsApi.

Как я могу узнать, что использует провайдер Fused (это GPS или сетевой провайдер)

Если вы правильно используете плавный API-интерфейс провайдера с SettingsApi. Это сделает адекватными необходимые настройки для текущего запроса местоположения.

Является ли провайдер Fused лучшим выбором для определения местоположения Android? Есть ли в нем отрицательные моменты?

На мой взгляд, прежде чем работать с провайдером Fusion, вы должны иметь дело непосредственно с провайдерами (GPS, сеть). Но Fusion просто спрашивает вас: «Насколько точное местоположение вы хотите получать?»

person blackkara    schedule 28.06.2016
comment
Если вы правильно используете плавный API-интерфейс провайдера с SettingsApi. Это сделает адекватными необходимые настройки для текущего запроса местоположения. нет ответа на вопрос. Я действительно ненавижу не знать, откуда у провайдера Fuse свое местоположение. Я узнал на собственном горьком опыте, что нельзя доверять значению точности. Точность совершенно бессмысленна, если местоположение определяется не по GPS или GSM. - person The incredible Jan; 13.10.2017
comment
Да, я знаю, предложение использовать «Настройки API» не является ответом. Но нам должно быть интересно узнать, насколько точным является местоположение, а не то, какие из них (GPS, СЕТЬ) используются при использовании провайдера плавного определения местоположения. Таким образом, API настроек гарантирует приоритет вашего запроса местоположения. Кстати, до сих пор я получал высокоточные местоположения от провайдера Fuse через PRIORITY_HIGH_ACCURACY и правильные настройки. - person blackkara; 13.10.2017

Как здесь https://developer.android.com/training/location/index.html очень четко заявил, что API-интерфейсы определения местоположения сервисов Google Play предпочтительнее, чем API-интерфейсы определения местоположения платформы Android (android.location), поскольку это способ добавления информации о местоположении в ваше приложение. Если вы в настоящее время используете API-интерфейсы определения местоположения платформы Android, вам настоятельно рекомендуется как можно скорее переключиться на API-интерфейсы определения местоположения сервисов Google Play. Так что я надеюсь, что вы получили свой ответ.

person Mahendra Chhimwal    schedule 28.06.2016
comment
Значит, провайдер Fused действительно лучший? :) - person Atenica; 28.06.2016
comment
да. По крайней мере, так говорят официальные документы Android. И я не вижу причин не использовать Fused API. - person Mahendra Chhimwal; 28.06.2016
comment
Еще один вопрос ... когда я использую ВЫСОКИЙ приоритет, а в документах пишет, что интервал составляет около 5 секунд ... это означает, что каждые 5 секунд местоположение обновляется или это означает, что мы должны ждать 5 секунд, чтобы получить наше местоположение? - person Atenica; 28.06.2016
comment
Когда мы устанавливаем интервал для объекта запроса местоположения, это означает, что каждые 5 секунд мы будем получать обновление нового местоположения. Если у FusedApi есть обновления местоположения для других приложений, он может предоставить вам обновление даже перед интервалом. Для минимизации этого есть API setFasInetrval(длинные миллисекунды). - person Mahendra Chhimwal; 28.06.2016
comment
У меня есть еще 2 вопроса, и тогда я перестану вас беспокоить..:) Этот провайдер Fused работает, когда приложение находится в фоновом режиме, и другой вопрос заключается в том, что когда мы смотрим на долготу и широту, мы видим часть, где пишет точность. .что это значит? Точно откуда? - person Atenica; 28.06.2016
comment
@Mahendra Chhimwal Нет причин против Fused API? Только если вас не волнуют совершенно неверные координаты из WLAN, которые Google объявляет точными... - person The incredible Jan; 13.10.2017
comment
что, если пользователь находится в Китае и на его телефоне не установлен сервис Google Play, то fusedLocation не будет работать ВООБЩЕ, верно? - person Saitama; 10.12.2017

Я сделал тестовое приложение для Gps, Wifi и Fused Location Provider и тестировал его в течение 2 дней. Это лучше, потому что он использует оба из них, и в большинстве случаев он является наиболее точным. Кроме того, данные GPS представляют собой очень зашумленные данные, которые вызывают дрожание, для устранения этого используются фильтр нижних частот или другие фильтры. Одним из наиболее успешных фильтров, используемых для получения наиболее точных результатов, является фильтр Калмана. FusedLocationProvider использует этот фильтр так же, как RotationVector, который представляет собой объединенный датчик, сочетающий аппаратное и программное обеспечение. RotationVector использует акселерометр, гироскоп (если имеется) и датчик магнитного поля для получения и фильтрации данных о положении и азимуте.

Location.getProvider для Gps с LocationManager возвращает «gps», Wifi возвращает «сеть», а FusedLocationProvider возвращает «плавленный».

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

Все, кроме «Экономия заряда батареи», включает GPS, если он доступен. Эти настройки доступны на моем телефоне Android 7.1.1. Настройка местоположения отличалась в предыдущих версиях Android на стороне пользователя. Как разработчик, чтобы включить использование GPS, вы должны установить mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

PRIORITY_HIGH_ACCURACY — используйте этот параметр, чтобы запросить максимально точное местоположение. С этой настройкой службы определения местоположения с большей вероятностью будут использовать GPS для определения местоположения.

Настройка приоритета также определяет уровень использования батареи.

Могу ли я установить UpdateLocation с провайдером Fused с ВЫСОКИМ приоритетом по запросу, чтобы хотя бы немного сэкономить заряд батареи?

Да, вы можете установить интервал запроса местоположения в дополнение к приоритету.

mLocationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS);
mLocationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);

Как я могу узнать, какой провайдер использует Fused (GPS или сетевой провайдер)?

Местоположение от Wi-Fi никогда не возвращает true для Location.hasSpeed(), но Gps почти всегда возвращает true, если вы находитесь на улице. Также в location.getExtras() есть тег спутников, который вы можете проверить на наличие спутников, доступных только для GPS. Скорость может быть неправильной, если вы идете пешком или, насколько я читал, я не пробовал это на машине, когда скорость меньше 5 км / ч, это не очень точно. Я имею в виду, что если вы используете FLP и данные о последнем местоположении содержат информацию о скорости, это определенно от GPS.

Есть ли в нем отрицательные моменты?

Начиная с Android 8.0 и выше существует ограничение на получение местоположения если вы не используете службу переднего плана или не получаете местоположение на переднем плане, пока приложение не приостановлено как для FLP, так и для LocationManager.

Также FLP требует, чтобы GooglePlayService был доступен на устройстве пользователя, и он должен быть выше определенной версии. 10 или 11 в зависимости от того, какой из них вы используете. Это может быть проблемой, если вы хотите опубликовать свои приложения в стране, например в Китае, где запрещены сервисы Google Play.

person Thracian    schedule 10.10.2017
comment
Местоположение от Wi-Fi никогда не возвращает true для Location.hasSpeed(), но Gps почти всегда возвращает true, если вы находитесь на улице. Также в location.getExtras() есть тег спутников, который вы можете проверить на наличие спутников, доступных только для GPS. Спасибо тебе за это. Очень полезно. С точки зрения того, что лучше, зависит от вашего случая. Если вам нужны ТОЛЬКО результаты GPS, возможно, FLP не лучший вариант? - person ZephDavies; 31.01.2019

В существующих ответах не сказано, почему FusedLocationProvider лучше.

Это лучше, потому что API объединяется из большего количества источников данных (датчики, Wi-Fi, контекст, история) интеллектуальным и экономичным способом. Кроме того, Google постоянно улучшает его, добавляя больше источников данных. Если ваше приложение использует его, вы получаете эти улучшения бесплатно.

person Mark Lu    schedule 20.07.2017
comment
Это не лучше, потому что многие из провайдеров определения местоположения ненадежны, и Google по-прежнему утверждает, что их местоположение очень точное. Места Wi-Fi иногда ДЕЙСТВИТЕЛЬНО отстой, и вы не можете разобраться в них. - person The incredible Jan; 13.10.2017