Fused Location Provider setsmallestDisplacement funktioniert nicht in Android

Hi Ich habe den Fused Location Provider Api implementiert, um Standortaktualisierungen in einem Dienst zu erhalten. Ich konnte das onlocationchanged -Ereignis gemäß dem festgelegten Intervall auslösen lassen. Wenn ich jedoch die setsmallestDisplacement auf 10 Meter setze, wird das Ereignis ausgelöst, auch wenn das Gerät noch ist. Hat jemand ein ähnliches Problem. Bitte machen Sie Vorschläge. Unten ist der Code

    mlocationrequest = LocationRequest.create();
    mlocationrequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    mlocationrequest.setInterval(60000); // Update location every 1 minute
    mlocationrequest.setFastestInterval(10000);
    mlocationrequest.setSmallestDisplacement(10);


    LocationServices.FusedLocationApi.requestLocationUpdates(
            mGoogleApiClient, mlocationrequest, this);

Um die Entfernung zwischen zwei Positionswerten zu ermitteln, habe ich diese Methode verwendet.

public static float distFrom (float lat1, float lng1, float lat2, float lng2 ) 
{
    double earthRadius = 3958.75;
    double dLat = Math.toRadians(lat2-lat1);
    double dLng = Math.toRadians(lng2-lng1);
    double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
    Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
    Math.sin(dLng/2) * Math.sin(dLng/2);
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
    double dist = earthRadius * c;

    int meterConversion = 1609;

    return new Float(dist * meterConversion).floatValue();
}

Aber ich erhalte die Entfernungen als 43,51, 49,32, 520,02, auch wenn das Gerät noch ist. Liegt es daran, dass das Tablet im Innenbereich verwendet wird?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage