Phonegap重启加速度计

时间:2016-06-25 11:16:43

标签: javascript android cordova accelerometer

我在Phonegap应用中重启加速度计时遇到问题。 我想要实现的是观察加速度。在用户移动智能手机后,我想停止观察者,做一些动画等等。在500ms到1s之后,我想再次启动观察者。

这基本上是加速度计的代码:

watchAcceleration: function() {
    this.accelerometerID = navigator.accelerometer.watchAcceleration(
    function(acceleration) {
        console.log("STARTED WATCH");

        // Accelerometer calculations going on here ...

        if(this.direction === correctResponse) {
            this.restartAcceleration();
        }
        else {
            alert("FAIL");
        }

        // ... more accelerometer calculations here
    }.bind(this),
    function(err) {
        console.log("error", err)
    }
}

这是重启功能的代码:

restartAcceleration: function() {
    if(this.accelerometerID) {
        navigator.accelerometer.clearWatch(this.accelerometerID);
        this.accelerometerID = null;
        console.log("WATCH CLEARED");
        setTimeout(function() {
            this.watchAcceleration();
        }.bind(this), 1000);
    }
}

我的问题是,当应用程序启动时,加速度计工作正常。当用户正确响应时,调用restartAcceleration函数并清除观察者。在这种情况下1000ms之后,再次调用watchAcceleration函数。

我的手机是Nexus 4。 您对如何正确重启加速度计有什么建议吗?

编辑(2016年7月4日): 这里提出了一个问题:https://issues.apache.org/jira/browse/CB-11531

1 个答案:

答案 0 :(得分:1)

看起来这是插件中的一个错误 - 尝试使用此PR分支:

  • git clone -b CB-11531 https://github.com/daserge/cordova-plugin-device-motion
  • cd app
  • cordova plugin rm device-motion
  • cordova plugin add ../cordova-plugin-device-motion