js实现摇一摇功能

 实现原理:监听devicemotion事件,通过accelerationIncludingGravity属性获取重力加速度,判断一定时间内重力加速度改变大于某个值,判定为摇动

var SHAKE_THRESHOLD = 4000;//设置判断摇动速度的阀值
var last_update = 0; //记录上次摇动的时间
var x, y, z, last_x = 0, last_y = 0, last_z = 0; //记录三个轴的数据以及上一次触发的时间
var speed; //记录摇动的速度
 if (window.DeviceMotionEvent) {
       // console.log('支持传感器')
       window.addEventListener('devicemotion',this.deviceMotionHandler, false);
     }else {
       alert('该设备不支持传感器')
     }

  //运动传感器处理
    deviceMotionHandler(eventData){
        var acceleration = eventData.accelerationIncludingGravity; //获取重力加速度
        var curTime = new Date().getTime(); //获取当前时间
        var diffTime = curTime - last_update; //计算时间差
        if (diffTime > 300) { //大于某个值时,再执行操作,因为devicemotion随时都在触发,提高性能
            last_update = curTime;
            x = acceleration.x;
            y = acceleration.y;
            z = acceleration.z;
            speed = Math.abs(x + y + z - last_x - last_y - last_z) / diffTime * 10000;
            if (speed > SHAKE_THRESHOLD) {
                // alert('摇到大奖啦!');
                //手机震动
                // var supportsVibrate = 'vibrate' in navigator;
                // if (supportsVibrate) {
                //     navigator.vibrate(1000);
                // }
            }
            //记录上一次加速度
            last_x = x;
            last_y = y;
            last_z = z;
        }
    }

 

 

转载于:https://my.oschina.net/linxiaoxi1993/blog/3042184

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值