Сначала задали вопросы:
А) Просто откалибруйте. Ускорение стояния - это постоянное притяжение силы тяжести, а любое внезапное отклонение - это добавление ускорения из-за удара. Вам также придется отслеживать изменения в ориентации , как сообщает гироскоп, чтобы вы могли игнорировать внезапное смещение гравитации в новое направление.
B) Интегрируйте ускорение, чтобы получить изменение скорости. Этот квадрат, умноженный на массу телефона, разделенный на два, является энергией (в кадре покоя).
C) Этот в принципе неразрешим. Теоретически, если случай является гибким, ускорение от удара будет проявляться в виде кривой, подобной шипу, с характерной формой, так что если у вас есть пара точек, которые не находятся на пике, вы можете оценить всю форму , Но я подозреваю, что устройство слишком жесткое, а выборка слишком редкая. Вы ничего не можете с этим поделать, если аппаратное обеспечение не будет интегрировать ускорение для вас, в чем я сомневаюсь (я не знаю iPhone).
Но энергия, вероятно, не лучшая мера для использования в любом случае; Вы можете доставить столько энергии, ударяя по ней подушкой, сколько постукивая молотком, но вы не ожидаете, что камертон зазвонит так громко. Пиковое ускорение может быть лучше, но это все еще зависит от хороших данных от акселерометра.
Не могли бы вы использовать микрофон? Попробуйте записать то, что он слышит, когда вы касаетесь его коленом, и ищите функции, которых нет в обычном звуке, например, я не знаю, большая низкочастотная амплитуда, широкий спектр, возможно, даже характерный резонанс дело. Он все еще может немного реагировать на громкий шум в окружающей среде, но тогда это вполне реально.