2017-05-11 4 views
1

in Location gesetzt, wenn ich Zeit intervel in Location dann Position gesetzt perfekt immer mit diesem CodeOnLocationChanged nicht, wenn die Zeit Arbeits intervel nicht

private static final long INTERVAL = 500 * 1; 
private static final long FASTEST_INTERVAL = 500 * 1; 
private static final int SMALLEST_DISPLACEMENT = 5; 

protected void createLocationRequest() { 
    LocationRequest mLocationRequest = new LocationRequest(); 
    mLocationRequest.setInterval(INTERVAL); 
    mLocationRequest.setFastestInterval(FASTEST_INTERVAL); 
    mLocationRequest.setSmallestDisplacement(SMALLEST_DISPLACEMENT); 
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 
} 

, aber wenn ich diese Zeile dann entfernen OnLocationChanged funktioniert nicht. Ist es notwendig das Zeit intervel in LocationRequest einzustellen?

Ich möchte Lage nach Verschiebung nicht nach Zeit intervel bekommen.

+0

Soweit ich mich erinnern kann, wenn Sie das Intervall nicht einstellen, wird es nicht mit Intervall aktualisiert (oder nach langer Zeit, etwa 60 Minuten), nur wenn Ort geändert wird. – Opiatefuchs

+0

Wenn Sie das Intervall nicht einstellen, erhalten Sie nie einen Standort. Ich fahre ständig, aber mein Standort wird nur nach dem Zeitintervall aktualisiert. onLocationChanged hängt von der Zeit ab, nicht von der Verschiebung. –

Antwort

0

Es überraschte mich auch, bitte korrigieren Sie mich, wenn ich falsch interpretiere.

Aus dem LocationRequest Quellcode;

private long mInterval = 60 * 60 * 1000; // 60 minutes 
private long mFastestInterval = (long)(mInterval/FASTEST_INTERVAL_FACTOR); // 10 minutes 

Wenn Sie setzen nicht setInterval und setFastestInterval, dann halten sie die Standardwerte.

Also, wenn Sie setzen nur mLocationRequest.setSmallestDisplacement(...);

Dann fusionierten Anbieter Werte wie

Intervall betrachtet: 60 Minuten, schnellstes Intervall: 10 Minuten, SmallestDisplacement: 5m

Als Ergebnis scheint es wie "nicht funktioniert"

+0

ja es funktioniert nicht. Sie werden neue Position nach 10 min bekommen. Warum wir auf Zeitintervalle angewiesen sind. warum neuer Standort nicht nach 5m Verschiebung bekommen –

+0

Ich me't es funktioniert tatsächlich. Aufgrund der Standardwerte der Intervalle haben Sie keinen möglichen 'onLocationChanged'-Anruf erhalten (vielleicht haben Sie nicht mindestens 10 Minuten oder länger gewartet) – Blackkara