今天小编跟大家讲解下有关基于html5 DeviceOrientation 实现微信摇一摇功能 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了有关基于html5 DeviceOrientation 实现微信摇一摇功能 的相关资料,希望小伙伴们看了有所帮助。
在HTML5中 DeviceOrientation特性所提供的DeviceMotion事件封装了设备的运动传感器时间 通过改时间可以获取设备的运动状态、加速度等数据(另还有deviceOrientation事件提供了设备角度、朝向等信息)。
而通过DeviceMotion对设备运动状态的判断 则可以帮助我们在网页上就实现“摇一摇”的交互效果。
运动事件监听
复制代码代码如下:if (window.DeviceMotionEvent) { window.addEventListener('devicemotion', deviceMotionHandler, false);} else { alert('你的手机太差了 买个新的吧。');}
获取加速度信息
“摇一摇”的动作既“一定时间内设备了一定距离” 因此通过监听上一步获取到的x, y, z 值在一定时间范围内的变化率 即可进行设备是否有进行晃动的判断。而为了防止正常移动的误判 需要给该变化率设置一个合适的临界值。
复制代码代码如下: function deviceMotionHandler(eventData) { var acceleration = eventData.accelerationIncludingGravity; var curTime = new Date().getTime(); if ((curTime - last_update) > 100) { var diffTime = curTime - last_update; last_update = curTime; x = acceleration.x; y = acceleration.y; z = acceleration.z; var speed = Math.abs(x + y + z - last_x - last_y - last_z) / diffTime * 10000; var status = document.getElementById("status"); if (speed > SHAKE_THRESHOLD) { doResult(); } last_x = x; last_y = y; last_z = z; } }
效果如图所示:
来源:爱蒂网