Я разрабатываю приложение, в которое я передаю текущее местоположение пользователя с помощью FusedLocationProviderClient. что-то вроде кода ниже. Я не могу понять, почему он принимает текущее местоположение как другое местоположение, иногда оно 2+KM далеко от текущего местоположения, и устройство просто стабильно находится в одном месте.
private void getLastLocation() {
try {
mFusedLocationClient.getLastLocation()
.addOnCompleteListener(new OnCompleteListener<Location>() {
@Override
public void onComplete(@NonNull Task<Location> task) {
if (task.isSuccessful() && task.getResult() != null) {
mLocation = task.getResult();
onNewLocation(mLocation);
} else {
Log.e(TAG, "Failed to get location.");
mLocation = null;
}
}
});
} catch (SecurityException unlikely) {
//Log.e(TAG, "Lost location permission." + unlikely);
}
Вышеприведенный код находится в службе переднего плана... Теперь проблема заключается в том, что пользовательское устройство стабильно, но после 5-6 часов работы приложения оно возвращает другое текущее местоположение, даже если устройство находится в том же месте (без движения)
Фактический результат: он не должен давать мне ни одного километра, пройденного пользователем. мой км, пройденный пользователем, выглядит примерно так: код ниже
double distanceInMeters = currentLocation.distanceTo(priviusLocation);
if (distanceInMeters > getSharedPref.getDefaultDistance() && (mLocation.getAccuracy() < Config.ACCURACY ) //Config.ACCURACY==>70{
// if (distanceInMeters > getSharedPref.getDefaultDistance()) {//getSharedPref.getDefaultDistance()==>10
if (mLocation.getLatitude() > 0) {
getSharedPref.setPreviousLocation(String.valueOf(mLocation.getLatitude()), String.valueOf(mLocation.getLongitude()));
writeDataInLogFile("this set to previous ", String.valueOf(mLocation.getLatitude()) + " getLongitude " + String.valueOf(mLocation.getLongitude()));
}
data.setGPS_Km_Travelled(String.format("%.2f", distanceInMeters / 1000));
data.setGPS_Is_Loc_Changed("1");
}