亲 测 有 效

源 码

需要的素材:声音文件

<!DOCTYPE html>
<html><head><meta charset="utf-8"><meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /><title></title></head><body><div id="yaoyiyaono" style="font-size:20px;margin:10px;line-height:35px;display:none;">你好,如果您看到了我,说明您现在还不能摇,不是说您没有资格用我,而是:</br>1、如果您使用PC机的浏览器,那可就不对了,我只能在手机浏览器操作;</br>2、如果您是Android手机,那不好意思告诉你,android自带的浏览器抛弃了我,您可以用UCWeb、chrome等第三方浏览器;</br>3、如果您都不属于以上两种情况,那我只有告诉您:您可以换手机啦!!!</br></div><div id="yaoyiyaoyes" style="font-size:20px;margin:10px;line-height:50px;display:none;">摇一摇,有大奖等着你哟!</div><audio id="shakingAudio" src="./img/shake.mp3"></audio></body><script src="js/jquery.min.js" type="text/javascript" charset="utf-8"></script><script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script><script type="text/javascript">         $(document).ready(function(){init();});// DeviceOrientation将底层的方向传感器和运动传感器进行了高级封装,提供了DOM事件的支持。// 这个特性包括两个事件:// 1、deviceOrientation:封装了方向传感器数据的事件,可以获取手机静止状态下的方向数据(手机所处的角度、方位和朝向等)。// 2、deviceMotion:封装了运动传感器的事件,可以获取手机运动状态下的运动加速度等数据。// 使用这两个事件,可以很能够实现重力感应、指南针等有趣的功能。// 现在在很多Native应用中有一个非常常见而时尚的功能 —— 摇一摇,摇一摇找人、摇一摇看新闻、摇一摇找金币。。。// 也许在android或者ios的客户端上对这个功能你已经很了解了,但是现在,我将告诉你如何在手机网页上实现摇一摇的功能。// OK,那我们现在就开始吧,嘿嘿~// 先来让我们了解一下设备运动事件 —— DeviceMotionEvent:返回设备关于加速度和旋转的相关信息,其中加速度的数据包含以下三个方向:// x:横向贯穿手机屏幕;// y:纵向贯穿手机屏幕;// z:垂直手机屏幕。// 鉴于有些设备没有排除重力的影响,所以该事件会返回两个属性:// 1、accelerationIncludingGravity(含重力的加速度)// 2、acceleration(排除重力影响的加速度)// 作为码农,上代码才是最直接的,come on,代码走起!// 首先在页面上要监听运动传感事件 function init(){if (window.DeviceMotionEvent) {// 移动浏览器支持运动传感事件window.addEventListener('devicemotion', deviceMotionHandler, false);$("#yaoyiyaoyes").show();} else{// 移动浏览器不支持运动传感事件$("#yaoyiyaono").show();} }// 那么,我们如何计算用户是否是在摇动手机呢?可以从以下几点进行考虑:// 1、其实用户在摇动手机的时候始终都是以一个方向为主进行摇动的;// 2、用户在摇动手机的时候在x、y、z三个方向都会有相应的想速度的变化;// 3、不能把用户正常的手机运动行为当做摇一摇(手机放在兜里,走路的时候也会有加速度的变化)。// 从以上三点考虑,针对三个方向上的加速度进行计算,间隔测量他们,考察他们在固定时间段里的变化率,而且需要确定一个阀值来触发摇一摇之后的操作。// 首先,定义一个摇动的阀值var SHAKE_THRESHOLD = 3000;// 定义一个变量保存上次更新的时间var last_update = 0;// 紧接着定义x、y、z记录三个轴的数据以及上一次出发的时间var x;var y;var z;var last_x;var last_y;var last_z;// 为了增加这个例子的一点无聊趣味性,增加一个计数器var count = 0;// 用来判断是否中奖,如已中奖则不能再摇var isOk = 0;function deviceMotionHandler(eventData) {// 获取含重力的加速度var acceleration = eventData.accelerationIncludingGravity; // 获取当前时间var curTime = new Date().getTime(); var diffTime = curTime -last_update;// 固定时间段if (diffTime > 100) {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; if (speed > SHAKE_THRESHOLD) { if(isOk==1){return;}//在此处可以实现摇一摇之后所要进行的数据逻辑操作count++;//处理iphone不能自动播放  autoPlayAudio();if(count == 2){$("#yaoyiyaoyes").html("恭喜你中奖了");isOk = 1;autoPlayAudio.pause();return;}}last_x = x; last_y = y; last_z = z; } } function autoPlayAudio() {wx.config({debug: false,appId: '',timestamp: 1,nonceStr: '',signature: '',jsApiList: []});wx.ready(function() {var globalAudio=document.getElementById("shakingAudio");globalAudio.play();});};</script>
</html>

