5

devicemotion/deviceorientation HTML5 API を使用して、デバイスの速度を km/h で計算することは何とか可能ですか?

ユーザーが歩いているか、走っているか、動いていないかを知りたいのですが、ジオロケーション API は建物内でも機能する必要があるため使用できません。

4

1 に答える 1

5

できますよ。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);

するべきです。しかし、電話の加速度計はあまり正確ではないので、私は気をつけます;)

于 2016-03-24T10:13:08.870 に答える