h5学习之调用手机底层硬件----加速度传感器和震动
来源:互联网 发布:淘宝店详情图片尺寸 编辑:程序博客网 时间:2024/06/06 12:26
最近在开发微信公众平台时,有一个需求是通过摇一摇进行互动活动,刚开始以为要用微信内的摇一摇功能,但是微信根本没有提供接口(摇一摇是调用手机硬件,根本不能调用),所以只能换一种思路,微信可以跟我们的服务器端对接,所以只能通过一些前端的脚本语言去解决。幸运的是:H5 + 提供了对手机硬件资源访问的封装API,这样的话,实现摇一摇和震动就有了途径,不止这些,通过这些API的调用对系统其他功能也可以访问 ,今天就介绍两个功能。
一、加速器的调用
通过widow对象中DeviceMotionEvent 来判断 浏览器(手机)是否支持访问硬件资源,window.addEventListener('devicemotion', deviceMotionHandler, false);通过上一句代码来对该事件进行监听,第一个参数是事件类型,第二个参数是一个Handler 进行对事件的处理,通过var acceleration = eventData.accelerationIncludingGravity; 获得加速器对象,x = acceleration.x;y = acceleration.y; z = acceleration.z; 分别获取传感器三个分量的参数,这样就完成了对摇一摇参数的获取。
二、 手机震动的实现
振动事件 同样是封装在widow.navigation对象中,通过 var vibrateSupport = 'vibrate' in navigation 来检测浏览器是否支持调用手机振动事件。如果支持 为了兼容不通的浏览器 需要进行对vibrate 进行做不同的选择。navigator.vibrate = navigator || navigator.webkitVibrate || navigator.mozVibrate || navigator.msVibrate; 然后在需要的地方 调用navigator.vibrate(3000), 就可以实现手机震动的了(该处震动三秒),同时期支持数组 如 navigator.vibrate.([300,200,300,200,300]),300是表示震动的毫秒数,200表示两次震动的时间间隔。
同样对其他操作,通过对API的调用,实现也都十分简单,这样以来,我们完全可以通过H5来实现不通的功能,来实现跨平台了,关键代码如下
if (window.DeviceMotionEvent) {window.addEventListener('devicemotion', deviceMotionHandler, false);}var vibrateSupport = "vibrate" in navigatorif (vibrateSupport) { //兼容不同的浏览器navigator.vibrate = navigator.vibrate || navigator.webkitVibrate || navigator.mozVibrate || navigator.msVibrate;}
function deviceMotionHandler(eventData) {var acceleration = eventData.accelerationIncludingGravity;var currTime = new Date().getTime();var diffTime = currTime - last_update;console.info(diffTime);if (diffTime > 100) {last_update = currTime;x = acceleration.x;y = acceleration.y;z = acceleration.z;var speed = Math.abs(x + y + z - last_x - last_y - last_z) / diffTime * 30000;console.info(speed);if (speed > SHAKE_THRESHOLD) {//要一摇之后进行业务逻辑处理doResult();}last_x = x;last_y = y;last_z = z;}
- h5学习之调用手机底层硬件----加速度传感器和震动
- H5+系列(一)调用加速度传感器
- Android调用传感器和震动
- android手机加速度传感器
- Android手机加速度传感器和方向传感器的应用
- Android传感器学习之加速度传感器数据获取
- Unity3d之音效播放和调用手机震动
- Android传感器之加速度传感器
- iOS学习,加速度传感器
- 加速度传感器和角度传感器
- 传感器--光照和加速度传感器
- 【Android】安卓学习笔记之加速度传感器的用法
- 手机中的传感器:重力感应器、加速度传感器、陀螺仪、电子罗盘和光线距离感应器
- 手机中的传感器:重力感应器、加速度传感器、陀螺仪、电子罗盘和光线距离感应器
- android传感器学习之获取手机传感器
- android传感器学习之获取手机传感器
- 自学Android之加速度传感器
- Swift之加速度传感器编程
- The 3n + 1 problem(POJ--1207
- hdu 4135 容斥原理
- STL之 next_permutation函数{(全排列)按字典序!!!!!}
- 概率论与数理统计--参数估计
- Android HttpClient cookie的保存以及添加
- h5学习之调用手机底层硬件----加速度传感器和震动
- 第一天全天课
- web.xml配置详解
- android IntentService 简单介绍
- PHP中isset(变量)和直接判断变量的区别
- Java语言编码规范(Java Code Conventions)
- linux 删除文件里的标点符号
- iOS OC10_Block
- 有关复合的学习