Korzystanie z usług Google Play LocationClient w tle usługi
Moja aplikacja jest przeznaczona do śledzenia lokalizacji użytkownika okresowo i wysyłania go na serwer, Ostatnio zmieniłem mój kod z Google play services location API.
Utworzyłem locationclient i połączyłem się z usługą w onStartCommand
public int onStartCommand(Intent intent, int flags, int startId) {
setUpLocationClientIfNeeded();
if(!mLocationClient.isConnected() || !mLocationClient.isConnecting())
mLocationClient.connect();
return START_STICKY;
}
I w metodzie onConnected wysyłam Zapytanie o lokalizację,
@Override
public void onConnected(Bundle arg0) {
System.out.println("Connected ...");
mLocationClient.requestLocationUpdates(REQUEST, this);
}
Obiektem żądania jest,
private static final LocationRequest REQUEST = LocationRequest.create()
.setInterval(5*60*1000) // 5 minutes
.setFastestInterval(3*60*1000) // 3 minutes
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
Teraz problem jest,
- metoda onLocationChanged nie zostanie wywołana w podanym przedziale tj. 5 minut lub najszybszy interwał 3 minuty. Z dziennika mogłem zobaczyć, jego uzyskanie wywołane tylko dwa lub trzy razy po tym jego nie jest wywoływany w ogóle (sprawdziłem po 1 godzinie).
Jaki jest problem z powyższym kodem?. ( I couldn 't see any log for' disconnected ' also)
- aby rozwiązać ten problem, próbowałem użyć alarmmanagera do okresowego wywoływania zadania. Teraz jak uzyskać aktualizację pojedynczej lokalizacji poprzez Locationclient z broadcastreceiver. (locationclient.tylko getLastlocation() zwraca ostatnią przechowywaną lokalizację, ale nie żąda nowej lokalizacji)
38
1 answers
Pełny kod źródłowy usługi w tle dostępny tutaj:
Https://gist.github.com/blackcj/20efe2ac885c7297a676
Spróbuj dodać super call do polecenia onStartCommand.
/**
* Keeps the service running even after the app is closed.
*
*/
public int onStartCommand (Intent intent, int flags, int startId)
{
super.onStartCommand(intent, flags, startId);
setUpLocationClientIfNeeded();
if(!mLocationClient.isConnected() || !mLocationClient.isConnecting())
{
mLocationClient.connect();
}
return START_STICKY;
}
35
Author: blackcj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-07 18:44:56
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-07 18:44:56