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?