如何使用javascript检测最后一个设备运动事件?

如何使用javascript检测最后一个设备运动事件?,javascript,android,ios,devicemotion,Javascript,Android,Ios,Devicemotion,大家好 我试图在javascript停止生成之前(即设备静止时)捕获加速度值(包括重力)。我知道在Xcode中生成了一个名为MotionEnd的事件来捕获这个消息,但我想使用javascript执行同样的操作,使其与设备无关 提前感谢您的努力 这是完整的HTML代码。。。大部分用于测量最后一个设备运动事件 变量x=0,y=0,vx=0,vy=0,ax=0,ay=0,accX=0,accY=0,accZ=0,读数开始=0,读数完成=0,按钮按下=0,测试=0,公差计数器=0; 功能节流阀(回调、

大家好

我试图在javascript停止生成之前(即设备静止时)捕获加速度值(包括重力)。我知道在Xcode中生成了一个名为MotionEnd的事件来捕获这个消息,但我想使用javascript执行同样的操作,使其与设备无关

提前感谢您的努力

这是完整的HTML代码。。。大部分用于测量最后一个设备运动事件


变量x=0,y=0,vx=0,vy=0,ax=0,ay=0,accX=0,accY=0,accZ=0,读数开始=0,读数完成=0,按钮按下=0,测试=0,公差计数器=0;
功能节流阀(回调、限制){
var wait=false;//最初,我们没有等待
返回函数(){//我们返回一个限制函数
如果(!等待){//如果我们不等待
callback.call();//执行用户函数
wait=true;//防止将来调用
setTimeout(函数(){//在一段时间后
wait=false;//并允许将来调用
},上限);
}
}
}
函数myFunction(){
如果(按钮按下==0)
{
readingStarted=0;
readingCompleted=0;
公差计数器=0;
测试=0;
window.addEventListener('devicemotion',油门(handleMotionEvent,200),false);
}
如果((按钮按下<6)和((读取开始==0)| |(读取完成==1)))
{
readingStarted=0;
readingCompleted=0;
公差计数器=0;
按钮按下=按钮按下+1;
}
document.getElementById(“buttonp”).innerHTML=buttonPress;
document.getElementById(“test”).innerHTML=test;
}
功能手柄MotionEvent(e)
{
测试=测试+1;
if(readingCompleted==1)
{
accX=(accX+e.加速度,包括重力.x)/2;
accY=(accY+e.加速度,包括重力)/2;
accZ=(accZ+e.accelerationIncludingGravity.z)/2;
密码HP2(accX、accY、accZ);
}
如果((readingStarted==0)和&(readingCompleted==0),则为else&&
((accX-e.accelerationIncludingGravity.x)>0.1)| |((accX-e.accelerationIncludingGravity.x)<-0.1)||
((e.accelerationIncludingGravity.x-accX)>0.1)| |((e.accelerationIncludingGravity.x-accX)<-0.1)||
((accY-e.accelerationIncludingGravity.y)>0.1)| |((accY-e.accelerationIncludingGravity.y)<-0.1)||
((e.加速度包括重力.y-accY)>0.1)| |((e.加速度包括重力.y-accY)<-0.1)||
((accZ-e.accelerationIncludingGravity.z)>0.1)| |((accZ-e.accelerationIncludingGravity.z)<-0.1)||
((e.加速度包括重力.z-accZ)>0.1)| |((e.加速度包括重力.z-accZ)<-0.1))
)
{
accX=e.加速度,包括重力.x;
accY=e.加速度,包括重力.y;
accZ=e.加速度,包括重力.z;
读数开始=1;
如果(例如旋转率){
document.getElementById(“RotationPha”).innerHTML=e.rotationRate.alpha;
document.getElementById(“rotationBeta”).innerHTML=e.rotationRate.beta;
document.getElementById(“rotationGamma”).innerHTML=e.rotationRate.gamma;
}       
}
如果((读取开始==1)和((读取完成==0)和((公差计数器<5)和
!((accX-e.accelerationIncludingGravity.x)>0.1)| |((accX-e.accelerationIncludingGravity.x)<-0.1)||
((e.accelerationIncludingGravity.x-accX)>0.1)| |((e.accelerationIncludingGravity.x-accX)<-0.1)||
((accY-e.accelerationIncludingGravity.y)>0.1)| |((accY-e.accelerationIncludingGravity.y)<-0.1)||
((e.加速度包括重力.y-accY)>0.1)| |((e.加速度包括重力.y-accY)<-0.1)||
((accZ-e.accelerationIncludingGravity.z)>0.1)| |((accZ-e.accelerationIncludingGravity.z)<-0.1)||
((e.加速度包括重力.z-accZ)>0.1)| |((e.加速度包括重力.z-accZ)<-0.1))
)
{
accX=(accX+e.加速度,包括重力.x)/2;
accY=(accY+e.加速度,包括重力)/2;
accZ=(accZ+e.accelerationIncludingGravity.z)/2;
公差计数器=公差计数器+1;
}
如果((读取开始==1)和((读取完成==0)和((公差计数器==5)和
!((accX-e.accelerationIncludingGravity.x)>0.1)| |((accX-e.accelerationIncludingGravity.x)<-0.1)||
((e.accelerationIncludingGravity.x-accX)>0.1)| |((e.accelerationIncludingGravity.x-accX)<-0.1)||
((accY-e.accelerationIncludingGravity.y)>0.1)| |((accY-e.accelerationIncludingGravity.y)<-0.1)||
((e.加速度包括重力.y-accY)>0.1)| |((e.加速度包括重力.y-accY)<-0.1)||
((accZ-e.accelerationIncludingGravity.z)>0.1)| |((accZ-e.accelerationIncludingGravity.z)<-0.1)||
((e.加速度包括重力.z-accZ)>0.1)| |((e.加速度包括重力.z-accZ)<-0.1))
)
{
accX=(accX+e.加速度,包括重力.x)/2;
accY=(accY+e.加速度,包括重力)/2;
accZ=(accZ+e.accelerationIncludingGravity.z)/2;
passToPHP(accX、accY、accZ);
readingCompleted=1;
}
如果((readingStarted==1)和&(readingCompleted==0),则为else&&
((accX-e.Acceleration包括重力.x)>0.1)| |((accX-e.a