2010-10-22 10 views
5

Ich habe das Problem, dass mein Dienst, der den LocationListener implementiert hat, ein GPSupdate alle 500ms empfängt, scheint es. Egal, was minTime ich in der Funktion requestLocationUpdates.requestLocationUpdates aktualisiert nicht auf Intervall in Android

Stück meines Codes:

public class LocationService extends Service implements LocationListener { 

    LocationManager locMan; 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 

     locMan = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
     locMan.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER; 
     locMan.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 1, this); 

    } 

    public void onLocationChanged(Location location) { 
     Log.d("Loc", "Location has been changed"); 
    } 
} 

Aus-Taste in meiner Haupttätigkeit werde ich nenne Startservice(), danach sollte es im Hintergrund laufen, aber es gibt kontinuierliches Updates.

Antwort

1

Ich sehe ein paar Dinge falsch mit Ihrer Situation:

Die Genauigkeit von GPS bestenfalls etwa 3 Metern ist, und das ist unter optimalen Bedingungen. Es macht also keinen Sinn, ein Update anzufordern, wenn sich die Position um 1 Meter ändert. Das GPS-Rauschen könnte leicht eine Bewegung anzeigen, wenn das Gerät stillsteht. Machen Sie die minDistance mindestens 10 wäre meine Empfehlung.

Ich sehe nicht, warum Sie isProviderEnabled() aufrufen, da Sie nichts mit dem zurückgegebenen Wert tun.

Sie sagen, dass nach StartService() Dinge im Hintergrund ausgeführt werden sollten, aber das ist nicht der Fall. Ein Dienst wird nicht im Hintergrund ausgeführt, es sei denn, Sie erstellen eine Art Hintergrundthread dafür. Es gibt zu viel in dieser Antwort zu erklären, wie Dienste funktionieren. Gehen Sie online und lesen Sie ein Buch oder lesen Sie ein gutes Buch über Android-Entwicklung.