尝试在移动设备的后台运行HTML5加速度计监听器

问题描述 投票:0回答: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。

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

javascript html5 mobile accelerometer devicemotion
1个回答
0
投票

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

为了实现您的目标,可能的猜测是研究在服务工作者中使用此api的方法,这当前使用devicemotion api是不可能的,但应该(至少使用chrome)使用此处描述的新通用传感器API: https://developers.google.com/web/updates/2017/09/sensors-for-the-web

© www.soinside.com 2019 - 2024. All rights reserved.