基于html5 DeviceOrientation 实现微信摇一摇功能


Posted in HTML / CSS onSeptember 25, 2015

在HTML5中,DeviceOrientation特性所提供的DeviceMotion事件封装了设备的运动传感器时间,通过改时间可以获取设备的运动状态、加速度等数据(另还有deviceOrientation事件提供了设备角度、朝向等信息)。

而通过DeviceMotion对设备运动状态的判断,则可以帮助我们在网页上就实现“摇一摇”的交互效果。

运动事件监听

复制代码
代码如下:

if (window.DeviceMotionEvent) {
window.addEventListener('devicemotion', deviceMotionHandler, false);
} else {
alert('你的手机太差了,买个新的吧。');
}

获取加速度信息

“摇一摇”的动作既“一定时间内设备了一定距离”,因此通过监听上一步获取到的x, y, z 值在一定时间范围内的变化率,即可进行设备是否有进行晃动的判断。而为了防止正常移动的误判,需要给该变化率设置一个合适的临界值。

复制代码
代码如下:

function deviceMotionHandler(eventData) {
var acceleration = eventData.accelerationIncludingGravity;
var curTime = new Date().getTime();
if ((curTime - last_update) > 100) {
var diffTime = curTime - last_update;
last_update = curTime;
x = acceleration.x;
y = acceleration.y;
z = acceleration.z;
var speed = Math.abs(x + y + z - last_x - last_y - last_z) / diffTime * 10000;
var status = document.getElementById("status");
if (speed > SHAKE_THRESHOLD) {
doResult();
}
last_x = x;
last_y = y;
last_z = z;
}
}

效果如图所示:

基于html5 DeviceOrientation 实现微信摇一摇功能

HTML / CSS 相关文章推荐
超酷炫 CSS3垂直手风琴菜单
Jun 28 HTML / CSS
IE下实现类似CSS3 text-shadow文字阴影的几种方法
May 11 HTML / CSS
css3实现的下拉菜单效果示例
Jan 22 HTML / CSS
使用css3匹配手机屏幕横竖状态
Jan 27 HTML / CSS
浅析几个CSS3常用功能的写法
Jun 05 HTML / CSS
CSS3中设置3D变形的transform-style属性详解
May 23 HTML / CSS
CSS3 transition 实现通知消息轮播条
Oct 14 HTML / CSS
html5简单示例_动力节点Java学院整理
Jul 07 HTML / CSS
如何让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度
Aug 01 HTML / CSS
使用canvas实现黑客帝国数字雨效果
Jan 02 HTML / CSS
HTML5 body设置全屏背景图片的示例代码
Dec 08 HTML / CSS
html网页引入svg图片的4种方式
Aug 05 HTML / CSS
简单介绍HTML5中audio标签的使用
Sep 24 #HTML / CSS
利用HTML5实现使用按钮控制背景音乐开关
Sep 21 #HTML / CSS
深入解析HTML5的IndexedDB索引数据库
Sep 14 #HTML / CSS
使用HTML5的表单验证的简单示例
Sep 09 #HTML / CSS
详解HTML5中的manifest缓存使用
Sep 09 #HTML / CSS
使用HTML5的Canvas绘制曲线的简单方法
Sep 08 #HTML / CSS
详解HTML5中ol标签的用法
Sep 08 #HTML / CSS
You might like
PHP云打印类完整示例
2016/10/15 PHP
关于php unset对json_encode的影响详解
2018/11/14 PHP
Jquery 实现Tab效果 思路是js思路
2010/03/02 Javascript
让网页跳转到指定位置的jquery代码非书签
2013/09/06 Javascript
JQuery 的跨域方法推荐_可跨任何网站
2016/05/18 Javascript
JavaScript中清空数组的方法总结
2016/12/02 Javascript
详解npm 配置项registry修改为淘宝镜像
2018/09/07 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
2019/01/18 jQuery
探索node之事件循环的实现
2020/10/30 Javascript
javascript实现点击小图显示大图
2020/11/29 Javascript
[01:02:07]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python控制多进程与多线程并发数总结
2016/10/26 Python
python3爬虫之设计签名小程序
2018/06/19 Python
深入理解Python中的 __new__ 和 __init__及区别介绍
2018/09/17 Python
Python3 单行多行万能正则匹配方法
2019/01/07 Python
Python获取时间范围内日期列表和周列表的函数
2019/08/05 Python
详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
2020/04/01 Python
Django 构建模板form表单的两种方法
2020/06/14 Python
pytorch 查看cuda 版本方式
2020/06/23 Python
Python把图片转化为pdf代码实例
2020/07/28 Python
Python+kivy BoxLayout布局示例代码详解
2020/12/28 Python
HTML5+CSS设置浮动却没有动反而在中间且错行的问题
2020/05/26 HTML / CSS
jurlique茱莉蔻英国官网:澳洲天然护肤品
2018/08/03 全球购物
德国50岁以上交友网站:Lebensfreunde
2020/03/18 全球购物
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2014/07/21 面试题
家具厂厂长岗位职责
2014/01/01 职场文书
获奖的大学生创业计划书
2014/01/05 职场文书
工程师岗位职责规定
2014/02/26 职场文书
航空学院求职信
2014/06/11 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
假释思想汇报范文
2014/10/11 职场文书
湖南省党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
2015年消费者权益日活动总结
2015/02/09 职场文书
党员反邪教心得体会
2016/01/15 职场文书
生鲜超市—未来中国最具有潜力零售业态
2019/08/02 职场文书
重温经典:乔布斯在斯坦福大学的毕业演讲(双语)
2019/08/26 职场文书