js实现手机摇一摇功能

41 篇文章 0 订阅

js的devicemotion事件监控手机晃动,判断用户晃动了手机

  // 定义一个摇动的阈值:为了防止正常移动的误判,需要给该变化率设置一个合适的临界值
  var shakeThreshold = 500;
  // 记录上一次摇动的时间
  var lastUpdate = 0;
  // 定义x、y、z记录三个轴的数据以及上一次触发的数据
  var x, y, z, lastX, lastY, lastZ;

  // 监听传感器运动事件
  if (window.DeviceMotionEvent) {
    window.addEventListener('devicemotion', deviceMotionHandler, false);
  } else {
    alert('本设备不支持devicemotion事件');
  }

  // 运动传感器处理
  function deviceMotionHandler(e) {
    // 获取含重力的加速度
    var acceleration = e.accelerationIncludingGravity;
    var curTime =Date.now();

    // 100毫秒进行一次位置判断
    if ((curTime - lastUpdate) > 100) {

      var diffTime = curTime - lastUpdate;
      lastUpdate = curTime;

      x = acceleration.x;
      y = acceleration.y;
      z = acceleration.z;

      var speed = Math.abs(x + y + z - lastX - lastY - lastZ) / diffTime * 10000;
      // 前后x, y, z间的差值的绝对值和时间比率超过了预设的阈值,则判断设备进行了摇晃操作
      if (speed > shakeThreshold) {
        // doSomething();
        // alert('一起摇摆')
      }

      lastX = x;
      lastY = y;
      lastZ = z;
    }
  }

我的个人博客,有空来坐坐

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值