1

我目前正在创建一个检测用户是坐着还是站着的 webapp。我在检测设备倾斜、更改布尔变量并将正确数据发送到图表方面取得了巨大成功。

以下代码在后台完美运行,每秒更新一次数据。

var trackInterval = setInterval(function(){
    if(isSitting){
        addData(myPieChart, "Sitting");
    } else{
        addData(myPieChart, "Standing");
    }
}, 1000)

我的问题是,一旦浏览器关闭,更改变量“isSitting”的监听功能就不会继续。这意味着“isSitting”的最后一个值会添加数据,即使设备可能会倾斜。

这是创建加速度计更新的代码:

window.addEventListener("devicemotion", accelerometerUpdate, true);

var isSitting = true;

function accelerometerUpdate(event) {
    var aX = event.accelerationIncludingGravity.x * 100 ;
    var aY = event.accelerationIncludingGravity.y * 100 ;
    var aZ = event.accelerationIncludingGravity.z * 100 ;

    if (aY > 600 || aY < -900 ){
        isSitting = false;
    } else{
        isSitting = true;   
    }
}

我在我的 Android 设备上尝试过 Chrome、Opera 和 Firefox。

任何解决此问题的帮助或提示将不胜感激

4

1 回答 1

0

这听起来像是常规行为,因为要执行的 javascript 代码应该在浏览器中运行。

为了实现您的目标,一个可能的猜测是寻找一种在服务工作者中使用此 api 的方法,这对于 devicemotion api 目前是不可能的,但应该(至少使用 chrome)使用此处描述的新 Generic Sensors API:https://developers.google.com/web/updates/2017/09/sensors-for-the-web

于 2018-03-30T04:31:52.160 回答