kann interval in onLocationChanged nicht festlegen

8

Ich versuche das 'LocationUpdates' Beispiel von Ссылка . Diese Anwendung erhält und druckt Standortbenachrichtigungen.

Ich versuche, das Intervall der Standortaktualisierungen gemäß meinem letzten Standort zu ändern.

Also - ich hatte mlocationRequest.setInterval () in onLocationChanged

hinzugefügt

Das Ergebnis ist sehr falsch. Meine Anwendung wird mit vielen Standortaktualisierungen (wenige Sekunden!) Bombardiert.

Meine einzige Änderung an der Probe ist dies:

%Vor%

Wie kann ich das Intervall in onLocationChanged ändern?

Ich denke, dass das Problem ist, dass requestLocationUpdates die letzte Anfrage zurücksetzt und dann sofort eine weitere Benachrichtigung sendet. So wird eine Schleife erstellt. (schneller als das schnellste Intervall). Also brauche ich eine zuverlässige Möglichkeit, um das Intervall einer 'live' LocationRequest

zu ändern     
DuduArbel 27.04.2014, 14:05
quelle

3 Antworten

1

Sie dürfen mLocationClient.requestLocationUpdates(mLocationRequest, this); in onLocationChanged(Location location)

nicht aufrufen

da Sie den Listener erneut registrieren, erhalten Sie sofort den ersten Anruf.

Also was ich tun würde wäre:

  1. Rufen Sie nicht mLocationClient.requestLocationUpdates(mLocationRequest, this); auf und sehen Sie, ob mLocationRequest.setInterval(1000); in Kraft tritt
  2. Wenn dies nicht funktioniert, versuchen Sie die Registrierung des Listeners aufzuheben und warten Sie dann mit einem Trick, bevor Sie ihn erneut mit den neuen Einstellungen registrieren, etwa wie folgt:

    %Vor%

    Während einer Sekunde gibt es keinen registrierten Listener, daher werden Sie nicht aktualisiert, und danach wird der Listener mit diesem Intervall registriert.

Carlos Robles 07.05.2014 23:54
quelle
0

Versuchen Sie es mit mLocationRequest.setFastestInterval(long millis)
Wie in developer.android.com erwähnt:

  

Auf diese Weise kann Ihre Anwendung Orte schneller passiv akquirieren als Standorte aktiv akquirieren und so Strom sparen. Im Gegensatz zu setInterval (long) ist dieser Parameter exakt. Ihre Anwendung wird niemals schneller als dieser Wert Aktualisierungen erhalten.

    
Ankit Bansal 01.05.2014 08:49
quelle
0

Versuchen Sie zu verwenden:

%Vor%

Ich bin jedoch nicht damit einverstanden, ein requestLocationUpdates im onLocationChanged-Event zu machen; Meiner Meinung nach sollte outLocationChanged Event ...

gesetzt werden     
Ciro Rizzo 05.05.2014 13:36
quelle