Я собираюсь описать, как это сделать вручную.
Акселерометр возвращает значения, соответствующие ускорению, ощущаемому объектом.
Например, если значение X высокое, это означает, что телефон ускоряется в своем направлении X.Однако из одного снимка вы не знаете, происходит ли это ускорение из-за тряски или из-за внезапного движения в устойчивом направлении.
Поэтому вы ищете, когда ускорение велико, а затемвдруг очень низкий или отрицательный, и так далее.Вам нужна скорость изменения ускорения или рывок.
В терминах кода вы хотите сохранить историю значений ускорения и сохранить значение рабочего рывка (скажем, изменение ускорения впоследние 10 кадров).Если это значение достигает порогового значения (положительного или отрицательного), то это ваша встряска.
Конечно, сделайте это для ускорений X, Y и Z индивидуально, а затем добавьте значения рывков, чтобы получить последнее значение, котороепроверяется на порог.