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

效果如图所示:

H5进阶篇--实现微信摇一摇功能相关推荐

  1. h5公众号调取微信扫一扫功能,处处都是坑~

    1.安装weixinsdk npm install weixin-js-sdk 2.引入 import wx from "weixin-js-sdk"; 3.点击扫一扫获取微信签名 ...

  2. JQ---h5页面上实现微信扫一扫功能

    JQ-h5页面上实现微信扫一扫功能 1.引用jq和微信配置相关文件 <script src="../js/jquery.js"></script> < ...

  3. 微信摇一摇效果HTML,JavaScript+H5实现微信摇一摇功能

    项目终于如约上线,但是在春节前又有一个新的活动要做,类似微信的摇一摇活动.也一直在做微信公众号的东西,但是要调用微信摇一摇的接口还是有些困难,因为只提供了摇一摇周边,附近的人以及一系列的红包页面,相对 ...

  4. php微信摇一摇,怎样使用JS+H5实现微信摇一摇

    这次给大家带来怎样使用JS+H5实现微信摇一摇,使用JS+H5实现微信摇一摇的注意事项有哪些,下面就是实战案例,一起来看一下. 项目终于如约上线,但是在春节前又有一个新的活动要做,类似微信的摇一摇活动 ...

  5. H5页面实现摇一摇(微信+APP内嵌入使用)

    需求要求实现页面点击按钮摇一摇或者摇一摇手机触发抽奖. 页面会展示在微信小程序+APP中: 我在网络上找了一些方法,微信sdk中并未提供摇一摇的方法给H5页面调用,所以我采取以下方法: h5代码判断运 ...

  6. 微信——H5实现微信摇一摇

    项目终于如约上线,但是在春节前又有一个新的活动要做,类似微信的摇一摇活动.也一直在做微信公众号的东西,但是要调用微信摇一摇的接口还是有些困难,因为只提供了摇一摇周边,附近的人以及一系列的红包页面,相对 ...

  7. H5页面仿微信摇一摇及音频(安卓和苹果)

    H5页面仿微信摇一摇,动作以及音频的知识点和代码,在Android和IOS的兼容问题 测试环境:微信浏览器 一.摇一摇: 1.知识点 涉及事件DeviceMotionEvent,该事件返回设备有关于加 ...

  8. vue.js中H5使用微信摇一摇抽奖,判断摇一摇次数

    微信摇一摇抽奖: export default {data() {return {SHAKE_THRESHOLD:4000,//定义一个摇动的值last_update :0,//定义一个变量保存上次更 ...

  9. 微信摇一摇抽奖的H5制作思路

    第一步 微信授权登录,获取用户的微信信息,并写入数据库,相当于摇奖已经有了用户基础. 第二步 页面出现一个手机摇动的CSS3动画,提示用户摇奖,每天可以设定摇奖交数,超过次数提醒用户分享好友,好友拉新 ...

最新文章

  1. Udacity机器人软件工程师课程笔记(十)-ROS-Catkin-包(package)和gazebo
  2. yolo-mask的损失函数l包含三部分_【AI初识境】深度学习中常用的损失函数有哪些?...
  3. Altera FPGA配置过程
  4. 在MAC上给Anaconda的python安装tensorflow
  5. 当前主流、最新技术回眸(四)
  6. 算法竞赛入门经典(第二版) | 例题4-4 信息解码 (紫皮书牛啤!)(UVa213,Message Decoding)
  7. [Redux/Mobx] 为什么redux能做到局部渲染呢?
  8. 行健设计_行健要闻|“第四届‘天行健创新创业设计大赛”培训班成功举办
  9. 数据库系统实训——实验三——子查询与组合查询
  10. Thread.sleep() / Object.wait() / Condition.await() / LockSupport.park() / LockSupport.unpark() 区别
  11. 撤消git update-index --assume-unchanged file
  12. jsp开发教程之 仿MOP论坛 二(数据库,界面设计篇)
  13. 上岸 1 年后,重回大厂内卷
  14. mapper.xml中注释问题
  15. MongoDB管理工具studio 3t ,解决到期问题
  16. 马哥python课堂笔记_马哥教育PYTHON相关基础 笔记
  17. 好用的FTP下载工具 flashfxp工具
  18. clickhouse-client命令行参数及常用案例
  19. 云原生架构下的 API 网关实践: Kong (三)
  20. Latex设置指定区域的行距

热门文章

  1. Ext2.2系列(50篇)
  2. T-SQL查询进阶--深入理解子查询
  3. Windows核心编程 第七章 线程的调度、优先级和亲缘性(上)
  4. hdu1024 最大m子序列和
  5. 【数字信号处理】序列傅里叶变换 ( 基本序列的傅里叶变换 | 求 sinωn 的傅里叶变换 | 复变函数欧拉公式 )
  6. 【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 Category 分类进行方法注入的优缺点 )
  7. 【OkHttp】OkHttp 简介 ( OkHttp 框架特性 | Http 版本简介 )
  8. 【鸿蒙 HarmonyOS】创建 Java 语言 HarmonyOS 手机应用 ( 首次进入 DevEco Studio 配置环境 | 创建 Java 手机工程 | 鸿蒙工程代码目录简介 )
  9. 【计算机网络】数据链路层 : 轮询访问 介质访问控制 ( 轮询协议 | 令牌传递协议 )
  10. 【Android RTMP】Android Studio 集成 x264 开源库 ( Ubuntu 交叉编译 | Android Studio 导入函数库 )