Не могу добавить комментарий к превосходному объяснению в другом посте, но хотел бы отметить, что отличный источник документации можно найти здесь .
Достаточно зарегистрировать функцию события для акселерометра следующим образом:
if(window.DeviceMotionEvent){
window.addEventListener("devicemotion", motion, false);
}else{
console.log("DeviceMotionEvent is not supported");
}
с обработчиком:
function motion(event){
console.log("Accelerometer: "
+ event.accelerationIncludingGravity.x + ", "
+ event.accelerationIncludingGravity.y + ", "
+ event.accelerationIncludingGravity.z
);
}
А для магнитометра должен быть зарегистрирован следующий обработчик событий:
if(window.DeviceOrientationEvent){
window.addEventListener("deviceorientation", orientation, false);
}else{
console.log("DeviceOrientationEvent is not supported");
}
с обработчиком:
function orientation(event){
console.log("Magnetometer: "
+ event.alpha + ", "
+ event.beta + ", "
+ event.gamma
);
}
Существуют также поля, указанные в событии движения для гироскопа, но это, кажется, не поддерживается повсеместно (например, оно не работает на Samsung Galaxy Note).
На GitHub
имеется простой рабочий код