javascript - Phonegap 重启加速度计

标签 javascript android cordova accelerometer

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

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

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 函数并清除观察者。在本例中的 1000 毫秒后,watchAcceleration 函数将再次调用。

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

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

最佳答案

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

  • git clone -b CB-11531 https://github.com/daserge/cordova-plugin-device-motion
  • cd 应用程序
  • cordova 插件 rm device-motion
  • cordova 插件添加 ../cordova-plugin-device-motion

关于javascript - Phonegap 重启加速度计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38027898/

相关文章:

javascript - 在 JavaScript 中单击其中一个单选按钮时启用按钮

javascript - 如何使用 Cognito 身份池和 Amplify 连接到 AWS AppSync

javascript - 未捕获的类型错误 : Cannot set property 'innerHTML' of null

android - Phonegap 2.0 - 在我的应用程序加载之前启动应用程序时出现白屏闪烁

javascript - 使用javascript移动div

javascript - 如何制作仅在访问者在页面上停留一定时间后才会出现的弹出窗口?

android - Gradle 项目同步在导入另一个模块时失败

android - 应用程序小部件安卓

ios - iOS 9.2.1获取webView:didFailLoadWithError-102:Phonegap中的帧加载中断

javascript - PhoneGap 通知