¿Detecta una sacudida en iOS Safari con Javascript?

¿Cómo puedo utilizar las nuevas API de movimiento de dispositivo MobileSafari para capturar un evento de "sacudida"?

Mira esta increíble publicación en el blog: http://www.jeffreyharrell.com/blog/2010/11/creating-a-shake-event-in-mobile-safari/

Lo que ilustra este ejemplo:

if (typeof window.DeviceMotionEvent != 'undefined') { // Shake sensitivity (a lower number is more) var sensitivity = 20; // Position variables var x1 = 0, y1 = 0, z1 = 0, x2 = 0, y2 = 0, z2 = 0; // Listen to motion events and update the position window.addEventListener('devicemotion', function (e) { x1 = e.accelerationIncludingGravity.x; y1 = e.accelerationIncludingGravity.y; z1 = e.accelerationIncludingGravity.z; }, false); // Periodically check the position and fire // if the change is greater than the sensitivity setInterval(function () { var change = Math.abs(x1-x2+y1-y2+z1-z2); if (change > sensitivity) { alert('Shake!'); } // Update new position x2 = x1; y2 = y1; z2 = z1; }, 150); }