Html5+JS实现手机摇一摇功能


Posted in HTML / CSS onApril 24, 2015

HTML5一个重要特性就是DeviceOrientation,它将底层的方向传感器和运动传感器进行了高级封装,提供了DOM事件的支持。这个特性包括两种事件:

1、 deviceOrientation:封装了方向传感器数据的事件,可以获取手机静止状态下的方向数据,例如手机所处角度、方位、朝向等。

2、 deviceMotion:封装了运动传感器数据的事件,可以获取手机运动状态下的运动加速度等数据。 使用它我们能够很容易的实现重力感应、指南针等有趣的功能,在手机上将非常有用。例如Opera H5体验版里的重力感应球示例就是通过监听DeviceOrientation API的deviceOrientation事件来实现的。 其实它还能帮助我们在网页上实现一个手机应用里非常常见而时尚的功能:手机摇一摇。

DeviceMotionEvent(设备运动事件)返回设备有关于加速度和旋转的相关信息。加速度的数据将包含三个轴:x,y和z(示意如下图所示,x轴横向贯穿手机屏幕或者笔记本键盘,y轴纵向贯穿手机屏幕或笔记本键盘,z轴垂直于手机屏幕或笔记本键盘)。因为有些设备可能没有硬件来排除重力的影响,该事件会返回两个属性,accelerationIncludingGravity(含重力的加速度)和acceleration(加速度),后者排除了重力的影响。

1. [代码]监听运动传感事件
2. [代码]获取含重力的加速度
3. [代码]核心方法实现代码

HTML5一个重要特性就是DeviceOrientation,它将底层的方向传感器和运动传感器进行了高级封装,提供了DOM事件的支持。这个特性包括两种事件:

1、 deviceOrientation:封装了方向传感器数据的事件,可以获取手机静止状态下的方向数据,例如手机所处角度、方位、朝向等。

2、 deviceMotion:封装了运动传感器数据的事件,可以获取手机运动状态下的运动加速度等数据。
使用它我们能够很容易的实现重力感应、指南针等有趣的功能,在手机上将非常有用。例如Opera H5体验版里的重力感应球示例就是通过监听DeviceOrientation
API的deviceOrientation事件来实现的。

其实它还能帮助我们在网页上实现一个手机应用里非常常见而时尚的功能:手机摇一摇。

DeviceMotionEvent(设备运动事件)返回设备有关于加速度和旋转的相关信息。加速度的数据将包含三个轴:x,y和z(示意如下图所示,x轴横向贯穿手机屏幕或者笔记本键盘,y轴纵向贯穿手机屏幕或笔记本键盘,z轴垂直于手机屏幕或笔记本键盘)。因为有些设备可能没有硬件来排除重力的影响,该事件会返回两个属性,accelerationIncludingGravity(含重力的加速度)和acceleration(加速度),后者排除了重力的影响。

1. [代码]监听运动传感事件

复制代码
代码如下:

if (window.DeviceMotionEvent) {
window.addEventListener(‘devicemotion’,deviceMotionHandler, false);
}

2. [代码]获取含重力的加速度
复制代码
代码如下:

function deviceMotionHandler(eventData) {
var acceleration =eventData.accelerationIncludingGravity;
}

3. [代码]核心方法实现代码
复制代码
代码如下:

