Можно ли получить свежие данные (точное текущее местоположение) с помощью FusedLocationApi Android?

Допустим, я использую запросLocationUpdates FusedLocationApi с интервалом 5 минут, поэтому у меня будут кэшированные данные о местоположении, которые не будут намного старше 5 минут.

Однако, когда пользователь, например, нажимает кнопку, я хотел бы получить текущую позицию вместо кэшированной. Как я могу это сделать?

Вопрос 1: Есть ли способ принудительно активировать обновление местоположения, чтобы я мог получать свежие данные о местоположении вместо потенциально 5-минутных данных?

Вопрос 2: У FusedLocationApi есть функция getLastLocation, которой, я думаю, тоже будет 5 минут. Поскольку функции getCurrentLocation нет, как мы можем этого добиться?


person Bruce    schedule 07.08.2015    source источник


Ответы (1)


Конечно, вы можете это сделать.

Итак, чтобы начать обновление с 5-минутным интервалом, вы либо:

Используйте экземпляр LocationListener

ИЛИ

Создайте PendingIntent

С помощью метода requestLocationUpdates(), найденного в API FusedLocationProvider.

Эта стратегия, как вы запрашиваете в вопросе, вернет «самое свежее» местоположение.

Вы правы, getLastKnownLocation() работает только в том случае, если в системе есть кешированное местоположение. Таким образом, чтобы получить самое последнее местоположение, завершите обновления, которые вы изначально запрашивали, а затем повторно запросите обновления с теми же интервалами.

person andrewdleach    schedule 07.08.2015
comment
Единственный способ получить самое последнее местоположение — завершить обновление местоположения и перезапустить его снова? Ну, если это единственный способ, я думаю, у меня нет выбора... но я надеюсь, что есть более простой способ. Даже в геолокации HTML5 есть «getCurrentLocation», который работает бок о бок с «watchPosition», который похож на requestLocationUpdates. :( - person Bruce; 15.08.2015