LocationRequest.setSmallestDisplacement не дает вам большей точности, он просто позволяет избежать ненужных обновлений.
Нет способа повысить низкую точность, вы просто получаете очко с некоторой точностью, если вы неЕсли вы заинтересованы в позициях с низкой точностью, просто пропустите это местоположение и дождитесь лучшего.
В настоящее время нет идеальной точности, точность составляет 100 м для худшей точности.
проверьте страницу разработчиков Android для получения дополнительной информации.информация:
https://developer.android.com/training/location/receive-location-updates#location-request
Попробуйте сделать следующее: Установите уровень точности ACCURACY_FINE
Установите максимальную мощность (для получения лучшего сигнала GPS)
Донне запрашивать высоту.
Установить speedRequired на false
Установить флаг CostAllowed на true
Установить BearingRequired на false
Установить горизонтальную точность и вертикальную точность на HIGH
подробнее об этих функциях вы поймете почему.
Criteria tenM= new Criteria();
tenM.setAccuracy(Criteria.ACCURACY_FINE);
tenM.setPowerRequirement(Criteria.POWER_HIGH);
tenM.setAltitudeRequired(false);
tenM.setSpeedRequired(false);
tenM.setCostAllowed(true);
tenM.setBearingRequired(false);
tenM.setHorizontalAccuracy(Criteria.ACCURACY_HIGH);
tenM.setVerticalAccuracy(Criteria.ACCURACY_HIGH);
locationManager.requestLocationUpdates(1000 /*milliseconds*/, 1
/*1 meter*/,
tenM /*criteria*/, this /*context*/, null);