2016-06-02 7 views
-1

Wie in Android zu erkennen, wenn das Gerät bewegt oder an 1 Stelle?Erkennen, ob Gerät in Bewegung ist in Android

Eigentlich möchte ich nicht Ort einfügen, wenn das Gerät an 1 Stelle ist.

Ich versuchte mit Accelerometer & Aktivitätserkennung. Aber es hilft nicht. Jedes gute Beispiel wird hilfreich sein.

+0

können Sie GPS verwenden –

+0

Was genau haben Sie versucht? Post-Links. –

+0

Kannst du angeben, was du als Bewegung nimmst? – AxelH

Antwort

1

Verwendet Fused Locaiton api, um die Geschwindigkeit des Geräts zu erkennen, aber denken Sie daran, dass nie die Geschwindigkeit durch Positionsänderung in der Zeit berechnen, verwenden Sie einfach die location.getSpeed(). Der Grund dafür ist, dass der GPS-Chip intern die Geschwindigkeit über den physikalischen Doppler-Effekt berechnet und nicht über eine Positionsänderung. Im Stillstand oder bei sehr niedrigen Geschwindigkeiten funktioniert das nicht gut, so dass Sie sehr niedrige Geschwindigkeiten und schlechtes GPS-Signal ausfiltern müssen. (über horizontale Genauigkeitsschätzung)

1

Wenn der neue Standort innerhalb von - sagen wir mal - 100m des alten Standorts ist, fügen Sie ihn nicht zur Datenbank hinzu.

private static final float SIGNIFICANT_DISTANCE = 100f; 

public void onLocationChanged(final Location newLocation) { 
    if (newLocation != null) { 
     final Location oldLocation = ; // Get last location from DB/field. 
     if (oldLocation == null) { 
      // If this is first measurement 
      // Add to DB. 
     } else if (oldLocation.distanceTo(newLocation) > SIGNIFICANT_DISTANCE) { 
      // If user has moved significantly 
      // Add to DB. 
     } else { 
      // If user hasn't moved significantly 
      // Ignore it or implement some sort of precision refinement logic and update entry in DB. 
     } 
    } 
} 

Zusätzlich sollten Sie die Überwachung des Standorts aktivieren, wenn die Aktivitätserkennung meldet, dass der Benutzer unterwegs ist.

Verwandte Themen