6

私は使っている

window.addEventListener('devicemotion', event => this.watchDeviceMotion(event))

watchDeviceMotion(event: any) {

  let motionData = {
    x: event.acceleration.x,
    y: event.acceleration.y,
    z: event.acceleration.z,
  }
  let rotationData = {
    alpha: event.rotationRate.alpha,
    beta: event.rotationRate.beta,
    gamma: event.rotationRate.gamma
  }

  if (this.getSensorData) {
    // console.log(JSON.stringify(motionData))
    // console.log(JSON.stringify(rotationData))
    this.userData.motionData.push(motionData)
    this.userData.rotationData.push(rotationData)
  }
}

Ionic と Angular を使用して Android デバイスの加速度計データにアクセスします。アプリ内ではイベントは 60 Hz の周波数で動作しますが、アプリがバックグラウンドに切り替わると、最初の 5 分間は周波数が 9 ~ 10 Hz 程度に低下し、バックグラウンドにあるある時点で 60 Hz に戻ります。そしていつまでもそのまま。

バックグラウンドプラグインも使用しています

this.backgroundMode.enable();
this.backgroundMode.on('activate').subscribe(() => {
  this.backgroundMode.disableWebViewOptimizations();
});

config.xml の対応する条件を使用して、バックグラウンド プラグインに disableBatteryOptimizations() を追加しようとしましたが、まだ運がありません。

Device Motion と Gyroscope のプラグインも試しましたが、同じように動作します。

周波数が遅くなるのを防ぐにはどうすればよいですか? 他の誰かが以前にこの問題に遭遇したことがありますか?

4

1 に答える 1