Мне нужно получить точное измерение высоты, используя только GPS.Android: Как получить точную высоту?
Я попробовал Location.getAltitude(), но это ужасно неточно. Любые советы?
Мне нужно получить точное измерение высоты, используя только GPS.Android: Как получить точную высоту?
Я попробовал Location.getAltitude(), но это ужасно неточно. Любые советы?
Есть две проблемы, связанные с использованием высоты смартфон/таблетка GPS:
Спасибо. Поэтому, я думаю, я не могу получить точную высоту, если у меня нет доступа к Интернету в моем приложении, чтобы исправить высоту Geoid. – ask
Вы можете сделать это в автономном режиме. Вам просто нужно вычислить разницу между эллипсоидом и уровнем моря. Что нетривиально. См. Этот ответ: https://stackoverflow.com/a/12811478/1561404 –
Есть другие способы получить высоту, чем GPS. Вы можете использовать барометр, но пока еще не так много устройств с барометрическими датчиками (только новые). Я рекомендую использовать веб-службу для получения желаемых данных.
Вот вопрос, который должен помочь вам: Get altitude by longitude and latitude in Android
Другой способ синтаксического анализа строки NMEA. $GPGGA sentence уже содержит скорректированные данные о высоте над уровнем моря.
Так, просто создать слушатель NMEA-строки для вашего LocationManager и анализировать сообщения:
private GpsStatus.NmeaListener mNmeaListener = new GpsStatus.NmeaListener() {
@Override
public void onNmeaReceived(long timestamp, String nmea) {
parseNmeaString(nmea);
}
};
public void registerLocationManager(Context context) {
mLocationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE);
mLocationManager.addNmeaListener(mNmeaListener);
}
private void parseNmeaString(String line) {
if (line.startsWith("$")) {
String[] tokens = line.split(",");
String type = tokens[0];
// Parse altitude above sea level, Detailed description of NMEA string here http://aprs.gids.nl/nmea/#gga
if (type.startsWith("$GPGGA")) {
if (!tokens[9].isEmpty()) {
mLastMslAltitude = Double.parseDouble(tokens[9]);
}
}
}
}
Вы можете либо заменить высоту последнего объекта Location получил через местоположения слушатель, или разобрать все новое местоположение через NMEA.
Возможный дубликат [Получить высоту по долготе и широте в Android] (http://stackoverflow.com/questions/1995998/get-altitude-by-longitude-and-latitude-in-android) –