是否可以使用devicemotion / deviceorientation HTML5 API以km / h计算设备速度?
我想知道用户是否在走路/跑步/不动,并且我不能使用地理位置API,因为它也必须在建筑物内工作。
最佳答案
你当然可以。您从devicemotion事件获得的加速度以m /s²为单位。
var lastTimestamp;
var speedX = 0, speedY = 0, speedZ = 0;
window.addEventListener('devicemotion', function(event) {
var currentTime = new Date().getTime();
if (lastTimestamp === undefined) {
lastTimestamp = new Date().getTime();
return; //ignore first call, we need a reference time
}
// m/s² / 1000 * (miliseconds - miliseconds)/1000 /3600 => km/h (if I didn't made a mistake)
speedX += event.acceleration.x / 1000 * ((currentTime - lastTimestamp)/1000)/3600;
//... same for Y and Z
lastTimestamp = currentTime;
}, false);
应该这样做。但我会注意,因为电话中的加速度计不够精确;)