h5页面监听摇一摇事件

上代码:

// 设置一个开关,用于控制执行一次摇一摇函数
var is_listener = true
// 震动代码
const SHAKE_SPEED = 300;  
let lastTime = 0;//上次变化的时间  
let x = y = z = lastX = lastY = lastZ = 0;//位置变量初始化 
// 监听设备位置感应
if(window.DeviceMotionEvent&&is_listener) {
 	window.addEventListener('devicemotion',	motionHandler, false);
} else {
	// 	alert("你的设备不支持位置感应");
}
// 设备感应函数
function motionHandler(event) {
	if(is_listener){
		let acceleration = event.accelerationIncludingGravity;
		let curTime = Date.now();//取得当前时间  
		if ((curTime - lastTime) > 120) {  
			let diffTime = curTime - lastTime;  
			lastTime = curTime;  
			x = acceleration.x;  
			y = acceleration.y;  
			z = acceleration.z;  
			//计算摇动速度  
			let speed = Math.abs(x + y + z - lastX - lastY - lastZ) / diffTime * 1000;  
			if (speed > SHAKE_SPEED) { 
				is_listener=false
				alert("监听到您摇一摇手机咯~")
			}
			lastX = x;
			lastY = y;
			lastZ = z;
		}
	}else{
		window.removeEventListener('devicemotion',	function(){
			console.log("不再监听摇一摇事件")
		}, false);
	}
		
}

猜你喜欢

转载自blog.csdn.net/rainbow8300/article/details/86478908