iOS 为了节省用户流量,对于 audio 和 video标签的 preload 和 autopaly 标签 会自动拦截,除非用户手动点击 交互才会执行 。但是客户要求,加载的时候必须有背景音乐,怎么办,这就要借助微信开发者文档了。

第一步:首先加载一个微信JS-SDK

<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>

第2步:写一些配置

<script>function autoPlayAudio() {wx.config({// 配置信息, 即使不正确也能使用 wx.readydebug: false,appId: '',timestamp: 1,nonceStr: '',signature: '',jsApiList: []});wx.ready(function() {var globalAudio=document.getElementById("audio标签id");globalAudio.play();});};// 解决ios音乐不自动播放的问题autoPlayAudio();
</script>

移动端手机 摇一摇加声音相关推荐

  1. 传感器的使用,高仿微信摇一摇,动画加声音

    很多时候我们的应用需要使用传感器,使手机应用更加方便和可玩性更高, Google为我们提供了十一种传感器 #define SENSOR_TYPE_ACCELEROMETER 1 //加速度#defin ...

  2. 用HTML5实现手机摇一摇的功能并配上声音

    一.用HTML5实现手机摇一摇的功能并配上声音 HTML5的一个重要特性:DeviceOrientation,他将底层的方向传感器和运动传感器进行了高级封装,提供DOM事件支持. DeviceOrie ...

  3. 移动端关于手机摇一摇(IOS13+一些问题)

    一说到移动端H5的摇一摇,经过查阅资料很容易就找到shake.js这个封装好的api,具体的使用方法参考这个网址: https://www.npmjs.com/package/shake.js 但是有 ...

  4. Html5手机微信摇一摇

    <?php /*** Created by JetBrains PhpStorm.* User: 张华* Date: 16-3-4* Time: 上午11:29* To change this ...

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

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

  6. 摇一摇 声音 html5,HTML5摇一摇以及音频播放问题优化总结

    前言感想:不放过任何一个WARNING.ERROR或者不够好的体验点,持续不断优化,精益求精,我们就能够得到提高. 1. 摇一摇不够灵敏.摇动很多次没有响应的问题. 原来摇一摇代码是从网络Copy的, ...

  7. HTML5+PHP+jQuery手机摇一摇换衣

    在上一篇文章中,我们了使用HTML5可以侦听到手机晃动从而实现摇一摇效果.手机摇一摇可以应用到很多场景中,如摇一摇换抽奖,摇一摇搜歌等.本文我将给大家介绍如何使用HTML5+PHP+jQuery实现手 ...

  8. 手机摇一摇功能音量大小跟系统音量一致

    源代码免费下载 布局文文件:main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLa ...

  9. 摇一摇加好友功能实现

    摇一摇加好友功能 游戏中的好友系统通常会就有面对面添加好友的功能, 功能具体内容就是输入相同数字串进行搜索,就能搜索到一定时间内输入相同数字串的玩家.从理解上看功能描述较为简单,但具体的实现过程还是有 ...

  10. 微信摇一摇插件ios_iOS摇一摇手机,播放微信摇一摇音效

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

最新文章

  1. iOS UITableView的方法解析
  2. HashTab---Windows资源管理器的文件属性窗口中添加了一个叫做”文件校验”的标签...
  3. 易创课堂武汉站-NTES@百位创业者智慧众筹
  4. SpringBatch 写文件JSON(JsonFileItemWriter)用法(十二)
  5. 牛客网 短最优升级路径 【Dijkstra算法】+【路径记录】
  6. linux怎么看日期,linux 怎么用命令查看日期
  7. 软件测试之黑盒测试-等价类划分法
  8. Centos Cacti 0.8.8g
  9. 怎样查看Jdk是32位还是64位
  10. PMP试题 | 每日一练,快速提分
  11. 数学建模常用模型简介其他模型大全汇总
  12. Mac电脑如何设置屏幕保护程序的颜色?
  13. Mocking with (and without) Spring Boot
  14. Eclipse Error - Error notifying a preference...
  15. 疫情过后,这8个专业最有前景,快看看有你的专业吗?
  16. 【SeedLab】ARP Cache Poisoning Attack Lab
  17. 关于144hz屏幕观看网页视频时存在黑屏屏闪
  18. Linux使用alias设置命令别名
  19. spark数据挖掘 - 基于 Audioscrobbler 数据集音乐推荐实战
  20. Hadoop之HDFS面试题整理

热门文章

  1. 什么是SDK? {转载}
  2. java公倍数_java中如何计算最小公倍数
  3. 单片机c语言编写注解,单片机C语言程序注解
  4. 联想服务器装系统不能加载硬盘,联想电脑重装系统读不出硬盘怎么办
  5. The More You Know: Using Knowledge Graphs for Image Classification 论文总结
  6. Window和WindowManager--《Android开发艺术探索》阅读笔记——第八章
  7. DOS命令的英文全称
  8. 读书笔记:100岁前的健康指南
  9. 静态时序分析 Static Timing Analysis 教程
  10. NLP NLU NLG 简介