Мое приложение предназначено для периодического отслеживания местоположения пользователя и отправки его на сервер. Недавно я изменил свой код с помощью API-интерфейсов API Google Play.Использование служб Google Play LocationClient в фоновом режиме
Я создал locationclient и подключен к услуге в onStartCommand
public int onStartCommand(Intent intent, int flags, int startId) {
setUpLocationClientIfNeeded();
if(!mLocationClient.isConnected() || !mLocationClient.isConnecting())
mLocationClient.connect();
return START_STICKY;
}
и в методе onConnected, я посылаю запрос местоположения,
@Override
public void onConnected(Bundle arg0) {
System.out.println("Connected ...");
mLocationClient.requestLocationUpdates(REQUEST, this);
}
Объект запроса,
private static final LocationRequest REQUEST = LocationRequest.create()
.setInterval(5*60*1000) // 5 minutes
.setFastestInterval(3*60*1000) // 3 minutes
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
В настоящее время выпуск,
- метод onLocationChanged не получает вызов на данном интервале в течение 5 минут или самый быстрый интервал 3 минуты. Из журнала, который я видел, его вызов вызывали только дважды или трижды, после чего его вообще не вызывали (я проверил через 1 час).
В чем проблема с моим кодом выше ?. (Я также не видел никакого журнала для «отключенного»)
- Чтобы решить эту проблему, я попытался использовать диспетчер будильника для вызова задачи периодически. Теперь, как получить одно обновление местоположения через LocationClient из трансляционного вещателя. (Locationclient.getLastlocation() возвращает только последний сохраненный местоположение, но она не запрашивает новое местоположение)
У меня очень похожая проблема. Я сделал быстрый и грязный сервис, который периодически запускается с AlarmManager, и каждый раз вызываю getLastLocation. Вызов, по-видимому, возвращает местоположение, но это местоположение никогда не обновляется. Я обнаружил, что открытие приложения Google Maps (возможно, работает с другими приложениями с поддержкой местоположения) неожиданно делает местоположения, полученные моим обновлением службы, нормально. Любая идея о том, что может произойти? –
getlastlocation всегда использует пассивный провайдер вместо GPS или сетевого провайдера, что означает, что только когда какое-либо другое приложение (например, карты Google) получает последнее место. Наше приложение будет использовать тот же пассивно – ThiyagaB
. Вы хотите отслеживать местоположение пользователя, когда приложение работает? или также когда он находится в фоновом режиме? – ddewaele