`
mixer_a
  • 浏览: 357244 次
社区版块
存档分类
最新评论

用HTML5实现手机摇一摇的功能

 
阅读更多

在百度开发者大会上我介绍过HTML5另外一个重要特性就是DeviceOrientation,它将底层的方向传感器和运动传感器进行了高级封装,提供了DOM事件的支持。这个特性包括两种事件:

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

2、 deviceMotion:封装了运动传感器数据的事件,可以获取手机运动状态下的运动加速度等数据。

使用它我们能够很容易的实现重力感应、指南针等有趣的功能,在手机上将非常有用。例如Opera H5体验版里的重力感应球示例就是通过监听DeviceOrientationAPI的deviceOrientation事件来实现的。


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

我最开始见到这个功能其实是在PhotoShake里,后来包括微信在内的许许多多、大大小小的应用都加入了这个功能。


PhotoShake:照片摇一摇

如果你曾经做过Android或者iOS开发,对于这样的功能可能非常了解。但是下面,我们将在Web上首次实现这个功能。

让我们赶快开始吧!

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


对于DeviceOrientation,HTML5Rocks上有一篇详细的介绍文章《This End Up: Using Device Orientation》,很有参考价值。

我们先来监听运动传感事件。

然后获取含重力的加速度。

下面就涉及到我们如何计算用户摇晃手机的原理了。考虑的要点如下:

1、 用户大多时候都是以一个方向为主晃动手机来进行摇动;

2、 在晃动时三个方向的加速度数据必定都会变化;

3、 我们不能误判手机正常的运动行为,想一想,如果你的手机放在裤兜里,走路时它也会有加速度数据变化。

综上,我们应该针对三个方向的加速度进行计算,间隔测量它们,考察它们在固定时间段里的变化率,而且需要为它确定一个阈值来触发动作。

我们需要定义几个变量来记录历史x、y、z轴的数据以及上一次触发的时间。核心方法实现代码如下:

由此我们完成了手机摇一摇的功能,是不是非常简单?你可以用下面的链接查看演示(请在手机上用支持DeviceOrientation的浏览器打开,例如Opera HTML5体验版)。


转载请注明:来自蒋宇捷的博客

分享到:
评论

相关推荐

    html实现摇一摇简单的功能

    通过HTML实现手机摇一摇的简单功能,并通过上传服务器实现手机摇一摇功能

    HTML 5实现手机摇一摇的功能.docx

    实现HTML5手机摇一摇功能的关键在于分析DeviceMotion事件中的加速度数据。当用户摇动手机时,加速度值会在三个轴上快速变化。为了准确判断用户是否在摇动手机,开发者需要设定一定的阈值,并记录之前的数据以计算...

    手机摇一摇的功能

    经常我们玩微信都会用到查到附近的人,都是在app上实现手机摇一摇的功能。现在,我们将此技术搬移到手机web上,供大家学习,主要是用到HTML5的重要特性就是

    h5 + js 仿微信摇一摇

    1. **HTML5 API**:H5提供了多种API,如DeviceOrientation事件,可以检测设备的移动和倾斜,这对于实现摇一摇功能至关重要。我们需要监听设备的加速度和陀螺仪数据,来判断用户是否在摇动手机。 2. **JavaScript...

    HTML5微信摇一摇

    2. **Audio**:HTML5的Audio API可以播放、暂停和控制音频,为摇一摇功能增加声音效果,提升用户体验。 3. **WebSocket**:为了实现实时通信,HTML5的WebSocket协议可能被用于建立持久的双向连接,这样用户在摇动...

    html5实现的摇一摇

    在提供的"shake"文件中,可能包含了实现摇一摇功能的具体代码,包括HTML结构、CSS样式和JavaScript逻辑。JavaScript部分通常会包含上述步骤中的关键代码,例如添加事件监听器、解析设备运动数据以及执行摇一摇后的...

    HTML5手机微信摇一摇游戏代码.zip

    HTML5手机微信摇一摇游戏代码是一个利用HTML5技术实现的互动游戏,旨在模拟微信的摇一摇功能。这个游戏的核心是通过JavaScript库jQuery 1.11.1.min.js来处理用户交互和动画效果,使得在手机上玩时能够获得流畅的体验...

    HTML5带音乐手机摇一摇抽奖代码.zip

    在本案例中,“HTML5带音乐手机摇一摇抽奖代码”是一个利用HTML5特性构建的互动抽奖应用,尤其适用于移动端。这个应用通过模拟“摇一摇”动作来触发抽奖事件,并配合背景音乐,为用户带来更为生动有趣的体验。 首先...

    HTML5模拟微信摇一摇

    在模拟摇一摇功能时,我们需要监听设备的运动状态变化,通常通过`DeviceMotionEvent`事件来实现。当设备被摇动时,加速度值会发生显著变化,我们可以通过检测这些变化来判断用户是否在摇动设备。 2. **JavaScript...

    HTML5手机微信摇一摇游戏代码

    HTML5手机微信摇一摇游戏代码是利用现代Web技术,特别是HTML5的API,结合微信的JSSDK,实现的一款互动娱乐应用。这种游戏通常在移动端运行,通过手机的运动传感器(如加速度计和陀螺仪)检测用户的摇动动作,并将其...

    html5手机摇一摇

    HTML5手机摇一摇功能是现代移动Web应用中一种创新且有趣的交互方式,它利用了HTML5的新特性,使得在浏览器上实现类似智能手机原生应用的体验成为可能。这一技术通常应用于游戏、互动投票、抽奖活动等场景,为用户...

    HTML5实现的带音乐手机摇一摇抽奖特效源码.zip

    在本资源"HTML5实现的带音乐手机摇一摇抽奖特效源码.zip"中,我们可以看到一个利用HTML5特性构建的手机摇一摇抽奖功能,这个功能通常用于增加用户参与度和互动性,常见于各类活动和游戏。 首先,我们要理解摇一摇...

    javascript html5摇一摇功能的实现_.docx

    ### JavaScript HTML5 摇一摇功能实现详解 #### 一、引言 随着移动互联网技术的发展,HTML5因其跨平台特性和丰富的API支持而受到广泛关注。其中,“摇一摇”功能作为移动应用中的一项常见交互方式,不仅增强了用户...

    手机摇一摇活动JS+HTML

    "手机摇一摇活动JS+HTML"是一种基于Web技术实现的互动功能,通常用于移动设备上的线上活动或游戏。这个项目可能包含JavaScript代码和HTML页面结构,以模拟真实世界中的摇晃动作,如用户在手机上摇动设备,然后在屏幕...

    蓝色清新的html5专题页面手机摇一摇代码下载

    在本资源中,“蓝色清新的html5专题页面手机摇一摇代码下载”提供了一个创新的交互式设计,使用户可以通过手机的摇动功能来触发特定的页面事件或功能。 “摇一摇”功能是移动应用和网站中常见的互动元素,通常用于...

    html5手机摇一摇抽取幸运号码代码

    HTML5手机摇一摇功能是利用现代移动设备的陀螺仪和加速度传感器来实现的一种交互体验。这种技术使得用户可以通过手机的物理摇动来触发网页中的特定事件,例如抽奖、游戏等。在这个名为"html5手机摇一摇抽取幸运号码...

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

    为了实现手机摇一摇功能,我们需要利用HTML5中一个非常重要的特性——DeviceOrientation。DeviceOrientation事件属于高级封装,它能让我们通过监听方向传感器数据来实现一些与物理动作相关的交互功能。此事件可以...

    html5小游戏 大话摇骰子

    HTML5的媒体查询(Media Queries)可以帮助实现这一目标,确保在手机、平板电脑和桌面电脑上都能提供良好的用户体验。 总结来说,"大话摇骰子"是一个利用HTML5技术和JavaScript实现的在线小游戏。它通过Canvas绘制...

    HTML5手机摇一摇抽奖源代码.zip

    HTML5手机摇一摇抽奖源代码是一个利用现代Web技术实现的互动抽奖应用,它结合了设备运动事件(DeviceMotionEvent)和设备方向事件(DeviceOrientationEvent)来模拟真实世界中的摇晃动作。这个应用程序通常用于增强...

Global site tag (gtag.js) - Google Analytics