HTML5 实现手机摇一摇

  HTML5新增了一些JavaScript API接口,比如地理定位、重力感应等。今天主要介绍devicemotion事件(设备事件),它提供设备的加速信息,表示为定义在设备上的坐标系。其还提供了设备在坐标系中的自转速率。若可行的话,事件应该提供设备重心处的加速信息。本文给大家讲解了HTML5实现手机摇一摇的效果。

手机摇一摇的实现思路:

1、检测设备是否支持重力传感;

 1 // 监听运动传感事件,查看是否支持硬件运动
 2
 3 if (window.DeviceMotionEvent) {
 4
 5 alert("您的设备支持硬件调用");
 6
 7 } else {
 8
 9 alert("您的设备不支持硬件调用");
10
11 }

2、绑定运动传感(devimotion)事件;

  

1 window.addEventListener(‘devicemotion‘, deviceMotionHandler, false);

3、根据devimotion事件对象,获取三个方向的重力加速度;

 1 /*
 2
 3 * [deviceMotionHandler 摇一摇处理函数]
 4
 5 * @param {[type]} eventData [事件对象]
 6
 7 * @return {[type]} [无返回值]
 8
 9 * @author 刘国利、陈能堡、HTML5学堂
10
11 */
12
13 function deviceMotionHandler(eventData){
14
15 // acceleration加速度
16
17 var acceleration = eventData.accelerationIncludingGravity;
18
19 $(".wrap")[0].innerHTML = acceleration.x + " " + acceleration.y + " " + acceleration.z;
20
21 }

4、为了防止系统认为简单的变化也是在摇动手机,所以在每隔一段时间进行三个方向值的计算;

  

 1 // 获取当前时间
 2
 3 curTime = new Date().getTime();
 4
 5 if (curTime - lastTime > 100) {
 6
 7 // 计算出时间断
 8
 9 diffTime = curTime - lastTime;
10
11 // 记录上一次的时间
12
13 lastTime = curTime;
14
15 // 获取当前的三个方向的值
16
17 x = acceleration.x;
18
19 y = acceleration.y;
20
21 z = acceleration.z;
22
23 // 计算速度,为了防止出现负数,进行绝对值
24
25 speed = Math.abs((x + y + z - lastX - lastY - lastZ) / diffTime * 10000);
26
27 // 记录上一次三个方向的值
28
29 lastX = x;
30
31 lastY = y;
32
33 lastZ = z;
34
35 };

5、当计算的该值大于预定的值(阀值),执行相应的操作。

1 if (speed > SHAKE_THRESHOLD) {
2
3 alert("实现了摇一摇");
4
5 };

完整的实例

  1 var con = document.getElementById("con");
  2
  3 (function(){
  4
  5 // 监听运动传感事件,查看是否支持硬件运动
  6
  7 if (window.DeviceMotionEvent) {
  8
  9 window.addEventListener(‘devicemotion‘, deviceMotionHandler, false);
 10
 11 } else {
 12
 13 alert("您的设备不支持硬件调用");
 14
 15 }
 16
 17 // 变量初始化
 18
 19 var x = 0,
 20
 21 y = 0,
 22
 23 z = 0,
 24
 25 lastX = 0,
 26
 27 lastY = 0,
 28
 29 lastZ = 0,
 30
 31 curTime = 0,
 32
 33 lastTime = 0,
 34
 35 diffTime = 0,
 36
 37 speed = 0;
 38
 39 // 设置一个阀值
 40
 41 var SHAKE_THRESHOLD = 800; // 设定摇晃的阈值为600 运行相应操作
 42
 43 /*
 44
 45 * 功能:测算三个方向重力加速度,达到一定值进行相应操作
 46
 47 * 作者:HTML5学堂、刘国利、陈能堡
 48
 49 *
 50
 51 */
 52
 53 function deviceMotionHandler(eventData){
 54
 55 var acceleration = eventData.accelerationIncludingGravity;
 56
 57 // 获取当前时间
 58
 59 curTime = new Date().getTime();
 60
 61 // 计算时间差,当这个差值大于一定值执行计算三个方向的速度
 62
 63 if ((curTime - lastTime) > 100) {
 64
 65 // 记录上一次的时间
 66
 67 diffTime = curTime - lastTime;
 68
 69 lastTime = curTime;
 70
 71 // 获取当前三个方向的值
 72
 73 x = acceleration.x;
 74
 75 y = acceleration.y;
 76
 77 z = acceleration.z;
 78
 79 // 计算速度,为了防止出现负数,进行绝对值
 80
 81 speed = Math.abs((x + y + z - lastX - lastY - lastZ) / diffTime * 8000);
 82
 83 if (speed > SHAKE_THRESHOLD) {
 84
 85 alert("我实现摇一摇了");
 86
 87 };
 88
 89 // 记录上一次三个方向的值
 90
 91 lastX = x;
 92
 93 lastY = y;
 94
 95 lastZ = z;
 96
 97 };
 98
 99 }
100
101 })();