var SHAKE_THRESHOLD = xxx;
var last_update = 0;
var x, y, z, last_x, last_y, last_z;</p> <p>function deviceMotionHandler(eventData) {
var acceleration =eventData.accelerationIncludingGravity;</p> <p>var curTime = newDate().getTime();</p> <p>if ((curTime – lastUpdate)> 100) {</p> <p>var diffTime = curTime -last_update;
last_update = curTime;</p> <p>x = acceleration.x;
y = acceleration.y;
z = acceleration.z;</p> <p>var speed = Math.abs(x +y + z – last_x – last_y – last_z) / diffTime * 10000;</p> <p>if (speed > SHAKE_THRESHOLD) {
alert(“shaked!”);
}
last_x = x;
last_y = y;
last_z = z;
}
}
HTML / CSS 相关文章推荐
全面解析CSS Media媒体查询使用操作(推荐)
Aug 15 HTML / CSS
CSS3 制作绽放的莲花采用效果叠加实现
Jan 31 HTML / CSS
CSS3中background-clip和background-origin的区别示例介绍
Mar 10 HTML / CSS
CSS3 二级导航菜单的制作的示例
Apr 02 HTML / CSS
CSS3中animation实现流光按钮效果
Dec 21 HTML / CSS
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
Dec 22 HTML / CSS
HTML5 Canvas 起步(2) - 路径
May 12 HTML / CSS
浅谈html5增强的页面元素
Jun 14 HTML / CSS
关于HTML5语义标签的实践(blog页面)
Jul 12 HTML / CSS
使用phonegap进行本地存储的实现方法
Mar 31 HTML / CSS
html+css 实现简易导航栏功能
Apr 07 HTML / CSS
CSS实现两列布局的N种方法
Aug 02 HTML / CSS
HTML5 Canvas的事件处理介绍
Apr 24 #HTML / CSS
HTML5 audio标签使用js进行播放控制实例
Apr 24 #HTML / CSS
HTML5全屏(Fullscreen)API详细介绍
Apr 24 #HTML / CSS
HTML5 video播放器全屏(fullScreen)方法实例
Apr 24 #HTML / CSS
HTML5 video标签(播放器)学习笔记(二):播放控制
Apr 24 #HTML / CSS
HTML5 video标签(播放器)学习笔记(一):使用入门
Apr 24 #HTML / CSS
HTML5 Video标签的属性、方法和事件汇总介绍
Apr 24 #HTML / CSS
You might like
php die()与exit()的区别实例详解
2016/12/03 PHP
使用JS进行目录上传(相当于批量上传)
2010/12/05 Javascript
从盛大通行证上摘下来的身份证验证js代码
2011/01/11 Javascript
JS图片自动轮换效果实现思路附截图
2014/04/30 Javascript
JavaScript中用于生成随机数的Math.random()方法
2015/06/15 Javascript
javascript实现动态表头及表列的展现方法
2015/07/14 Javascript
AngularJS入门教程之AngularJS 模板
2016/08/18 Javascript
JQuery实现动态操作表格
2017/01/11 Javascript
easyui 中的datagrid跨页勾选问题的实现方法
2017/01/18 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
JavaScript中双向数据绑定详解
2017/05/03 Javascript
react-redux中connect()方法详细解析
2017/05/27 Javascript
JavaScript之underscore_动力节点Java学院整理
2017/07/03 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
ZK中使用JS读取客户端txt文件内容问题
2019/11/07 Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
2020/09/21 Javascript
vue项目配置同一局域网可使用ip访问的操作
2020/10/23 Javascript
JavaScript实现网页下拉菜单效果
2020/11/20 Javascript
Django框架下在视图中使用模版的方法
2015/07/16 Python
基于python中staticmethod和classmethod的区别(详解)
2017/10/24 Python
Python2与python3中 for 循环语句基础与实例分析
2017/11/20 Python
python判断一个对象是否可迭代的例子
2019/07/22 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
python调用私有属性的方法总结
2020/07/24 Python
详解pycharm配置python解释器的问题
2020/10/15 Python
html5录音功能实战示例
2019/03/25 HTML / CSS
amazeui 验证按钮扩展的实现
2020/08/21 HTML / CSS
Nike澳大利亚官网:Nike.com (AU)
2019/06/03 全球购物
如何减少垃圾回收让内存更加有效使用
2013/10/18 面试题
《狐假虎威》教学反思
2014/02/07 职场文书
办理信用卡收入证明范例
2014/09/13 职场文书
超市收银员岗位职责
2015/04/07 职场文书
行政处罚听证告知书
2015/07/01 职场文书
提档介绍信范文
2015/10/22 职场文书
2016大学生形势与政策心得体会
2016/01/12 职场文书
CSS变量实现主题切换的方法
2021/06/23 HTML / CSS