基于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+Sprite实现僵尸行走动画特效源码
Jan 27 HTML / CSS
css和css3弹性盒模型实现元素宽度(高度)自适应
May 15 HTML / CSS
CSS3动画特效在活动页中的应用
Jan 21 HTML / CSS
html5中为audio标签增加停止按钮动作实现方法
Jan 04 HTML / CSS
Html5实现iPhone开机界面示例代码
Jun 30 HTML / CSS
HTML5+CSS3模仿优酷视频截图功能示例
Jan 05 HTML / CSS
HTML5实现签到 功能
Oct 09 HTML / CSS
详解canvas.toDataURL()报错的解决方案全都在这了
Mar 31 HTML / CSS
Html5基于canvas实现电子签名并生成PDF文档
Dec 07 HTML / CSS
CSS3实现的3D隧道效果
Apr 27 HTML / CSS
CSS中Single Div 绘图技巧的实现
Jun 18 HTML / CSS
浅谈css清除浮动(clearfix和clear)的用法
May 21 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 404错误页面实现代码
2009/06/22 PHP
php中去除所有js,html,css代码
2010/10/12 PHP
php将时间差转换为字符串提示
2011/09/07 PHP
在windows服务器开启php的gd库phpinfo中未发现
2013/01/13 PHP
thinkphp实现图片上传功能分享
2014/03/04 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
2016/09/21 PHP
PHP asXML()函数讲解
2019/02/03 PHP
jQuery 一个图片切换的插件
2011/10/09 Javascript
使用Javascript接收get传递的值的代码
2011/11/30 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
jQuery操作Select选择的Text和Value(获取/设置/添加/删除)
2013/03/06 Javascript
javascript两种function的定义介绍及区别说明
2013/05/02 Javascript
checkbox勾选判断代码分析
2014/06/11 Javascript
jQuery中wrapInner()方法用法实例
2015/01/16 Javascript
JavaScript实现定时隐藏与显示图片的方法
2015/08/06 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
2016/05/03 Javascript
jQuery代码实现图片墙自动+手动淡入淡出切换效果
2016/05/09 Javascript
AngularJS上拉加载问题解决方法
2016/05/23 Javascript
解决淘宝cnpm 安装后cnpm不是内部或外部命令的问题
2018/05/17 Javascript
vue用递归组件写树形控件的实例代码
2018/07/19 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
2018/08/29 Javascript
element el-input directive数字进行控制
2018/10/11 Javascript
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
2019/05/14 Javascript
[01:12]DOTA2 2015年秋季互动指南
2015/11/10 DOTA
Python语言描述最大连续子序列和
2017/12/05 Python
Django 项目通过加载不同env文件来区分不同环境
2020/02/17 Python
python 最简单的实现适配器设计模式的示例
2020/06/30 Python
python字典与json转换的方法总结
2020/12/28 Python
Python爬虫+Tkinter制作一个翻译软件的示例
2021/02/20 Python
css3使网页、图片变成灰色兼容大多数浏览器
2014/07/02 HTML / CSS
五一劳动节演讲稿
2014/09/12 职场文书
向国旗敬礼活动总结范文2014
2014/09/27 职场文书
优秀少先队辅导员事迹材料
2014/12/24 职场文书
高一化学教学反思
2016/02/22 职场文书
2016年教代会开幕词
2016/03/04 职场文书
你离财务总监还有多远?速览CFO的岗位职责
2019/11/18 职场文书