2015-08-23 2 views
1

Некоторые ресурсы говорят, что getLastKnownLocation() просто дает местоположение места прослушивания места для предыдущего приложения.Does Location Services 'getLastKnownLocation() `проверяет текущее местоположение GPS-телефона?

Но одна вещь, которую я чувствую, отсутствует в разговоре - если в телефоне включен GPS, разве это отслеживание/обновление GPS при движении телефона? Так что, если я позвоню getLastKnownLocation(), разве он не получает текущий GPS с постоянно обновляемого GPS-телефона?

Если да, то почему люди предупреждают об использовании его/обвиняют в потенциальном получении «устаревшего» места? Если GPS отслеживается/обновляется, а getLastKnownLocation() делает одноразовый захват его текущей позиции, что делает getLastKnownLocation() плохой?

Что я ошибаюсь в отношении услуги Locations или GPS?

ответ

2

The documentation говорит: Returns a Location indicating the data from the last known location fix obtained from the given provider.

Кроме того, о "устаревшую месте": This can be done without starting the provider. Note that this location could be out-of-date, for example if the device was turned off and moved to another location. ("Это" относится к получению последнего известного местоположения).

Кроме того, взяты из LocationProvider docs: Each provider has a set of criteria under which it may be used; for example, some providers require GPS hardware and visibility to a number of satellites; others require the use of the cellular radio, or access to a specific carrier's network, or to the internet. They may also have different battery consumption characteristics or monetary costs to the user.

если телефон включен GPS, не это отслеживание GPS/обновление как телефон перемещается?

Ну, это так, но не постоянно. Это связано с потреблением батареи, если телефон постоянно обновляет местоположение GPS, время автономной работы может сильно пострадать. Расположение GPS обычно обновляется, когда приложение запрашивает его. Но даже этот запрос не гарантирует успеха. Например, предположим, что вы вошли в туннель. Некоторые заявки на обновление координат GPS прямо перед входом в туннель, и это удается. Теперь вы вошли в туннель длиной 5 км. Скорее всего, ваше устройство не сможет получить GPS-исправление из туннеля, поэтому в течение следующих 5 км (по крайней мере) getLastKnownLocation() вернет устаревшее значение, , так как устройства последнего известного местоположения находились у входа в туннель.

Что вы можете сделать - это явно запросить обновление местоположения GPS, но это может занять некоторое время, и нет никаких гарантий того, что он будет успешным.

+0

'Местоположение GPS обычно обновляется, когда какое-то приложение запрашивает его' - 'getLastKnownLocation()' не запрашивает его и, таким образом, сообщает ему об обновлении?Тогда как/когда еще он обновляется? – mmcrae

+0

Альтернатива в обучающих программах Android - реализовать «LocationListener» - но все это делает обратный звонок для обновления GPS - это не само обновление GPS. Итак, как лучше использовать 'LocationListener' (единственный другой вариант, упомянутый для получения GPS), чем просто вызов' getLastKnownLocation() '? Документы показывают, что это не означает, что на самом деле обновление GPS - 'getLastKnown' просто захватывает все последние GPS-данные, а' LocationListener 'дает вам возможность узнать, когда GPS обновляется. Кстати, я ценю ваше время, помогая мне в этом. – mmcrae

+0

'getLastKnownLocation()' просто получает последнее известное местоположение, оно не обновляет его. Он обновляется, когда в каком-либо приложении говорится: «Привет, Android, пожалуйста, обновите местоположение GPS». Когда какое-то приложение вызывает 'getLastKnownLocation()', он в основном говорит: «Привет, Android, не могли бы вы рассказать мне, что такое последнее известное место?». Он не просит обновить местоположение. Это «последнее известное местоположение» хранится где-то в ОС Android. –

1

У вас есть предположение, что «если в телефоне включен GPS, это не отслеживание и обновление GPS при движении телефона». Это предположение неверно. Функциональность GPS занимает много времени автономной работы, поэтому ее следует использовать экономно и почти наверняка не все время.

+0

Я рассматриваю различия между реализацией «LocationListener» и проверкой обновлений, а просто вызывает 'getLastKnownLocation()'. Исправьте меня, если я ошибаюсь: 'getLastKnownLocation()' просто хватается за то, что GPS сейчас считает местоположением, тогда как реализация 'LocationListener' делает так, чтобы вы могли быть предупреждены (переопределять методы + прослушивание), когда GPS получает новое место чтения. Но ни один из параметров сам по себе не говорит GPS для обновления - они оба работают, читая, что дает GPS, сначала он делает это по требованию, другой предупреждается о любых изменениях. Все это правильно? – mmcrae

+0

"getLastKnownLocation() просто захватывает то, что GPS в данный момент считает местоположением i" неправильным. Он получает только последнюю позицию, когда любое действие «LocationProvider» работает или было последним для запуска. Я думаю, что @ILUXONCHIK делает хорошую работу, объясняя больше о провайдере. – Victory

Смежные вопросы