Во-первых, я хочу напомнить вам, что вы не можете просто сложить значения x, y, z вместе, как они есть, вы должны использовать векторную математику.Вот почему вы получаете значения более 15 м / с.Пока телефон не движется, векторная сумма всегда должна быть около 9,8 м / с.Вы рассчитываете это с помощью SQRT (x * x + y * y + z * z).Если вам нужна дополнительная информация, вы можете прочитать о векторной математике, возможно, http://en.wikipedia.org/wiki/Euclidean_vector#Length - хорошее начало для нее.
Я также предлагаю другой алгоритм: в свободном падении все три из x, yЗначения z акселерометра должны быть близки к нулю.(По крайней мере, это то, что я выучил на уроках физики давным-давно в школе.) Поэтому, возможно, вы можете использовать формулу, например, если векторная сумма x, y, z <= 3 м / с, чем вы обнаруживаете свободное падение.И если векторная сумма возрастает до значения, превышающего 20 м / с, то вы обнаруживаете приземление. </p>
Эти пороговые значения являются просто диким предположением.Может быть, вы просто записываете значения x, y, z в тестовом приложении, а затем перемещаетесь по телефону, а затем анализируете в автономном режиме, как ведут себя значения (и их нормальная и векторная сумма), чтобы понять, какие пороги являются разумными.