2016-02-09 2 views
0

Я разрабатываю веб-приложение и хочу использовать событие devicemotion, чтобы получить ускорение для измерения скорости и расстояния, но я заметил, что даже устройство статично на плоской поверхности значения ускорения на y и всегда меняются.html5 devicemotion ускорение всегда меняется

var clock = null, prevClock = new Date().getTime(); 
window.addEventListener("devicemotion", function(e) { 
if (e.acceleration.x) { 
    clock = new Date().getTime(); 
    var d = (clock - prevClock)/1000; 
    d *= d; 
    motion.x = (e.acceleration.x); 
    motion.y = (e.acceleration.y); 
    motion.z = (e.acceleration.z); 

    distance.x += (motion.x) * d; 
    distance.y += (motion.y) * d; 
    distance.z += (motion.z) * d; 
    prevMotion = motion; 
    prevClock = new Date().getTime(); 
} 
}, true); 

Как измерить точное ускорение.

ответ

0

Вы уже делаете это правильно. и вы не получите более точного ускорения, чем это. это потому, что датчики настолько проницательны (или просто недостаточно точны), что НИКОГДА не получите ускорения 0, даже когда ваше устройство просто лежит на ровной поверхности. более новые телефоны имеют более точные датчики. например, iPhone 6+ приближается к 0 вместо моей Galaxy S4, но даже с iPhone6 ​​+ вы никогда не получите ускорение 0 на плоской поверхности.

Смежные вопросы