Как получить более точные координаты gps?

Всем привет. Вопрос такой. Есть стандартное действие при получении текущие координаты gps. Приведу код ниже. Но он не точный, когда перемещаться то бывает закидывает за 50-100 м где проходил. Есть решение более точного определеня координат? Спасибо за любую информацию, то перелапатил много чего, а результата нет. Все одно и тоже.

Приведу стандартный код, но думаю его все видели. Потом x и y добавляю в бд.

 private LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location)
    {
        showLocation(location);
    }
    public void onProviderDisabled(String provider) {
        checkEnabled();
    }

    @SuppressLint("MissingPermission")
    public void onProviderEnabled(String provider) {
        checkEnabled();
        showLocation(locationManager.getLastKnownLocation(provider));
    }

    public void onStatusChanged(String provider, int status, Bundle extras) {
        if (provider.equals(LocationManager.GPS_PROVIDER)) {
            //tvStatusGPS.setText("Status: " + String.valueOf(status));
        } else if (provider.equals(LocationManager.NETWORK_PROVIDER)) {
            //tvStatusNet.setText("Status: " + String.valueOf(status));
        }
    }
};

private void showLocation(Location location) {
    if (location == null)
        return;
    if (location.getProvider().equals(LocationManager.GPS_PROVIDER)) {
        formatLocation(location);
        //tvLocationGPS.setText(formatLocation(location));
    } else if (location.getProvider().equals(
            LocationManager.NETWORK_PROVIDER)) {
        formatLocation(location);
        //tvLocationNet.setText(formatLocation(location));
    }
}

private void formatLocation(Location location)
{
    String x, y;
    
        x = String.format("%.6f", location.getLatitude());
        y = String.format("%.6f", location.getLongitude());

        addLocation(x, y); // функция добавления в бд точек

}

Ответы (0 шт):