Мое приложение предназначено для периодического отслеживания местоположения пользователя и отправки его на сервер. Недавно я изменил свой код с помощью API Google Play сервисов.
Я создал 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);
}
Объект REQUEST:
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 час).
В чем проблема с моим кодом? (Я также не видел никакого журнала для 'disconnected' также)
- Чтобы решить эту проблему, я попытался использовать диспетчер будильника для вызова задачи периодически. Теперь, как получить одно обновление местоположения через LocationClient из трансляционного вещателя. (locationclient.getLastlocation() возвращает только последнее сохраненное местоположение, но не запрашивает новое местоположение)