JS实现手机摇一摇功能

//运动事件监听
  if (window.DeviceMotionEvent) {
      window.addEventListener('devicemotion',deviceMotionHandler,false);
  }
  
  //获取加速度信息
  //通过监听上一步获取到的x, y, z 值在一定时间范围内的变化率,进行设备是否有进行晃动的判断。
  //而为了防止正常移动的误判,需要给该变化率设置一个合适的临界值。
  var SHAKE_THRESHOLD = 4000;
 var last_update = 0;
 var x, y, z, last_x = 0, last_y = 0, last_z = 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 - last_x - last_y - last_z) / diffTime * 10000;
             if (speed > SHAKE_THRESHOLD) {
                /* alert("你中奖啦!");*/  // Do something
				openZoosUrl();
             }
             last_x = x;
             last_y = y;
             last_z = z;
         }
 }
posted @   Jweib  阅读(517)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示