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

所属分类: 网页制作 / html5 阅读数: 2058
收藏 0 赞 0 分享

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;
}
}

更多精彩内容其他人还在看

HTML5 Convas APIs方法详解

这篇文章主要介绍了HTML5 Convas APIs方法详解,本文罗列了Convas APIs中的大部份方法,给出这些方法的中文注释,需要的朋友可以参考下
收藏 0 赞 0 分享

HTML5 Canvas中绘制椭圆的4种方法

这篇文章主要介绍了HTML5 Canvas中绘制椭圆的4种方法,本文讲解了参数方程法、均匀压缩法、三次贝塞尔曲线法、光栅法等4种方法,需要的朋友可以参考下
收藏 0 赞 0 分享

HTML5 Video标签的属性、方法和事件汇总介绍

这篇文章主要介绍了HTML5 Video标签的属性、方法和事件汇总介绍,本文讲解了标签的属性、获取video对象、Media方法和属性、网络状态 、准备状态 、回放状态、相关事件行装内容,需要的朋友可以参考下
收藏 0 赞 0 分享

HTML5 video标签(播放器)学习笔记(一):使用入门

这篇文章主要介绍了HTML5 video标签(播放器)学习笔记(一):使用入门,本文讲解了使用标签、比如播放视频的路径、是否显示控制条、让视频自动播放或自动加载、让播放器规范一点等内容,需要的朋友可以参考下
收藏 0 赞 0 分享

HTML5 video标签(播放器)学习笔记(二):播放控制

这篇文章主要介绍了HTML5 video标签(播放器)学习笔记(二):播放控制,本文讲解了获取影片总时长、播放、暂停、获取影片的播放时间和设置播放点、音量的获取和设置等内容,需要的朋友可以参考下
收藏 0 赞 0 分享

HTML5 video播放器全屏(fullScreen)方法实例

这篇文章主要介绍了HTML5 video播放器全屏(fullScreen)方法实例,本文直接给出一个完整代码实例,需要的朋友可以参考下
收藏 0 赞 0 分享

HTML5全屏(Fullscreen)API详细介绍

这篇文章主要介绍了HTML5全屏(Fullscreen)API详细介绍,本文给出了启动全屏模式和退出全屏模式代码示例,同时讲解了Fullscreen 属性与事件,需要的朋友可以参考下
收藏 0 赞 0 分享

HTML5 audio标签使用js进行播放控制实例

这篇文章主要介绍了HTML5 audio标签使用js进行播放控制实例,本文直接给出代码实例,演示了获取播放时间、播放、暂停、静音等控制方法,需要的朋友可以参考下
收藏 0 赞 0 分享

HTML5 Canvas的事件处理介绍

这篇文章主要介绍了HTML5 Canvas的事件处理介绍,本文讲解了Canvas的限制、给Canvas元素绑定事件、isPointInPath方法、循环重绘和事件冒泡等内容,需要的朋友可以参考下
收藏 0 赞 0 分享

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

这篇文章主要介绍了Html5+JS实现手机摇一摇功能,本文使用HTML5的DeviceOrientation实现监听手机方向传感器数据,实现摇一摇功能雏形,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多