首先:最重要的是 该设备需要支持H5的新特性DeviceMotion和DeviceMotionEvent 。
devicemotion h5提供的dom事件,提高设备的加速度的信息,其中包含 x,y,z 三个坐标方向的加速度
DeviceMotionEvent 返回设备的有关加速度和旋转的信息
//运动事件监听
if (window.DeviceMotionEvent) {
// 没有支持的可以报错
window.addEventListener('devicemotion',deviceMotionHandler,false);
}
//获取加速度信息
//通过监听X,Y,Z的变化率来判断是否大于摇晃的限制,从而响应动作。
//而为了防止误判,需要给该变化率设置一个合适的临界值。
//可以设置单方向的加速度的限制
var SHAKE_THRESHOLD = 4000;
var last_update = 0;
var x, y, z, lastX = 0, lastY = 0, lastZ = 0;
function deviceMotionHandler(eventData) {
var acceleration =eventData.accelerationIncludingGravity;
var curTime = new Date().getTime();
if ((curTime-last_update)> 10) {
var diffTime = curTime - last_update;
last_update = curTime;
x = acceleration.x;
y = acceleration.y;
z = acceleration.z;
var speed = Math.abs(x + y + z - lastX - lastY - lastZ) / diffTime * 10000;
if (speed > SHAKE_THRESHOLD) {
// Do something
}
lastX = x;
lastY = y;
lastZ = z;
}
}
代码实测 在安卓的微信网页内打开
未摇手机前:
摇手机后:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。