Próbuję użyć Smart Location Library, aby uzyskać okresowe aktualizacje lokalizacji. Ale po uruchomieniu procesu odpala raz słuchacza, a następnie nie ma dalszych aktualizacji. Oto kod użyłemProblemy z używaniem inteligentnej biblioteki lokalizacji
public void startTracking(View v) {
provider = new LocationGooglePlayServicesWithFallbackProvider(this);
Log.i("Tag","Start Tracking");
SmartLocation smartLocation = new SmartLocation.Builder(this)
.logging(true)
.build();
smartLocation.location(provider)
.config(LocationParams.BEST_EFFORT)
.start(this);
smartLocation.activity().start(this);
}
public void stopTracking(View v) {
Log.i("Tag","Stop Tracking");
SmartLocation.with(this).location().stop();
SmartLocation.with(this).activity().stop();
}
@Override
public void onActivityUpdated(DetectedActivity detectedActivity)
{
Log.i("Tag","ActivityUpdate : "+detectedActivity.toString());
}
@Override
public void onLocationUpdated(Location location)
{
Log.i("Tag","LocationUpdate : "+location.getLatitude()+","+location.getLongitude());
}
to wyjście Logcat mam
01-27 14:09:01.791 3038-3038/com.angulusits.smartlocationtest I/Tag:
Start Tracking
01-27 14:09:01.879 3038-3038/com.angulusits.smartlocationtest I/Tag:
ActivityUpdate : DetectedActivity [type=STILL, confidence=100]
01-27 14:09:02.017 3038-3038/com.angulusits.smartlocationtest I/Tag:
LocationUpdate : <some-value>,<some-value>
ta jest podana jak najszybciej i naciśnij startButton, wtedy nie ma więcej wartości.
Sprawdziłem kod na Bibliotece dla wartości BEST_EFFORT która jest:
public static final LocationParams BEST_EFFORT = new Builder().setAccuracy(LocationAccuracy.MEDIUM).setDistance(150).setInterval(2500).build();
więc spodziewać aktualizacji co 2500 millisecs nawet jeśli urządzenie nie jest w ruchu. Byłbym wdzięczny, gdyby ktoś wskazał mi właściwy kierunek.
Ja też stoję w obliczu tego samego problemu. onLocationUpdated wywołuje raz, gdy zainicjowałem start, ale po tym nie ma żadnych aktualizacji. dzięki za każdą odpowiedź – kiruba