试图在移动设备上运行HTML5加速度计的侦听器



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

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

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

我的问题是,一旦浏览器关闭,更改变量" ISSTITT"的侦听功能就不会继续。这意味着" 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。

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

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

为了实现您的目标,一个可能的猜测是研究一种在服务工作者中使用此API的方法,而Devicemotion API目前无法使用该API,但应该(至少与Chrome一起使用(新的通用传感器API此处描述:https://developers.google.com/web/updates/2017/09/sensors-for-the-web

相关内容

  • 没有找到相关文章

最新更新