LocationClient ändern der LocationRequest Parameter

  • Hi,


    ich verwende den LocationClient in einer App. Die Parameter für den LocationRequest setze ich wie auf der Google Developer Seite beschrieben http://developer.android.com/t…tes.html#UpdateParameters


    Soweit funktioniert scheinbar auch alles, die onLocationChanged Funktion wird im 5-Sekunden Takt aufgerufen. Ich möchte jetzt im Nachhinein die Parameter "interval" und "fastestInterval" anpassen. Das mache ich wie folgt:


    Java
    // Funktion die von onLocationChanged aufgerufen wird...
    locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    locationRequest.setInterval(30000);locationRequest.setFastestInterval(20000);
    locationClient.requestLocationUpdates(locationRequest, this);



    Leider wird onLocationChanged weiterhin im 5 Sekunden Takt aufgerufen und nicht wie eigentlich erwartet im 20 bzw. 30 Sekunden Takt.


    Was habe ich vergessen oder mache ich falsch? Ich habe das Gefühl der LocationClient missachtet den LocationRequest von Anfang an, denn wenn ich in der onConnected Funktion

    Java
    locationClient.requestLocationUpdates(locationRequest, this);

    raus nehme, wird die Funktion auch im 5 Sekunden Takt aufgerufen.




    Viele Grüße
    redneb

  • Reine Spekulation:
    sollte die LocationClient Bibliothek mit auf den Location Manager aufbauen, dann gibt es da ein 'aber':

    Zitat von Dokumentation zu LocationManager

    Prior to Jellybean, the minTime parameter was only a hint, and some location provider implementations ignored it. From Jellybean and onwards it is mandatory for Android compatible devices to observe both the minTime and minDistance parameters.

    http://developer.android.com/r…android.app.PendingIntent)


    Es kann also tatsächlich sein, dass da was ignoriert wird.


    Andererseits klingt das Problem mit dem Weglassen des requestLocationUpdates tatsächlich so, als würdest du anderweitig außerhalb des Clients (vielleicht direkt über den LcoationManager, also alter Testcode?) dieselbe Methode aufrufen.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Hi,


    danke für eure Antworten.


    Mittlerweile habe ich eine eigene Klasse geschrieben die je nachdem ob der Google Play Service überhaupt vorhanden ist dann den klassischen Weg verwendet über den LocationManager.



    Mein vorheriges Problem habe ich so gelöst: Wenn sich die Zeiten für den LocationRequest ändern, schließe ich den LocationClient mittels .disconnect(), erstelle einen neuen LocationClient mit den selben Listenern wie vorher, erstelle ein neues LocationRequest Objekt mit den Zeiten die ich benötige. Verbinde den LocationClient mit .connect() und sobald dieser verbunden ist, weise ich den LocationRequest zu. Dann funktioniert es so wie gedacht, nur besonders schön finde ich den Weg nicht. Anders habe ich es einfach nicht hinbekommen. Sobald ich eine Zuweisung an einen LocationClient gemacht habe der noch verbunden war, wurde im 5 Sekunden Takt die Funktion ausgelöst.


    Sorry für die ungenaue Lösungsbeschreibung, bin etwas in Eile und unterwegs. Bei Bedarf kann ich gerne nochmal Beispielcode posten, jedoch doch ist es ja kein Hexenwerk.



    Viele Grüße
    redneb

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!