Я просто пытаюсь выяснить, что я могу сделать, чтобы получить точные координаты GPS с мобильного устройства. Когда я добавляю расстояния вместе, я получаю сумасшедшее чтение, что я ушел 8 м, когда телефон не переместился с моего стола. Я не знаю, связано ли это с тем, как я установил свой LocationRequest. Я читал в google что-то о координатах GPS, точность которых составляет 68%, а некоторые показания могут выпадать из 68% ... возможно, я должен что-то сделать, чтобы удалить неточные чтения?Как получить точные GPS-координаты Android LocationServices
Вот запрос местоположения я создал, так что я могу получить обновление местоположения:
private void createLocationRequest() {
locationRequest = new LocationRequest();
locationRequest.setInterval(5000);
locationRequest.setFastestInterval(2000);
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
//Some other code below which checks location settings
}
Это мой onLocationChanged ... это где я получаю обновление на новом месте, а затем вычислить расстояние между двумя точками:
@Override
public void onLocationChanged(Location location) {
//For the first location update, we will assume this is the starting point
if (currentLocation == null) {
currentLocation = location;
}
float distance = 0L;
double height = 0;
double speed = 0;
height = location.getAltitude();
if (runStarted && !runPaused) {
locationsList.add(location); //This adds the current location to the list
runnerLocations.add(location); //This adds the current route the runner is running (without pauses)
} else {
locationsList.add(location);
}
//Calculate the distance from the last recorded gps point
if (currentLocation != null && runStarted && !runPaused){
distance = currentLocation.distanceTo(location);
}
currentLocation = location;
//move the map view to the user's current location, regardless of their running state (paused or run)
mapObject.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(), location.getLongitude()), 18));
if (runStarted && !runPaused) {
if (location.getSpeed() > 0) {
speed = location.getSpeed() * 3.6;// convert m/sec to km/h
}
DecimalFormat format = new DecimalFormat("###.##");
speed = Double.valueOf(format.format(speed));
recordedSpeeds.add(speed);
totalDistance = totalDistance + distance;
updateUI(speed, location, distance);
if (height > 0) {
height = Double.valueOf(format.format(height));
}
calculateCurrentCaloriesBurnt(height, speed);
}
}
Я думал о вычислении расстояний вручную, с некоторой формулой. Что еще я могу попробовать, чтобы получить точные расчеты расстояния?
«телефон не отошел от моего стола» GPS не может получить точные измерения изнутри зданий. Чтобы иметь точную позицию, вы должны выйти на улицу. Кроме того, объект «Location» имеет точность, значение, которое можно проверить, чтобы лучше обработать логику ur. – Budius
«Я получаю сумасшедшее прочтение, что я ушел 8 м, когда телефон не вышел из моего стола» - это не особенно «безумно». Это хорошо в пределах диапазона ошибок чтения GPS. – CommonsWare