原文地址:https://www.cnblogs.com/mhxy13867806343/p/8446185.html

时间: 2024-10-10 14:00:06

HTML5 实现手机摇一摇的相关文章

HTML5手机重力与方向感应的应用——摇一摇效果

http://www.helloweba.com/view-blog-287.html HTML5有一个重要特性:DeviceOrientation,它将底层的方向和运动传感器进行了高级封装,它使我们能够很容易的实现重力感应.指南针等有趣的功能.本文将结合实例给大家介绍使用HTML5的重力运动和方向传感器实现手机摇一摇效果. DeviceOrientation包括两个事件: 1.deviceOrientation:封装了方向传感器数据的事件,可以获取手机静止状态下的方向数据,例如手机所处角度.方

利用html5实现类似微信的手机摇一摇功能

利用html5实现类似微信的手机摇一摇功能,并播放音乐. 1.  deviceOrientation:封装了方向传感器数据的事件,可以获取手机静止状态下的方向数据,例如手机所处角度.方位.朝向等. 2.  deviceMotion:封装了运动传感器数据的事件,可以获取手机运动状态下的运动加速度等数据. 不多说直接上代码, Javascript: [javascript] view plaincopy var SHAKE_THRESHOLD = 3000; var last_update = 0;

HTML5实现手机摇一摇的功能

利用html5实现类似微信的手机摇一摇功能,并播放音乐. 1.  deviceOrientation:封装了方向传感器数据的事件,可以获取手机静止状态下的方向数据,例如手机所处角度.方位.朝向等. 2.  deviceMotion:封装了运动传感器数据的事件,可以获取手机运动状态下的运动加速度等数据. js如下: <scirpt> var SHAKE_THRESHOLD = 3000; var last_update = 0; var x = y = z = last_x = last_y =

利用html5实现类似微信的手机摇一摇功能,并播放音乐,并且解决中文乱码的问题。

转载了@三井学长:http://blog.csdn.net/david1030/article/details/8229008 转载了@Hello Csn楠!:http://www.cnblogs.com/csn0721/ 1.  deviceOrientation:封装了方向传感器数据的事件,可以获取手机静止状态下的方向数据,例如手机所处角度.方位.朝向等. 2.  deviceMotion:封装了运动传感器数据的事件,可以获取手机运动状态下的运动加速度等数据. 不多说直接上代码, Javas

利用HTML5的devicemotion事件实现手机摇一摇抽奖,年会抽奖

摇一摇JS脚本逻辑:接下来是移动端JS脚本逻辑的实现,摇一摇的实现需借助html5新增的devicemotion事件,获取设备在位置和方向上的改变速度的相关信息,该事件的基本使用如下: if (window.DeviceMotionEvent) { window.addEventListener('devicemotion', handler, !1); lastTime = new Date(); } else { alert('你的浏览器不支持摇一摇功能.'); } devicemotion

手机摇一摇效果-html5

1.手机摇一摇效果实现 2.播放声音 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>摇一摇功能</title

html5 DeviceOrientation来实现手机网站上的摇一摇功能

原文地址:http://www.cootm.com/?p=706 从网上转载看到的,感觉不错,就转过来了,特此感谢 cnblogs 的 幸福2胖纸的码农生活,直接转载了,不要介意!呵呵 以下是转载内容. ——————————————————— 介绍之前做两个声明: 1.以下代码可以直接运行,当然你别忘了引用jQuery才行,我可提醒了,别到时候跑不起来骂我就成: 2.下面的实现思想参照了网上的一些文章,自己做了以下整理,对代码加入了一些注释说明,本人并非原创. 1 <html lang="

HTML5 手机摇一摇实现

目录结构 引入jQuery:jquery-1.11.1.min.js html代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <t

html5 实现手机摇一摇功能(C)

<!doctype html> <html> <head> <meta charset="UTF-8"> <title>简易模拟微信摇一摇</title> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-