Как получить барометрическую высоту в Android?
Какие данные необходимы для расчета барометрической высоты? Как мне их получить, а затем рассчитать высоту?
Кроме того, насколько точен барометр по сравнению с высотой GPS? Я попробовал GPS, но после поисков в Интернете я не могу найти подходящую библиотеку Geoid.
Пожалуйста, поправьте меня, если у меня есть концепция.
2 ответа
Вам нужно использовать датчик давления для измерения давления, а затем использовать вызов SensorManager.getAltitude (float, float), чтобы преобразовать измеренное давление вместе с эталонным давлением на уровне моря для получения высоты.
Хитрый бит, что использовать в качестве опорного давления. Это изменится с погодой и будет дрейфовать со временем. Как правило, вы выполняете какую-то калибровку, чтобы установить эти значения и, возможно, обновить их. Правильное решение зависит от вашего варианта использования.
Если должным образом откалиброванная высота на основе давления значительно более точна, чем высота на основе GPS, особенно если вы хотите, чтобы вас заинтересовали различия высоты, а не абсолютные высоты. Немного отфильтровав необработанные значения датчика давления, вы можете легко обнаружить, что вы держите телефон на уровне лица или на расстоянии вытянутой руки над головой, что вы хотите сделать с помощью GPS.
Аргументы: высота GPS (полезно использовать среднее значение, рассчитанное по массиву измерений) и барометрическое давление. Метод возвращает давление на уровне моря (формула из SensorManager.getAltitude(float p0, float p) в обратном порядке).
public static float getSealevelPressure (float alt, float p)
{
float p0 = (float) (p / Math.pow(1 - (alt/44330.0f), 5.255f));
return p0;
}
Я использую значение по умолчанию: SensorManager.PRESSURE_STANDARD_ATMOSPHERE, пока GPS не соберет 10 блокировок. После этого вышеуказанный метод вызывается.