Когда телефон лежит на спине, вы должны приблизиться к нулю на датчиках X и Y и около 9,8 на датчике Z.9.8, конечно, из-за гравитации.
Мое первое, хотя бы, что с телефоном что-то не так, и предложил бы попробовать тот же код на другом телефоне.
Однако я заметил, что естьчто-то не так в математике, но не понял, что еще.
с x, y, z, имеющими значения, которые вы упомянули, результирующий (квадратный корень из суммы квадратов) получается 54,78, а не 85,36, как вы упоминаете в своем посте.
ЯЯ новичок в Java, поэтому я не могу легко определить, что может быть не так, и у меня еще не было возможности попробовать этот код на моем телефоне, но я думаю, что математика достаточно проста, чтобы я мог определить, что результат неправильный.(или, по крайней мере, я на это надеюсь).
Еще одна вещь, которую нужно проверить (если вы решите математическую задачу), заключается в том, что небольшое изменение, когда вы бросаете телефон в воздух, может быть вызвано просто медленным временем отклика.,Выходной сигнал акселерометра может просто меняться слишком медленно, поэтому к моменту приземления телефона выходной сигнал не изменился бы так сильно.Ответ можно улучшить, используя SENSOR_DELAY_GAME или SENSOR_DELAY_FASTEST вместо обычного.
Кстати, не должно ли это быть arg0.values [], а не se.values []?Откуда пришло СЭ?Значения датчика входят в аргумент onSensorChanged (в данном случае arg0), поэтому я не могу понять, как они должны заканчиваться в se.(Но с другой стороны, в Java есть много вещей, которые я до сих пор не понимаю)