Мое приложение проверяет в определенное время, находится ли пользователь в данном месте. Я использую диспетчер тревог, чтобы запустить службу, которая делает этот вызов:
locationManager.requestLocationUpdates(bestProvider, 0, 0, listener);
А также проверяет:
locationManager.getLastKnownLocation(bestProvider);
Но у меня проблемы при работе на реальном устройстве. С одной стороны, getLastKnownLocation
, скорее всего, является последним местом, где был GPS, которое может быть где угодно (то есть, это может быть в милях от текущего местоположения пользователя). Так что я просто подожду requestLocationUpdates
обратных вызовов, и если они не появятся в течение двух минут, удалите слушателя и сдавайтесь, верно?
Неправильно, потому что, если местоположение пользователя уже стабильно (то есть, они недавно использовали GPS и не перемещались), тогда мой слушатель никогда не будет вызван, потому что местоположение не меняется. Но GPS будет работать, пока мой слушатель не будет удален, разряжая батарею ...
Как правильно получить текущее местоположение, не принимая старое местоположение за текущее? Я не против подождать несколько минут.
РЕДАКТИРОВАТЬ: Возможно, я ошибаюсь из-за того, что слушатель не вызывается, это может занять немного больше времени, чем я думал ... Трудно сказать. Я был бы признателен за окончательный ответ.