今天收到了领导的通知,要APP和触屏完成摇一摇的功能,本来通过IOS调用原生还是蛮方便的,但想如果采用web前端的方式应该是实现不了的,马上就开始推脱了。可惜领导告知微信京东购物,不仅仅有摇一摇还有震动的功能,顿时就打脸了,下来后立即谷歌,查找代码写出demo,哈哈。

  通过查找资料发现window.DeviceMotionEvent该事件可以监听设备的运动事件,然后通过event.accelerationIncludingGravity可以获取配置的x,y,z的位移,通过位置的变化计算设备是否在快速变化加速度以达到监听设备是否在摇一摇的效果。然后就是navigator.vibrate(s)可以触屏手机的震动功能。代码如下

  

var speed = 25; //定义摇一摇加速度的临界值
var x = y = z = lastX = lastY = lastZ = 0; //初始化x,y,z上加速度的默认值
var isHaveShaked = false;//用于记录是否在动画执行中
function init() { //判断系统是否支持html5摇一摇的相关属性
if (window.DeviceMotionEvent) {
window.addEventListener('devicemotion', deviceMotionHandler, false);
} else {
alert('not support mobile event');
}
}
function deviceMotionHandler() {
/*获取x,y,z方向的即时加速度*/
var acceleration = event.accelerationIncludingGravity;
x = acceleration.x;
y = acceleration.y;
z = acceleration.z;
if (Math.abs(x - lastX) > speed || Math.abs(y - lastY) > speed
|| Math.abs(z - lastZ) > speed) {
//摇一摇实际场景就是加速度的瞬间暴增爆减
if(!isHaveShaked){
//手机震动1秒
if (navigator.vibrate) {
navigator.vibrate(1000);//震动秒数
}else if (navigator.webkitVibrate) {
navigator.webkitVibrate(1000);
}
            alert("shaked");
//模拟网络请求做想干的事
isHaveShaked = true;
setTimeout(function(){
isHaveShaked = false;
//.....
},2000);
}
}
/*保存历史加速度*/
lastX = x;
lastY = y;
lastZ = z;
}
$(function() {
init();
});

html实现摇一摇并震动的更多相关文章

  1. iOS摇一摇功能、震动功能、简单的摇动动画、生成二维码图片与发送短信等几个功能

    有一个开锁的功能,具体的需求就类似于微信的"摇一摇"功能:摇动手机,手机震动,手机上的锁的图片摇动一下,然后发送开锁指令.需求简单,但用到了许多方面的知识. 1.摇一摇 相对这是最 ...

  2. android 摇一摇+震动+声音效果

    文章链接:https://mp.weixin.qq.com/s/n6EXvfmpNPtWM1kEnGgwUA 摇一摇红包效果已经是老生常谈的了,利用手机的传感器识别摇一摇,同时过程中进行动画+震动+声 ...

  3. iOS几个功能:1.摇一摇;2.震动;3.简单的摇动动画;4.生成二维码图片;5.发送短信;6.播放网络音频等

    有一个开锁的功能,具体的需求就类似于微信的“摇一摇”功能:摇动手机,手机震动,手机上的锁的图片摇动一下,然后发送开锁指令.需求简单,但用到了许多方面的知识. 1.摇一摇 相对这是最简单的功能了. 在v ...

  4. H5实现摇一摇技术总结

    摇一摇遇到的问题 一.如何对摇晃效果进行反馈 刚开始的处理方式是,摇晃过程中不做任何处理,但后来反馈说这种效果不好,好像就没有摇动一样,如果声音也不响的话,就真的和什么都没发生一样. 后来想了想,加入 ...

  5. iOS摇一摇手机,播放微信摇一摇音效

    实现微信摇一摇播放音效,代码如下:- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event{    if (motio ...

  6. H5摇一摇遇到的问题

    一.如何对摇晃效果进行反馈 刚开始的处理方式是,摇晃过程中不做任何处理,但后来反馈说这种效果不好,好像就没有摇动一样,如果声音也不响的话,就真的和什么都没发生一样. 后来想了想,加入摇晃过程动画,就像 ...

  7. Android 摇一摇 之 传感器片

    要监视原始的传感器数据,你需要实现两个通过SensorEventListener接口暴露的回调方法:onAccuracyChanged()和onSensorChanged(). 传感器数据的速度值,这 ...

  8. android手电筒(摇一摇也可开启手电筒)

    package com.firefly.myflashlight; import android.app.Activity; import android.hardware.Camera; impor ...

  9. Android 摇一摇之双甩功能

    Android 摇一摇之双甩功能 最近做一个摇一摇的功能 网上相关代码很多 但是这次的需求有点奇葩 要求是摇两次才生效 看起来好像很简单 但真正要做遇到的问题还是很多 时间限制 机型灵敏性 摇动的方式 ...

随机推荐

  1. SimpleAdapter的用法

    学习listView的时候,按照例子设定item的布局为系统提供的simple_list_item_single_choice.xml@frameworks/base/core/res/res/lay ...

  2. Shell 编程基础 --语法高速入门

    简单的说shell就是一个包括若干行Shell或者Linux命令的文件.对于一次编写,多次使用的大量命令,就能够使用单独的文件保存下来,以便日后使用.通常shell脚本以.sh为后缀.第一行一定要指明 ...

  3. 鸟哥的Linux私房菜-----6、文件与文件夹管理

  4. eclipse 给jar包关联javadoc

    1.右键点击Referenced Libraries下的jar --> 选择 Build Path --> Configure Build Path. 2.选择jar的Javadoc lo ...

  5. 快捷标签和ajax、json返回数据

    <if 判断条件>标签</if><import>标签可以链接外部的样式表,和js<import file="js.util.Array" ...

  6. Selenium+C#自动化脚本开发学习

    1:Selenium中对浏览器的操作 首先生成一个Web对象 IWebDriver driver = new FirefoxDriver(); //打开指定的URL地址 driver.Navigate ...

  7. 体验DNN演示平台《A Neural Network Playground》(一)

    0 本次博客内容简介 本次博客标(一),是因为我自知有些地方还是不理解.本篇博客仅暂时记录第一次玩 A Neural Network Playground的体验,如果后面有了进一步体会,会更新新的内容 ...

  8. 【足迹C++primer】32、定制操作_1

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/cutter_point/article/details/32066151 定制操作 向算法传递函数 ...

  9. template.helper 检测浏览器 时间转换

    template.helper('changeTime',function getLocalTime(nS) { var b=nS.substr(6,13); var c=parseInt(b) va ...

  10. 保持linux下保持ssh不断线

    用ssh链接服务端,一段时间不操作或屏幕没输出(比如复制文件)的时候,会自动断开,有两种解决办法: 1.在客户端配置 #vi  /etc/ssh/ssh_config(注意不是/etc/ssh/ssh ...