Правильный способ определения полета по высоте GPS состоит в поиске отметки местности текущего местоположения (широта / долгота) в базе данных.Если высота GPS выше, то пользователь находится в полете (или в высоком здании).
Требуется очень большая база данных, но данные доступны.Это, вероятно, не практично для большинства приложений.Ищите базы данных данных DEM (цифровая модель рельефа), такие как SRTM, ASTER (см. здесь )
Другим методом будет обнаружение взлета.Если вы заинтересованы только в полете на реактивном самолете, вам нужно будет определить ускорение по прямой линии от <10 узлов до> 100 узлов, а затем, если высота GPS поднимается на> 1000 футов в минуту, вы, скорее всего, взлетаете в самолете.(хотя большинство пропеллерных самолетов также может подниматься> 1000 футов в минуту).
Обнаружение всех видов полета (дирижабли, воздушные шары, легкие самолеты) становится более сложным.Трудно провести различие между самолетом и автомобилем, поднимающимся в горы, хотя это возможно с помощью различных эвристик.Также было бы трудно отличить воздушный шар от высокого здания с низким горизонтальным движением, и в обоих случаях высота над уровнем земли.